A Different Approach to Procedural Generation

A lot of games make use of procedural generation to create a unique environment with different enemies each time it's played. A lot of these environments are static between playthroughs, so we decided to explore what happens when a procedurally generated world has a mind of its own.

The Game

The goal of the game is to get as many shiny blue orbs as possible. One orb gets created at a time. To reach the orb, you have to navigate a sea of tiles where some are glass and have a chance of breaking beneath your feet, and some are red hot and will surely burn you to a crisp.

However, the world can't let you have it that easy. As time goes on, the tiles move up and down and different mountains and valleys form which you must now navigate to reach the orb. Over time, the wrinkles in the world proceed to take a new shape, so you may never be certain how the world will look even 30 seconds in the future.

Once you reach the orb, a new one is created for you to find yet again. But with every orb you grab, the tiles start to deteriorate, showing more icy or red hot tiles, and they create bigger and bigger ridges to climb as you find the next orb.

A VR Experience

Our Player-vs-Environment game was designed with VR in mind. We chose to use vivid colours and atmospheric graphics to create a world where you could jump in with a headset and feel like you're in a completely different world: one where you will continually be competing to move faster than, and outsmart, your environment.

No Easy Task

Creating such a dynamic world was a challenge that we found quite difficult to implement. Having never tried procedural generation before, we had to make sure that our world didn't just look like a bunch of squares randomly placed next to one another. To create the dynamic height map, we generated random peaks and applied gaussian distributions around them to create the sense of an elevated terrain. We then used this elevated terrain as a contour map matrix which we used to guide the movement of individual tiles. We also had a timer in place which slowly generated a new height map so we could begin moving the tiles to those positions, creating the effect of an ever-changing environment.

Above and Beyond

Our demo only explores a limited scope of the elements that we hope to include, and we're sad we couldn't implement everything now. Right now its very much a proof of concept that we can create a dynamic environment that's visually stunning and interesting to interact with.

This project has been incredibly fun and stimulating to work on, and we hope turn it into a complete game with a full menu and different difficulty settings. Moreover, we intend to implement the following cool features to make the world much more challenging:

  • Decaying world over time, where the longer you take to get the orb, the more the world loses tiles or behaves erratically.
  • Hot and glass tiles deal damage to the user.
  • Randomly generated shards of tiles which could shoot out of the ground and kill you.
  • Fall damage to make the risk of spawning on a mountain way more serious.

Built With

Share this project: