Things Unsaid

C# Coroutines the Game


My second to last semester in University I took my department's only game course, and this was the result. The course focused on learning the basics of game design in teams, each person focusing on a different part of games. I chose game design, since it incorporated both artistic systems design and the programming of those systems.

The last half of the class transitioned from general games history and theory to the hands-on creation of a final game to incorporate the concepts learned over the semester. This is the game that resulted.

My role in the game production was programming and designing of the interactive bits. The UI was also done by me, using edited versions of a free UI pack and some custom pixel art. For the programming side of it, the team chose Unity because of its ease of use and it's what the class focused on, but it also increased the challenge, as I had to implement a visual novel engine within Unity from scratch. It was a fun challenge, and with ample usage of C# coroutines along with Bolt for the UI, the game started taking shape.

A special part of the engine, and one which the knowledge gained from building came to be very useful when starting my Outreachy internship was the parser. I needed a way for our narrative designer to be able to write the game without it being hardcoded, to make everyone's lives easier and make it so the game's dialogue could be changed up until the last moment before submission. With that in mind I devised a parser which took in a monolithic text file laid out in a specific way, and dumped the data from it into arrays within Unity which were used to control the flow of the game. Using this system meant that the narrative designer could write freely and stitch together the flow of the options from segment to segment without me ever having to hardcode anything.

Play the game

See the code