As part of a collaboration between Indiepocalypse and Kuš, me, my good friend Ash K, and the Latvian artist Lote Vilma created The Mushroom Season: a game about taking a casual stroll through the woods and collecting various mushrooms.
My responsibilities amount to some scripting, and the majority of the level design.
My thought process:
It was daunting to get started with designing the whole world at once, so I looked for inspiration in Breath of the Wild, my favourite open-world game!
The first task I gave myself was dividing the world into sub-areas. Exploration was the main appeal of the game, so the decisions relating to it must be made important. To put simply, we can't let the player feel like every path will take them to a similar place. Forests are for getting lost in, but that's not very fun.
Lote made the assets beforehand, so I sorted them in my head into loose categories: "These trees look kinda dry, but these look rather Autumny." I started speckling the four corners of the world with these different categories, and when I was done, I started placing the mushrooms.
The game ends after collecting a specific set of mushrooms and going to sleep. We wanted the player to see all the interesting bits of the world before they can finish the game, so I placed some kinds of mushrooms exclusively in specific areas.
Then it was time to add the interesting bits themselves! There wasn't much for me to work with in terms of mechanics, which frustrated me at first since that was the kind of design I was used to. I considered the player's objective (finding mushrooms) and thought how I could make the environment appeal to that objective: with environmental hints.
Guess where the mushroom is.
The tree surrounded by black bushes leads to another tree surrounded by black bushes leads to another tree surrounded by black bushes leads to a mushroom surrounded by black bushes.
I made sure that every two-three camera widths worth of space had some object or area of interest. I was worried it could make the world feel very artifical and segmented, but luckily playtests proved the opposite! From looking at the whole map at once I must've gotten whatever the opposite of tunnel vision is. The players only saw a tiny bit of the world at a time, and the world felt much bigger to them than it felt to me as a designer.
These kinds of contrasts of perspective are one of the most interesting things about game design to me.
Painting Bezier Paths
Godot comes with a premade Node for creating Bezier Paths for AI to follow. It allows you to design a smooth path, and it's as easy as using the Pen tool in Photoshop or Illustrator.
Very convenient in many cases! But I want to create actual visible paths to guide the player, and I want to be able to adjust them often as the layout of the world changes during the design process.
And unfortunately, the built-in Path node doesn't have a visual component! And the built-in Line node, which does have a visual component, doesn't support Bezier curves (at least as of writing this)! Argh!
The simple solution is:
Create a Scene with a Line2D as the root.
Add Path2D as its child.
Put the following script in the Line2D :
Now you can edit the Curve component of Path2D, and the Line2D will update to match it. One downside is if you apply a texture to the Line2D, there may be some visual anomalies.