top of page

Riverflow | 2022 (4 months)

Game Designer |  Programmer 

Unity | GitKraken | 5 people

Theme

Cozy game | Management | Puzzle | Nature

Pitch

Riverflow is a calm and slow-paced puzzle and management game where the player must irrigate small sprouts to make their forest grow.

​

The terrain expands as days pass, and the player must manage a space that grows progressively. As their forest grows, the player will discovers new types of trees and tools to keep them healthy and irrigated.

01.

Context

Riverflow was the main project I worked on during my 4th year at Rubika Supinfogame. It was a 4 months project with a team of 5 people. The idea was to push the game to release it on steam. We are still working on the project, and hope to release it soon! 

02.

My work

This project was a bit special for me, because our school asked every designers of our class to propose a concept, and the concepts would be selected by a jury. I originaly proposed the concept, so I was the "vision owner " of it. I was mainly in charge to keep coherence between all the mechanics we developed. So I worked a lot on systemic design, but also did programming for our procedural generation. 

Procedural generation

One of my main tasks was to design and program the sprouts procedural generation of the game. The idea was the following : levels in Riverflow are endless, every X seconds, a new sprout will appear on the ground, the player has to irrigate that new sprout to prevent it from dying. 

We needed to design and create an algorithm for the sprout generation. We had various needs for this algorithm : 

- It had to be random so that the player could replay the level with a whole new setting,
- It needed to be parametrable so that the level designers could tweek it to change the difficulty between two levels.
- It had to ensure a specific progression curve during the level, so that the player could sometime face challenging sprouts that would requiere to redraw most of the river, but also more tranquil moments where he could easily link the sprout to the existing river and chill while watching his screen. 

To create this algorithm, we opted for a weight system : everytime we wanted to spawn a sprout, we would scan all the game tiles and give them a "spawn score" : the tile with the highest score, would be selected to spawn a sprout on it.
To give this score to a tile, we took mutliple parameters : 

 

- The proximity to the existing river,
- The proximity to another plant,
- The ground type... 


 

Small part of code, that is checking where the river and plants are to determine the score

Then because we needed to create a progression curve during our level, we created a variable called " Threat state" that would determine weather we wanted to spawn a "hard sprout" or a simple one. 

This state would be calculated depending on various variables : 

-Current number of shovels,
-Time before the next upgrade,
-Advancement of the game...

​

For each threat state, we would change the value to give to the tiles. For exemple, if the current state is "calm", tiles closer to the river would have a higher score compared to far away ones. 

All those values would be tweekable by the level designers, so if they wanted to give a harder generation for a specific level, they could augment the score of harder tiles for all threat states. 

All the parameters the level designers could tweek for the generation.

Working on the procedural generation of this project was something I really enjoyed, having to find the great balance between what level designers needs and what design can provide was someting I liked a lot.

bottom of page