Deliverance

"Solve the puzzles around you and escape the room with the secret formula."

Project: 5

Time: 4 weeks, half time, 80 hours

Reference Game: Legend of Grimrock

Group Name: Arcturus Game Studios

Game Engine: Aurora

Level Editor: Unreal Engine

Role Overview: Engine, graphics, and editor

Contribution Overview: Renderer and build-system

We were tasked to create our own game engine which would be used to create and play the game.

Our fifth game at TGA was a narrative driver puzzle game, and the first to be made in our own game engine, Aurora. This project was more of an opportunity to develop the engine than a game, and the short time we had made us develop it quickly. 

The player plays as a spy, sent to an old laboratory, needing to solve puzzles to steal a secret formula.


My Role

As we settled on writing a new engine from scratch instead of further developing the TGP, the "engine" written during our graphics course, we had little time before the engine would have to be functional. I, together with David Nilsson, created the engine in four weeks and used my own engine, Epoch, as a starting point.


It was a lot of work to get everything working for this project, but it wasn't too hard due to us having already implemented most of these features in TGP but wanted a better structure this time. 


Our level designer used Unreal Engine as a level editor, and the school provided us with an exporter that writes the scene data from unreal to a .json file that we then import into our engine. 


My Contributions

Due to the short time we had to get the engine running we used my engine Epoch as a reference. This enabled us to get an application running, which opened a window on day one. We chose DirectX 11 as our rendering API, as we had used it before during our graphics course and spent a day setting it up. 

First, we implemented rendering of built-in primitive shapes like cubes and spheres. Then we added simple materials to the engine and the ability to load more advanced meshes via .fbx files. 

We added physically based directional lights, point lights, and spotlights that are able to cast shadows to our engine, and then we added a quick skeletal animation implementation, and Dino Zvonar made it possible to play, stop, and change animations.

So that all the game assets only needed to be loaded once, we had to store all assets somewhere. That's why we made a simple asset manager. We made it so that one could fetch an asset via its file path, and it would be loaded if it wasn't loaded already. 

Towards the end of the project, we noticed the lack of UI, which we had forgotten, so I made it possible to render UI images.

As our project grew and everybody involved added and removed files, it could get difficult to keep everything running. Premake helps with making sure the correct files are included in the project and everybody has the same project settings. As I was new to Premake and had only used it once before, it became quite complicated to add stuff to it later on, and have therefor rewritten it since.