Flutter is an endless runner game that uses a variety of obstacle patterns and increasing difficulty.
The player moves forward automatically
obstacles
difficulty increase
spawning
There are three different obstacle types, each with a trigger area that will end the game if the player enters it. Plants are at the ground level, forcing the player to move upwards. I made a rain particle system that falls from above, and extended the trigger area to the floor. This makes the player have to reposition horizontally. I created a similar particle system for petals to indicate wind that blows from the side, making the player move vertically to avoid it.
I created 8 chunks that were 25 units long made up of different combinations of the obstacles. When the player gets close enough, a random chunk is spawned, and the spawn point is moved ahead ready for the next chunk.
To increase the difficulty over time, the player move forward at a faster rate as their score increases, up to a maximum.