Biomes

Biomes is a world building game, where the player can place tiles from various biomes, and watch them merge together to create new ones.
Design
This was my very first complete school project, the assignment was to build a toy in teams. My 3 teammates and I were inspired by world building and semi procedural generation. The Original plan was to give the player a handful of tiles type to place, and have them interact with each other on their own.
The main idea is the following, multiple tiles of the same type placed next to each other form a biome, two biomes that share a border will try to eat away at the other, with a power balance determined by their sizes. And finally everytime a biome gains on another, a new tile type as a chance of being formed and will itself try to expand along the border.
During the early talk the main elements were already there, but we had an issue to deal with to estimate the time cost of such a production. How many biomes should the player be able to place? Can any biomes combinations produce a new one? Should they be entirely procedural or handmade?
The answer to these question would determine the scope of the whole project, and considering it was our first time working with unity, and together, we opted for something we could manage.
There would be two types of biomes:
- Primary biomes, which the player can place.
- Secondary biomes, which can only be generated by the biomes movements
The whole project was a surprisingly smooth ride during which we often add more time than expected to invest in polishing our experience, and with feedback from our playtest, drafting a feature : Prop hunting.
Every biome spawn a tile with a set of 0-7 props, one per edge and one on the center of the tile. But some biomes had a special big prop, taking the whole tile to itself. We wanted to add a collection feature by finding these props, and managing to encircle them entirely of tile of their biome. Unfortunately the deadline hit before it could see the day.

Development
Being a small team, and for personal reason down to 3 members, we decided to take on the tasks we were the most comfortable with. For me it was programming and sound design. The design being drafter quickly I could make an early prototype of the concept itself with simple coloured hexagons.
Despite being formed in a grid, this game does not really run on one. Each tile spawn points around itself (here visualised in thin transparent tiles). Each of those check it can spawn in the first place (if there is a tile or not) with collision, so when a tile is placed or destroyed it will try and spawn neighbouring spawn points, as well as updating it's neighbour if any are found.
Tile hold a reference to a dynamically made object representing the biome, which is responsible for all it's tiles, know about it's borders and the neighbouring biomes. So in the end a single manager perform checks from a handful entities which reduce the workload tremendously.
However I'm aware this method isn't perfect. It restrain the player to placing tile already next to another (which from our design we judged fine). But if I had to redo it today, a simple but proper grid wouldn't be hard to implement to communicate between tiles with coordinate only. However the gist of biome management would stay the same, with tiles interacting with tiles and belonging in a biome, and biomes interacting with neighbour biomes.
Fmod Integration
Our sound design was very quick to make, as most of the game is actually UI. This means I had some time to think about dynamic sound and music.
Since our camera allowed to zoom in and out to see the landscape better, I though "let's make two different soundscapes, and mix between them with our zoom".
Close in onto nature
When the camera is close to the ground, and looking forward at the horizon, you should hear the sound of the nature below you. To do this, a single FMod event plays with parameters (slider between 0 - 1) for different soundscape like wind, water, sand, birds, rumble etc..
Each biome have data describing what value these parameters should be to make a coherent soudscape. Tiles in view of the camera in a chosen area will then be sampled and parameters value averaged to be applied to the instance.
The forest, as an example, would have a soft wind (.25), lot of birds (1) and nothing else.
Aerial ambient view
The zoomed out view is the one player stays in most of the time as it makes getting a good view of the map easier. This is where the music lives, and to give it a twist, the music is composed of tiles as well.
I composed the music to be made of 6 segment, and about 8 transitions. Using a counter and some programming instrument, I count how many segment have been played to change the odd of the next one, and once a certain threshold have been reached the music will make it's way to an especially long and calm segment.
The goal was to alternate between a soft yet present music that doesn't repeat too much no matter how many loop, and break it with spaced out ambient music to cool the ears down.







