Project Overview
Project Progress
Finished 100%

Genre

Retro 3D Shooter

Team Size

16 People

Roles

Graphics Programmer, Build Engineer & QA

Platform

Windows
&
PS 4

Duration

8 weeks

SUB NIVIS is a first-person shooter inspired by classics like Quake and DOOM. Play as Sister Maria, a nun sent to succeed where others like the Vatican and the UN failed: the Black Pyramid of Alaska.”

These were the first words I wrote to describe or game on itch.io. Sub Nivis was the first game I worked on that was released, and it was a huge success for me. Made in a custom Engine called “The other Engine”, it was a welcome opportunity to work on a game outside of Unreal Engine. I joined the project after the Engine had already been in development for a while.

What did I work on?

I originally joined as a Graphics Programmer, but I did little Graphics programming for it (only implementing skyboxes) and instead quickly assumed the position of Build Engineer.

In that capacity, I worked on automating large parts of our review and release process. I set up automated testing pipelines that hourly reported the health of our project to the team directly on our Team’s Discord server. I also created an automated delivery pipeline that developers can trigger using a simple script. It then runs automated tests, compiles and directly delivers a build of our Game to itch.io.

I also implemented some Gameplay elements for the Game. The most notable are the five powerups, of which only three made it into the final cut: The Fire Rate Boost, Damage Boost and Invincibility. I also made an Infinite Ammo and Invisibility Powerup, but they were cut for balancing reasons. You can find them on the right.

I was also heavily involved in the quality assurance aspect of this project. I performed all of the smoke tests, was involved in writing our testing plans and maintained our itch.io page.

Build Automation

As the Build Engineer for our project, I set up an automation pipeline to make the process of building, testing and deploying our Game much easier and less time-consuming. I also wanted to give the team regular feedback on our project’s health. To do so, I set up the pipeline you can see below. You may notice that there are two build servers, one from my University and my personal one. The reason is that we only had limited time to build on the school build server (as it was shared with all years & projects, a schedule was required). To ensure we regularly get reports on the health of our codebase, I simply run the pipelines on my personal server when it is not our time to build on the school server.

The Testing Pipeline

The Testing Pipeline polls the Source Control Management Server every hour for changes. If there are, it gets the code, builds the game and runs the Unit Tests. It does so for all of the platforms & configurations using Matrix Builds. It then displays the result in a dedicated Discord Channel on the Teams Discord Server, ensuring everyone knows the project’s status. If the build fails, the dev can click on the Link, log in and quickly get a report on what went wrong.


The Delivery Pipeline

The Delivery Pipeline goes through the same steps as the testing pipeline, but it adds a step: it uses the itch.io Butler tool to upload & publish the build automatically. This pipeline can be triggered by any authorised Dev using a simple tool I coded at the click of a button. In practice, this was used during our review process. We would manually review our game (smoke testing etc.), and as soon as we verified it, we would start the automated delivery pipeline. It then checks if our game can be compiled on an entirely new machine, runs all of the tests, and, if they pass, uploads & publish a build to itch.

The Power-Ups

I made a total of five simple power-ups for Sub Nivis. These were initially conceived by our Designers and implemented by me. They are hidden away in the game to give the player an incentive to explore the different maps and add a twist to the usage of their weapons. Especially the fire-rate boost impacted gameplay strongly, turning the revolver into something more akin to an assault rifle.

Damage Boost

The Damage Boost power-up is relatively straightforward: it just increases the weapon’s damage output and enables the player to kill most enemies in a single shot.

Fire-Rate Boost

This power-up increases the fire rate of the gun, turning it functionally into something more akin to an assault rifle.

Invincibility


Makes the player invulnerable to damage for a given amount of time. Our Level Designers used this to make very challenging areas a bit easier if necessary.

Invisibility

(Cut from the game)

This made the player invisible to any enemy for a short amount of time. In the end, it was cut from the game because it was functionally too similar to the Invincibility power-up.

Infinite Ammo

This stopped the ammunition consumption of the gun, giving the player infinite ammunition. It was cut because it was too unbalanced and impacted the difficulty curve, making the game too easy.