Game Developer Deep Dives are an ongoing series with the goal of shedding light on specific design, art, or technical features within a video game in order to show how seemingly simple, fundamental design decisions aren’t really that simple at all.
Earlier installments cover topics such as designing combat to match the beat of music in Metal: Hellsinger, gamifying the process of learning to code with One Dreamer, and curating meaningful choices in multiplayer narrative games in Doomsday Paradise.
In this edition, Aureus Morale of Moral Anxiety Studio discusses Roadwarden, explaining how the game's systems created variance and meaningful impact.
I'm Aureus and I designed, wrote, programmed, and illustrated Roadwarden, the first successful game developed by my Moral Anxiety Studio. While I was working, I had a rare luxury in disguise. I was adding new pieces of content to the game without the need to justify myself, or to split the tasks between the crew members, nor maintain the flow of communication and documentation. And since the majority of the project is text-based, making even grand-scale changes and fixes took me no longer than a few days, and usually just a few hours.
For teams of developers with advanced visuals, such a scenario is not replicable. I’ll put aside personal examples and anecdotes, and stick to the toolbox I used as I tried to fulfill my objective: making an RPG that notices and reflects the player’s role-playing.
To be more specific, I was pursuing a game that feels responsive, adjustable, avoiding epic linear tales that abruptly shift into a single “save everyone / become powerful” decision in the epilogue. I believe that making meaningful choices at different stages of the player’s journey is one of the most significant experiences that RPGs have to offer, and my game was meant to keep those in the foreground, compromising more complex systems to give players access to all of the quests, events, and conversations, no matter their character’s skill set.
The structure and the alembic
While the major decisions in Roadwarden require selecting specific lines of text during dialogues or other interactions, the game involves many more choices that are not as dramatic, but have great impact on one’s experience. Not unlike in combat-oriented RPGs, the player makes choices about the ways they spend coins, which items they use, and which stats they prioritize.
Of great importance is the order in which the player reaches new areas and speaks with NPCs. One player’s starting village will be another’s last visited settlement. I wanted to offer the freedom to travel as one pleases, and therefore I needed to make each settlement somewhat fresh, but also open to the newcomers, giving it a comprehensible structure—the introduction, the initial distrust, lower-difficulty quests that encourage the protagonist to explore the world further, and finally more advanced quests and more beneficial interactions.
Having so many possible directions, I needed to simplify as much as I could. I had divided the interactions into ones that were hand-crafted in their entirety, and ones that would do with the alembic. By this, I mean that the player wouldn’t be forced to stick to the predetermined order of tasks, and instead would be required to reach an amount of points tied to a pre-established threshold of success. Because of this, the player could reach the next part of a quest while maintaining some amount of freedom.
The most basic strict quest would require the player to go to a specific place, do a specific interaction, and return to the quest giver. The quests using the alembic are a bit more difficult to explain. A good example would be the one that requires the player to feed the dark altar with magic. They can use blood, spells, or magical items, and even fail other quests in the process, but no matter what they put into the alembic, it distills all of the offerings into +1s, +2s, and so on, until the desired threshold of completion is reached.
The alembic helped me organize and maintain the game’s grand structure. If a PC needs to complete three out of five different interactions to progress a quest, and these interactions are spread across the entire map, it allows me to pace the quest depending on how easy it is to reach and complete these interactions. The early game encourages the player to follow the main roads and to visit all the major settlements. The midgame closes most quests, including the ones that involve greater knowledge of the game’s systems. The late game involves the most difficult, dramatic quests and interactions, often concluding a story that had started hours earlier.
Over the course of the game, the protagonist gathers friendship points that are compared against arbitrary trust thresholds. As the player puts more effort into interacting with NPCs, they unlock new interactions, quests, and hints, advancing the stories, but it’s also a camouflaged character progression. Many of the rewards open new opportunities—shelters, better prices, free services. Both the friendship points and the trust thresholds are hidden from the player, though the changes in a relationship are often expressed with the way characters greet or address the protagonist, adding to the more significant shifts of the grayed-out dialogue options into interactable ones.
In the worst-case scenario, it leads to awkward results when the protagonist befriends a complete stranger in five to ten minutes, or meets angry scowls as they ask for help even though they just participated in a friendly exchange.
There are ways to limit these jarring moments. Having a low friendship level can boost point gains, and I introduced exceptions and more nuanced interactions that either lower trust thresholds or force NPCs to return the favor (or admit that they’ve been lying). At the same time, having a high reputation in a village adds to the friendship with an NPC, and vice versa.
Using the alembic feels unavoidable to me on a large-scale project, and the best I could do is try to avoid gamifying such interactions too much. Some games, for example, introduce “gift” systems that turn one’s enemies into lovers after showering them with loot. In Roadwarden, such situations are minimized.
The fluff, the spice, the floodgates, the burnt bridges
It would be insane to make each decision memorable and of comparable significance. Not that it’s something anyone wants—pacing is key, and keeping each element stressfully crucial and epic would lead to exhaustion, making the stories taste the same.
I allowed myself to put different levels of importance onto various sections of the game, starting with the fluff—interactions that don’t influence the stories but are meant to pull the player into the game’s world. Some of these serve as a vibe check, allowing the player to state directly what their character thinks about a specific situation, character, or place, in hopes that it will flesh out the protagonist.
Other fluff pieces helped me limit the game’s purple prose, replacing long, detailed narration by giving the player an opportunity to select which detail about the world feels most fitting for them. For example, instead of explaining how there are countless stories tied to various cultures, the game lets the player pick a vague tale about the moon, simultaneously giving the taste of the game’s inhabitants, and of the character’s background or personality.
Sometimes, the game remembers the selected fluff, referencing it further down the road. Once the player reaches the game’s final section, the features of the city they visit are affected by the choices made while describing it to NPCs.
The spice affects the game more directly. Such choices remain minor but have greater significance when it comes to gaining friendship points or affecting the character’s stats. The most notable examples are the attitude scenes. They occur when the protagonist meets NPCs of greater significance.
The player is meant to select one of the five different approaches (friendly, playful, distanced, intimidating, vulnerable) while introducing themselves. Some of these attitudes lead to similar outputs, while others differ significantly, increasing or lowering the friendship level, offering new clues, or giving instant access to quests or interactions that are usually unlocked later on.
The spice moments are more gamified than the fluff, and therefore the more beneficial choices get more clear as the player collects more clues. The in-game journal stores hints gathered from various conversations about the attitudes preferred by different characters. The game also indirectly hints at the more inappropriate choices by making them more misaligned with the current mood of the conversation. The player needs to choose if they want to stay painfully honest, or would they rather manipulate others into liking them more.
A cool thing about the spice is that it can be inspired by the older content, such as items. If the protagonist purchases an armor-fixing set, they can use it as the spice to help one of the NPCs and get some friendship points. Similarly, if the player sells a bunch of expensive healing potions to one of the traders, the game acknowledges the found “exploit” and blocks the interaction, commenting on it with a bit of fluff and a new achievement. Building these moments is time-efficient, yet makes the game feel more organic.
If the spice grows in significance, it becomes a floodgate. Sometimes the floodgates are wide open, aiding the player. Other times, they limit the player’s options significantly, but can be either fixed or bypassed. A character may be angered so severely that gaining their trust is no longer an option, but there may still be ways to get on their good side, usually by sacrificing valuable resources. A “failed” quest may still give the player access to some advanced interactions, just in a different, disadvantageous way.
In rare cases, a floodgate can’t be fixed. If the player does everything they can to decrease their friendship level with an NPC, it’s unlikely they can swing the entire relationship in the opposite direction, and may at best reach a “neutral” state.
But if the outcome is intended to be more harsh, like an either / or choice, this is when I think of it as a burnt bridge. An NPC dies or leaves the realm for good; a village collapses; the player supports one community, but weakens another. Burning a bridge means the player shouldn’t expect that putting in extra effort will reverse the outcome. Instead, they’re meant to accept the consequences of the changed world.
While some burnt bridges have no positive outcomes, those that do are more interesting. Still, it would feel artificial to force each one of them to be somewhat rewarding.
The pre-written freedom
I wanted each scene in Roadwarden to feel natural, as if it treats the player’s path as the “canonical”, linear, intended story, even though no such thing exists.
The game acknowledges a significant part of the choices made by the player, referencing them and bringing them to their logical conclusion. The floodgates should be significant at least locally, getting mentioned whenever they’re relevant and changing to the game’s systems. The burnt bridges need to leave a mark on the world, affecting the stories and gameplay in major ways. Leading to a village’s collapse will also fail (or resolve) any potential quest tied to it, and will block the access to merchants and the shelter that it used to offer.
The most important burnt bridges have such a significance that even if left untouched, ignored, or abandoned, they should at least influence the epilogue. In their case, inaction is action.
Bringing attention to the spice and the fluff at every opportunity is an impossible challenge, but it’s good to keep them at hand in your notes, referencing them when writing or editing new content. Even short callbacks are of great worth as they add to the illusion that the game truly keeps track of everything.
One of the fun parts of the aforementioned categories is that they have vague boundaries. The player can’t know which interactions will lead to a butterfly effect, so they need to decide how careless or thoughtful they want to be at any time, getting surprised with the ways the seemingly “pointless” interactions affect their further journey.
The class, the religion, the personal goal
Among the most significant floodgates of the game are the character attributes selected during the opening section. I didn’t want to treat them as burnt bridges. The three classes (warrior, mage, and scholar) allow the players to receive or save resources, solve a puzzle, access unique systems, defeat an opponent, or impress an NPC (therefore, they spark their own spice and fluff), but there are no quests or major plot threads restricted to only one or two of them.
It was important to me that no class would be punished for getting picked. The protagonist is somewhat good at fighting, great at riding, and better at survival than most. The class is just a bonus, not the core of their character.
The character’s religion has little impact on combat or the character’s stats, but matters during some social interactions, hindering or aiding the protagonist. Depending on the player’s action, their religion will work either as the fluff, spice, or a floodgate, changing the game more severely the more the character follows the teachings of their faith. The PC’s fate is measured with the alembic.
The personal goal is both a spice and a burnt bridge as the player can’t change it once they select it at the start of the game. It’s meant to provide the player with a sense of direction and hint at the PC’s past, but is rarely referenced in dialogues, and has no side quests tied to it. At the same time, the way the player approaches their quest is of great significance both for the character stats and the game’s epilogue.
Once again, personal quests tend to use the alembic—most of them gather vague points by completing interactions or gathering resources. The game keeps track of some of the player’s actions and references them upon the quest completion or in the epilogue, but knowing the many paths the player can take before reaching the quest’s end, I knew I couldn’t do each possible playthrough the justice, and it was better to use a more abstract tool.
My approach wasn’t free of issues, some of which could have been solved with more time or better testing, while others put into question the core design and would likely end up being an effort-sink if I were to meaningfully improve them instead of rebuilding them.
I stuck to the assumption that everything in Roadwarden is interconnected, with many characters having something to say about each important topic, and as they added more information to the pool, I had to keep all the details cohesive, or at least purposely contradictory. It was difficult to turn around from the once-set course. Adding new characters or new story threads was complicating things even further.
To navigate through all of this, especially as I was scanning the code to see which parts of the game are tied to specific quests or interactions, I was forced to use thousands of variables, so testing was a nightmare—some interactions require the protagonist to reach distant areas and speak with multiple characters before they can push a quest forward. Even three years in I was simplifying my code, learning from previous mistakes. In the end, it worked for Roadwarden, but won’t fit most games, especially ones that require input from voice actors or face animators, or ones that can’t afford to introduce large-scale changes years into development.
It would be easier to put the villages even further apart from each other and assume that they’re tied only to their closest neighbors, with some small exceptions. There’s a good chance it would maintain the illusion just as well while keeping the door open for additional quests and interactions without inviting the flood of obligatory updates each time I tried to spice things up.
I already mentioned the example of the altar that eats magic. The “convenient” alembic lost a lot of its charm as the game got larger, as I had to connect to this area every single piece of equipment. Similarly, the innkeeper who has something to say about each NPC, or the one who has something to say about each area, required more and more updates as the game grew.
The deadlines brought their own limitations. Some of the characters are underdeveloped, lacking interactions or tasks despite their role in larger quests, while the settlements that can be either doomed or saved offer no deeper content in the case of the latter. There was no time to make helping them more impactful, considering many players wouldn’t reach this part of the game anyway.
Between abstractness and vividness
As it’s impossible to make an RPG truly organic and completely non-linear, there are parts of Roadwarden that had to be left simplified. The villages tend to feel the same no matter on which day they are reached. The fluff and spice rarely mention the PC’s appearance, despite having a whole system tied to it. I had to constantly balance between handcrafting all sorts of immersive scenes and unique interactions, and using the alembic, maintaining the game’s general structure while accepting it may sometimes lead to less-than-ideal results, jumps in logic, or awkward simplifications.
After all, aside from having the grand dreams of building a complex, convincing tale told with the player’s assistance, a story in which “each choice matters,” there’s also another goal: to actually release the game once it gets “Good Enough,” and to give others the opportunity to experience it before I burn out.