One of my near-term engineering goals for Open Tournament is to implement a more robust system for game modes. Anyone who has dipped their toes into the project as it currently exists can see that we already have the architecture in for simple Deathmatch style modes. In theory, that’s enough to fulfill the basic requirements we’re looking to meet for milestones like public playtests.
Everything Is Complicated
Game development is rarely so simple. While the rules for something like “Deathmatch” may seem fairly straightforward — All you need is a game with a time limit and a maximum score that can be reached by eliminating other players — in reality there’s a lot of complexity that underlies even the most basic mode.
An obvious feature I can point to when it comes to hidden complexity of game modes is literally on screen all the time: the HUD. Every game mode has some unique elements that need to be represented, whether that’s a Deathmatch-style timer & frag counter as shown above, or a more complex display of teams, objectives, and other messaging.
Another non-obvious element of complexity might revolve around rules that spawn items or characters. A Battle Royale mode fundamentally alters the rules around spawning in, whereas Duel or Instagib modes might change rules that spawn items into the map.
All of this hidden complexity in game modes and how they interact with other elements of the game can lead to strange and undesirable limitations in the game’s architecture. Since one of the core philosophical tenets of the Open Tournament project is encouraging player choice and empowering creativity, I want to ensure that these foundations are robust enough to support both old and new playstyles & modes.
New Approaches
Fortunately, the new architecture I’m working towards implementing for Open Tournament gives us the capability to support any modes previously created in a shooter game & more. What I’m working toward is something that is:
Modular
Data-driven
Extensible
The new architecture is making use of some newer Unreal Engine 5 features that Epic has been developing over the past several years. This is very different to how earlier games were developed on the Unreal Engine “Game Framework” as this new architecture composes the mode from various different pieces, rather than leaning on Object-Oriented inheritance.
Here’s a simple example. Our Deathmatch mode will implement some basic logic for spawning characters, spawning items, and add things like a score limit and a time limit. However, if we adjust the components to add a “Team” component to the game, we can turn a standard Deathmatch mode into a Team Deathmatch mode. Similarly, a Last Man Standing mode can be converted into a squad-based Team Elimination mode in the same way.
The freedom here is something I get excited about as a developer, and it’s even more amazing knowing that this is something that empowers people to experiment with modes in an unprecedented way. Want to define a mode that’s a round-based team game with asymmetrical teams where one team is composed of soldiers with standard weapons, and the other team is composed of aliens with crazy movement and special attacks? Totally possible. And that’s the tip of the iceberg.
Wrapping Up
Now I don’t want to get too far into the weeds here. I’m sure I’ll discuss specifics of certain modes in more detail later on. Nevertheless, it’s exciting to see how all of these pieces fit together and how these things can really allow Open Tournament to live up to its spiritual predecessors and surpass them.
Cheers,
Wail