Concept
A couple of years ago, some friends and I were working on a side project designed to capture the feeling of games like Stardew Valley, but expand on the gameplay and exploration aspects.
Our initial concept was to include a large procedurally generated wilderness area that would be different for every playthrough. Items found in this area would also be randomized according to some rules, in order to reduce the advantage a player could gain by looking up information on a wiki.
For example: similar to Stardew, we wanted to feature a cooking system in the game. The effects of the dish created would differ depending on the properties of the ingredients the player includes, but the ingredients available are different for every playthrough. This means that some discovery and experimentation is required to cook meals that are optimal for the results the player wants.
Procedural Systems
For this project we were using the Unity Engine, which at the time has recently released an update to its built-in tile map system. I used these features to create a system for rendering connected tile textures
 |
| Terrain sprites by Max Alford |
 |
Connected tiles in-game
|
After this, based on a method from Jasper Flick's wonderful tutorials at
catlikecoding.com, I used Perlin Noise to generate a ground map, and additional noise layers to lay down trees and clutter items.
 |
| Underlying noise layer for terrain height |
 |
| Voroni noise used for placing clusters of trees |
 |
| Result of combining the layers |
I also began work on the randomized items that would be collected on these maps, specifically herbs and spices. I used word lists and a handful of grammar rules to create names, and assign to them an appropriate sprite and a set of stats, which were written to a JSON file.
 |
'Southern Golden Snakebloom'
|
 |
Examples of spice generator output
|
Looking Back
Unfortunately, the project fell to the wayside due to scheduling conflicts between my team members and I. Due to this, some of the planned features, such as large-scale terrain objects, additional clutter layers, and generated descriptions for items were never finished.
If I were to do this project over from scratch, I would plan out the terrain system in much more detail, using concept art and an analysis of the gameplay requirements of maps to inform the generation methods I use. I would also work with the rest of the team on gameplay and character control before diving too far into any procedural system. This way, the generated content can be properly tested, and the requirements better defined, before too much work is done on procedural systems that are discarded due to not meshing with the mechanics.