About the game

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d2665dd6-8f88-4e66-a466-61d5ef580e33/ProximaC.compressed.mp4

An atmospheric space sci-fi game, focused on exploring immersive game UX design, procedural generation (land, items), foley sound creation.

Story: As mankind civilization advances, they rely on expedition robots to expand their extraterrestrial territory. One day, their spaceship fell onto a toxic acid planet called Proxima C. Only one robot survives, and it must use all resources spilled from the wreck, whilst waiting for a rescue ship.

GitHub link: https://github.com/baskoroi/helloproceduralgeneration

LinkedIn post: https://www.linkedin.com/feed/update/urn:li:activity:6679716910701125632/

The process

We wanted to create a casual game that doesn't sap people's times. We decided to go for a productive age group, esp. young adults, since that's the age we more easily relate to. We also took inspiration from games such as Monument Valley, Journey, and such others. We wanted to make a labyrinth-like game, in which there is a ball and a base that we can tilt to move the ball.

So Doni made some level designs. Because of our reference games, we initially gravitated to isometric maps, so that our games are 2.5D. So Doni fleshed out the 2.5D level design, and sent some to me.

Initial vision of the game

Initial vision of the game

Refined concept on Sketch

Refined concept on Sketch

Another reference game found by Doni

Another reference game found by Doni

But since we're using SpriteKit, which was a 2D framework, although it was possible to use isometric view on it, I felt that there should be tweaks to enable the 2.5D physics, or probably I didn't get it. I had difficult, so we pivoted midway development to a 2D concept. Something like that typical Pokémon game on your GameBoy, Nintendo DS or what-have-you console.

The funny thing was, after that pivot the concept improved over time. If you look at the first 2.5D concept we envisioned, you can see cycles of refinement. We used the 2.5D concept to influence the prototyping made for the 2D-perspective version.

The eventual game UI, in 2D perspective.

The eventual game UI, in 2D perspective.

As for the game UX, we still want to retain the atmospheric feel as found in our reference games, whilst still making this challenging enough for our users. But...

Map generation? Procedural generation!

As Doni was building a number of maps, he was wondering whether a week would be enough to create various enough maps for the users. He thought we would get stuck at probably three or so. Thus I suggested procedural generation to him. I've heard some cool things about it, but never applied it myself and this app was my first attempt to executing it. The good news is: we were able to produce a different random app every time the user plays a new game.

I applied the following procedural generation algorithms:

Perlin noise interpolation. Source: https://en.wikipedia.org/wiki/Perlin_noise

Perlin noise interpolation. Source: https://en.wikipedia.org/wiki/Perlin_noise