Oxide Games (2019 - 2025)
During my time at Oxide Games, I had the pleasure of working with an incredibly talented team who together expanded the 4X genre with Oxide’s release of Ara: History Untold.
(This page is currently being updated. More changes soon to come in the following day.)
As a member of the gameplay team, I had a number of features that I contributed to over the years. My work primarily focused on the following: turn order execution, buff modifiers, religion, crafting, city management, warfare, and expanding AI behaviors.
Developed with the in-house Nitrous game engine.
Turn Order Execution
A major design pillar for Ara: History Untold was to present a world to the player that felt alive and reactive when constructing your nation.
In Ara, players take their turn simultaneously. Once all players are finished submitting their actions by clicking the end turn button, the game sorts and applies each action to the current state of the world. Due to the simultaneous nature of the game, it’s not uncommon that a set of orders may conflict with each other. To resolve these conflicting actions, the game has a “turn order” of execution which defines the timing of when a specific action should be applied to the game world.
Making a simultaneous turn game is hard™. It took us multiple attempts to finally nail down an ordering that we were satisfied with. Getting to that point required close collaboration with the design and engineering team, which you can learn more about from the aptly named RockPaperShotgun article “How Oxide survived the nightmare of making a simultaneous-turn 4X game”.
From an engineering perspective, the game needed to be easily auditable to reason about complex interactions between systems. After a gameplay system was written in C++, behaviors of that system would be exposed for designers and other teams. The design team could then reorder these behaviors to specify the timing of when the gameplay system should be executed. The key was to expose behaviors with a level of granularity so any dependencies would be completed before the new system is executed. Changes to the game’s behaviors would very often have downstream effects that would be weighed by both the design and engineering team.
For example, it was important for armies to respect open and closed borders. So the diplomacy system that updates a nation’s border policy needs to happen before army movement orders are executed. A slightly more complex example comes from population and happiness updates. The happiness of a city can affect it’s birth rate which then feeds into the city’s population. Then this population is fed into the calculation of a city’s happiness. Cycles like this have no ordering. Someone on the team had to explicitly define the initial state of the cycle (which in this case was the starting population).
I believe the repeated effort of restructuring the turn paid off. There’s an added element of surprise when playing the game that I hope more games explore in the future.
Buff Modifiers
Buffs in Ara could modify the effectiveness of a variety of game objects such as: the combat prowess of an army, the strength of a nation’s religion, the production of a city’s buildings and much more. Different combinations of buffs could be tied to specific leaders, objects or triggers to provide uniqueness for different strategies.
I helped implement a robust system to collect buff producers and ultimately apply modifiers to entities within the game. Incidentally, this process is very intertwined with the Turn Order Execution section above. The timing of when a buff becomes online is very important. Our internal mantra for buffs became “what you see is what you get”, which emphasized the importance of the player being able to see which buffs are active and knowing those buffs will be consistent through the entire turn.
This loosely followed a producer and consumer model where at the start of the turn, all buff producers would be gathered, and a list of relevant consumers would be collected for each buff. Once all buffs have been applied to their respective targets, the remaining gameplay systems could reference the modified targets without fear of invalidation.
Crafting
There are a variety of buildings within Ara that produce goods or masterpieces. These items can be used to boost the stats of your nation or provide a method of victory by earning the player Prestige (the final player score used to determine a winner).
I helped develop a system to produce these items from crafting orders. Players could configure their crafting queue for each building, as well as configure the properties of each crafting order.
City Management
Cities do things [citation needed]. And in Ara, cities are composed of a collection of regions that may or may not have buildings or other entities on the map. Cities have stats that reflect their health, happiness, or others, which can be affected by the current composition of the city.
I was involved in implementing and iterating on many city interactions. This involved constructing or upgrading new buildings, claiming regions, using items, developing projects and tracking sieges.
Warfare
Wars in Ara involve a pair of nations where the declaring nation is designated as the attacker and the other target nation is the defender. It’s possible that a particular war involves more nations who fight as allies for the attacker or defender. Additionally, each war has has conditions for its success or defeat, which may or may not conflict with other ongoing wars in the game.
I helped build upon the game’s combat system to define state tracking for each war instance. Wars would be conscientious of the siege status of relevant cities. And if an nation or one of their allies were to fully siege the war’s target city, then that war would be end in a victory.
AI Behaviors
Being a great leader of a nation depends on the leader’s ability to execute on a plan. To develop compelling AI for the player to compete against, Ara needed it’s AI leaders to form plans of their own. Which is particularly difficult when there’s uncertainty in the success of the leader’s actions.
In order to construct a plan, an AI nation would inspect a list of possible goals then attempt to decompose each goal into a sequence of actions. If a sequence of actions cannot be found, the AI would attempt to decompose a different goal until a sequence of actions can be generated. Every turn, this planned sequence would be reevaluated to verify the achievability of the goal. If the goal could no longer be achieved, the AI system would generate a new plan either for the same goal or a different goal entirely.
Check out the talk by the lead architect of the system, Will Chambers, during the AI and Games 2024 conference if you’re more curious about the inner workings of the Ara planner AI.
Building upon Oxide’s proprietary data authoring language, I helped implement new AI actions that the AI and Design team can author as strategies for completing goals. These actions would modify the AI’s internal model of the game or drive the orders a nation submits for their turn. For example, this could be starting construction of a building or raising a city’s internal wealth metric.
In addition, I helped optimize the process of selecting game objects to utilize in a plan. Every action in a plan has arguments that reference specific game objects or attributes. Determining what these specific game objects are can be dependent on the conditions derived from the goal. Due to the enormous possibility space of a 4X game, the AI needed to quickly prune irrelevant objects to stay performant.
Religion
In Ara, every city with a dominant religion applies religious pressure to neighboring cities. The effectiveness of each city’s religion is dependent on that city’s religious strength and distance.
I helped implement the religion system to calculate the amount of converted population to a particular religion for each city. It works as a two phase system that first calculates the amount of converted population before applying the conversion to the living world.
Dev Diaries
Below you can find a handful of videos describing some of the above features in a much more articulate manner that I’m capable of. None of these features would have been possible without the herculean effort of these individuals and the rest of the Oxide team.