After watching the rotating donut video, we became inspired to create a project that was fully contained within the terminal. We decided to recreate one of our favourite games from our childhood: Fireboy and Watergirl.


Termboy and Shellgirl was meant to be a 2-player cooperative game played in the Linux terminal. Each player controls one of the characters to navigate through the puzzling levels. However due to some technical limitations with handling multiple inputs at once, we pivoted the game into singleplayer, with a button that let's you switch between the characters. Furthermore, the game itself is a cli that can take in files as custom levels, this allows you to tweak existing levels as well as ones of your own.


The bulk of the project was written in C++. The ncurses library was used to render onto the terminal.


Since we not only wanted all of our maps to be passed in as files, we also wanted the syntax of those files to be very clear and understandable. However, there were some objects that were a bit difficult to get right, specifically, the sliding doors. A sliding door requires an input - either a switch or a lever, and then on activation it moves along a set path. Illustrating what switch controlled which door as well as marking out where the door will then move in a way that would be easy for map designers required a bit of creativity.


This project taught us the importance of following object-oriented programming principles.

what's next

more levels and gimmicks (like fans) perhaps.

Built With

Share this project: