May 2019

Ludic genre:
Rogue-lite + Top-down/twin-stick shooter.

Story:
‘Gnul’, a goblin with the simple and vicious need of extracting minerals, digs into the ‘Snuggug’ caves, where it’s detected to be a powerful and strange material. His journey won’t be easy; these caves are known for its ‘Arakagg’ predators, and Gnul will have to defend himself.

This is another university project, a game made in one year with my companions Pol Blanes and Adrià Fret.

You can download the game in GameJolt.

Also you can play the level editor here (click the blue button to make it fullscreen).

My main roles in the project were producer, procedural systems development, and level designer.

I programmed the player’s following camera, which detects the actual cave’s size and zooms in or out accordingly. Also, the sound will reverb or not according this same size. The camera will also follow a little bit the player’s mouse, so that if the player wants to shoot an enemy far away, the camera perspective permits it.

Example of the camera smoothly transitioning from tunnel to 1-hex cave.

The scanner and map implementation, which detects the scanned caves and its adjacent, as well as any turret on scene, is also programmed by me.

Example of scan + map mode.

As for the procedural caves, this algorithm is made using a grid of hexagons with a fixed size, each random seed selects the caves random positions in the grid for the same floor, and then I use the Breath First Search algorithm in order to find if the positions can be connected with tunnels (that shouldn’t interconnect with each other) and if the player can explore each of them and rappel to the next floor.

The process from prototype to release went as follows:

For each cave in each floor, I set one type of cave depending on its size and some stablished percentages following a difficulty variable. This type will set the last percentages in order to fill up the cave with its gameobjects, that shouldn’t be too close from each other, and neither cover a tunnel.
Also for each cave I pass a Poisson-Disc Sampling algorithm to spawn the rocks. On the margins are bigger than in the center.

Floor connection type cave, with normal loot.
Also the rocks using Poison-Disc algorithm can be seen.

Each level was completely different but at the same time very similar, and the player would get tired of the caves. Then I thought that a big spacious part of the level would be a great idea. Following a very similar algorithm, i created the “falling path”, creating these small hexagons from the farthest cave (so that it wouldn’t collide) and the direction opposite to the mass-center.

Example of the falling path in prototype state.

On the other side of the path, there would be a cave with many loot to reward the player.

As for the level design, each floor has multiple connections with the upper and lower ones, but only one which the player can use (blue). The others are just traps that lead the player to spider nests (red).
The core loop is as follows: the player has dig down with the tunneler, but in each level there’s an obstacle the tunneler can’t get through because it explodes. The player gets out the tunneler on the closest vertical cave and has to get down and destroy this obstacle. After that, return to the tunneler and follow his way. This objective limited the game because of its monotony and repetition, as well as that it could be completed really fast depending on the seed. That’s why we created two other missions: getting all the specified gems in the level, putting the player to explore each cave, and getting the elements to repair the tunneler.

Visual concept of the core loop.

Just for curiosity, these are some of the bugs I captured during development. Some of them were pretty hard-solving…