Pitfoil

Reawaken a once Desolate Steel Mill by using Forgotten Technology to Survive an Automated Defense System

Play as Grippley, a scavenger who has fallen deep into an abandoned steel factory trying to find her fay out. Solve puzzles and reawaken the desolate steel mill but beware not all technology in this place is safe, some might even have a mind of its own.
Awaken the world around out.

Pitfoil is a 2D platformer pixel art game. It was made using a mix of Unity and a custom engine called TGE.
Pitfoil has 5 levels connected by elevators going up and out of the steel world. Run, jump climb and control the environment to get out.

What I worked on

I was the main UI programmer working on Pitfoil.

I found it super fun and enjoyable to work on the menus for this game. I created everything from scratch. All buttons and sliders were components I created the functionality for.

You can use the menus with keyboard and controller input. The mouse input was removed from the game completely because the game does not use the mouse at all and only uses keyboard or controller input.

FIrst mocup of the Main Menu I got from Graphical Artists

FIrst mocup of the Main Menu

The final Menu from the game

During this project I worked closely with the graphical artists. How we worked was that I got a reference picture and then I would add that picture to the game with functionality.

I would often go to them and we would talk and discuss positions and how things best worked together.

The menus were built up of DDS files the Graphical Artists would make for me and I would implement it to the game. It was a lot of trial and error with the menus in the engine. Each image is placed with a hard coded value on the game screen. It was a lot of moving pixel by pixel and math to get them where I wanted each word and button to be.

We didn’t have any font rendering so all text and art was drawn by two very talented Graphical Artists, Thea Arnman and Assar Wade. At the start of the project Assar Wade made the graphics for the menus but with too much to do Thea Arman took over and worked with me on the UI for most of the project time.

Mockup of Options menu from Thea Arnman

Final in game Options menu

Above you can see the options menu. The first picture shows Thea Armans mockup and the second is the final version in game after a few iterations with colors and layout. The layout is the same but we added more colors to the background to match the actual game since the game also has 3 layers of background.

“Oh The Missery”

What I am most proud of

I am most proud of everything I made. This project was one of my favorite projects if not my favorite project. I had so much fun with the group and with making the UI. If I would say one thing I am proud of it is what you see above. The Pitfoil title entrance animation. We used sprite sheets for all animations and I found it very interesting to work with and am very proud of the entrance animation for the Pitfoil title. The title plays first before you see anything else and then the menus fade in. It gives a really nice start to the game. The entrance animation sprite sheet was made by Eled Bähni a very talented Graphical artist.

What I am most proud of is the group. I am proud of all of us and we all did our best and kept going. Pitfoil is a game we all loved. I love the group and I think everyone did amazing and it shows in how much we all love Pitfoil.

What I learned

I learned a lot about sprite sheets and just how to make a 2D game in general. It was a lot of fun to learn about 2D games, pixel art, and sprite sheets. I also learned while making the UI and settings how to change resolution of a game, and that when a game is threaded you can’t easily just quit.

The engine we worked in was threaded to make loading faster and easier, this however meant that I could not use PostMessage(0) because this only quit the main thread and all other thread were still active and it didn’t quit the game just froze it. So this was something I leaned and I used the windows postmaster instead to quit the game so it quit all the threads.

Video showing my Interface.cpp

Another thing I learned during this project is to more often refactorize my code. My UI main file called Interface was 1600+ lines of code. The init function alone is over 500 lines of code. So this Project was a lesson to more often break out the file into smaller chunks and functions for easier use.

I should have refactorized my code more often and find duplicated and make a function out of it. This would have helped me to not have a huge blob of code for the interface. But even with this blob I managed to make a very nice and readable structure with comments and “headlines” for myself.

This was also the project where I learned that teamwork and group dynamic is so much more important than one might think in the beginning. Grippers were amazing to work with and it shows in the game and in our work.


Grippers are the most wonderful people I have worked with during my time at TGA. They are all amazing developers and artists.
We all had amazing communication and group dynamic, and everyone quickly became friends.