Today I started my challenge to create a game in 7 days.
Today I started my challenge to create a game in 7 days.
First, I selected a theme — I went with "gathering". The theme was suggested by AI, but the idea is all mine.
The concept I came up with is about traveling through random dimensions and gathering resources to help a village grow and progress. Yeah, the idea is pretty basic — I know — but I like it. I want the game to feel a little like Terraria and Stardew Valley.
🎮 My Inspiration
What I love about Terraria is the freedom to explore and how every world feels different and mysterious. From Stardew Valley, I want to bring in that cozy atmosphere — the feeling that even grinding can be relaxing if done right. I hope to create something that blends both: a cozy game with surprises and exploration.
⚙️ What I Did Today
-
I created a simple system that generates random names for each location.
Player Logic
Crystal logic
Life bar like terraria
-
I started planning out how the dimension travel will work.
🧠 Today's Challenges
It took me longer than expected to figure out how to generate good random names. I didn’t want names to sound too similar or too weird. I might improve it later by adding name templates or lore-based prefixes.
Also, just organizing the basic structure of the project and figuring out what to do first took more time than I thought.
📅 Plans for Tomorrow
-
Add first types of resources that the player can gather.
-
Add basic enemies that appear in random dimensions.
-
Try to make simple combat and resource drops.

I also created a system that generates a random name for each location.
@export_category("Language-Based Name Generator")
@export var language_rules: Dictionary = {
"syllables": ["ar", "thor", "mor", "del", "fin", "gal", "len", "dor", "eth", "ion"],
"prefixes": ["Dark", "High", "Old", "Lost", "New", "Great", "Little"],
"suffixes": ["ville", "ham", "ford", "bury", "stead", "wick", "mouth"],
"patterns": [
{"template": "PREFIX-SYLLABLE", "weight": 0.3},
{"template": "SYLLABLE-SYLLABLE", "weight": 0.4},
{"template": "SYLLABLE-SUFFIX", "weight": 0.3}
]
}
func generate_location_name() -> String:
var pattern = select_pattern()
var name = ""
for token in pattern.split("-"):
match token:
"PREFIX":
name += language_rules["prefixes"][randi() % language_rules["prefixes"].size()]
"SUFFIX":
name += language_rules["suffixes"][randi() % language_rules["suffixes"].size()]
"SYLLABLE":
name += language_rules["syllables"][randi() % language_rules["syllables"].size()]
_:
name += token
# Делаем первую букву заглавной
if name.length() > 0:
name = name[0].to_upper() + name.substr(1)
return name
func select_pattern() -> String:
var total_weight = 0.0
for p in language_rules["patterns"]:
total_weight += p["weight"]
var random_value = randf() * total_weight
var cumulative_weight = 0.0
for p in language_rules["patterns"]:
cumulative_weight += p["weight"]
if random_value <= cumulative_weight:
return p["template"]
return language_rules["patterns"][0]["template"]