Overview
My Responsibilities:
-
Implementing core systems (event systems, character stats, etc.);
-
Developing and maintaining a database of events;
-
Designing the game's progression (i.e., what game events appear where);
-
Writing some events;
-
Coordinating outside collaboration (organizing meetings, delivering updates, establishing deadlines, etc.)

Road to Freedom is a text-based strategy game inspired by The Oregon Trail. The game aims to educate players about the experiences of enslaved persons escaping to the North in 1850s America. It does this by simulating the journey of an escaped enslaved person traveling to the Canadian border. I developed this game with a team of two programmers, a narrative designer, and two composers.
Design
The game's design centers on the player making their way along a set route while managing food, money, and medical supplies. Time is also a resource, like food or money. Losing time on the trail or spending a long time in towns will lead to the player losing the game. Thus, players must balance gathering resources and saving time as best they can to win.
​
As a part of this project, our team worked with a client. That client laid out several guidelines for the project that informed its design. Those guidelines asked us to make the game brutal and unforgiving to mimic the experiences of people who escaped to the North in the 1850s. We decided to design the game so that completing it on the first attempt would be near impossible, forcing players to learn across attempts in the same way that escaped enslaved people did.
​
As part of our design, the game leaves many essential mechanics untaught. Player then have to discover how the game works through failure, using what they learn to improve on each attempt. The game's text conveys many key ideas implicitly, such as the importance of time and resources, but it is up to the player to figure out how to best use their resources to succeed.

This design reflects our client's goal of educating players interactively. Players must persevere in adversity, learn from their failures, and keep trying until they succeed. As such, Road to Freedom reflects the experiences of escaped enslaved people and allows us to teach players about them.
Programming
I created many of Road to Freedom's core systems. These include the "On the Road" and event selection systems, which handle crucial things like the flow of time and the events the game gives the player, and the slave catchers that chase the player down throughout the game. I go into more detail on each below.
On the Road
One of the systems I developed was the On the Road system. It controls the progression of time and when events appear throughout the game.

Code Snippet – Trail Updates
The On the Road system uses a ticking mechanic, triggering updates at a constant rate. These updates tick down timer-based counters and progress game time as necessary.
Event Handler
The Event Handler keeps track of a dynamic pool of events. An event is randomly pulled from this pool whenever the player gets an event. It is regularly updated to include different events based on several factors. These factors include the current trail, time of day, which events have appeared, and the player's supplies. Through this system, we balance the game dynamically, keeping it at a reasonable difficulty level and preventing randomization from ruining the experience by skewing the difficulty. For example, suppose the player stockpiles a lot of food or money. In that case, they may encounter robbers on the road or find that their food has gotten moldy from age, losing some of their supply. When the player runs low on food, they would look for food on the trail and may spot a patch of wild carrots they would've otherwise missed. In another playthrough, the player may get caught in a thunderstorm, then later meet a few travelers trying to move a fallen tree from the storm out of the road.


This system allows us to create a more apparent story in each playthrough rather than stringing together events randomly.
Code Snippet – Updating Event Pools
The following code demonstrates how the game updates the event pool. The game calls the function in the snippet whenever it loads an event.
Slave Catchers
The slave catchers pursue the player along the road as they progress through the game. The slave catchers serve a vital gameplay purpose. They prevent players from stalling in towns and gathering an infinite supply of items and punish them for taking too long on the trail. The slave catchers begin following the player once they reach the first town. They then chase after the player until they catch them or the player makes it to the North.
​
The slave catchers are usually faster than the player and move at the highest travel speed the player can achieve. Maintaining the lead the player starts with can be difficult, thanks to their speed. Making a wrong choice can result in a massive time loss, and getting caught means an instant game over.

Code Snippet – Catcher Tick
The slave catchers also have a tick system. Each time there is a trail tick, the game will check if the slave catchers have reached the player or the trail's end. The code below shows the implementation of this.