But how complex is a given game? How big is a project given its feature set? How will adding a new feature affect the amount of effort required to complete the project? This article is aimed at students of the complete Unity 3D beginners' course we're currently making, and experienced game-devs alike.
These are questions all game developers and designers must ask themselves. The financial realities apply to both independent developers and corporate game-smiths alike. An overly-ambitious project taken on by a team without the resources, whether in skills and expertise or in raw people power can mean the end for a small studio or a budding indie career. Understanding how to measure the complexity of what we undertake will help us plan accordingly and recruit the help and support we need.
As an example, let us explore what is meant by multiplayer. Most people have a different idea of what this means. For some the term means a live networked FPS arena in the style of Quake, while for others it means a browser-based social clicking game. These two example are clearly not equivalent in term of complexity, so let’s break it down a little more.
One distinction between the two games is that a FPS arena game is responsive in real time. When a bangladeshi player fires their gun, there is a maximum amount of time that the entire system must take before the virtual gun on a South African player’s computer fires. In contrast, Potatoville player’s actions don’t have any real time constraint. It doesn’t really matter if a player’s potato growth isn’t made coherent with another’s for days. This distinction then becomes one of the ways in which the complexity of a game can grow. Roughly, we could imagine a scale as below:
- Syncless games don’t share state across clients. They’re essentially not multiplayer games. Sometimes, a syncless game has a multiplayer metagame, such as when players share their shortest Mario Bros. times and try to beat each other.
- Async Are games where the information between players is shared asynchronously, so that a player’s actions will take effect at some later, undetermined, time in another player’s world. Most casual social games fall into this category.
- Locking async These games may be played asynchronously, but the state of the game cannot be change by multiple players at the same time. In essence, these are turn taking games. A good example would be a mobile Tic Tac Toe or Scrabble game. Traditional board games (Go, Chess, Awale...) almost always fall in this category.
- Synchronous games are games where the players may change the world state at the same time, or make their decisions at the same time. For example, an online Rock, Paper Scissors would be considered a synchronous game, but there are no strict time limits on how long a player can take to make a decision or how quickly information has to be delivered to the other players. The board game Diplomacy is another great example.
- Realtime Synchronous are synchronous games that have a real time limit on how fast the information has to be exchanged between players and how quickly they have to make a decision. There are many examples, such as Halo, Musical Chairs, World Of Warcraft or Red Alert.
This give us yet another dimension to consider when thinking about the complexity of a game, namely the number of people information needs to be shared with:
Another point to note is that what was a 2D space now just turned 3D, and, if we take our example of the Game of Thrones board game, we then end up with a cuboid representing the size of our game:
Of course, we could go around assigning numerical value to each category in the different dimensions, but to do so without any real data is of little use, this is a tool best use to frame our thinking when designing games (or systems of any kind).
As we can see, games have many dimensions of complexity, and total complexity is not simply the sum of these. Instead, we should be thinking about the product of these individual domains as the total complexity of the final game. Thinking about a game in this way lets us answer the question "How complex is this project" with much more assurance that our answer is sensible, and lets us predict the cost of increasing the complexity in a given domain during development.
Of course, the domains described here are only a small fraction of the many complexity domains a game has. I leave it as an exercise to visualize the shapes made when you have more than three dimensions…
Some interesting ones to consider are:
- The language of the game [none, one language, many languages]
- The AI [None, pathfinding, Strong AI]
- Permanence of the game world [transient, instances, fully persistent]
- The play state [Debug build, private demo, public demo, published]
Firstly to realize that sometimes, the best move is not to play the complexity game at all. An excellent example is Brothers: A Tale of Two Sons, which does away with the complexity of language by replacing the communication between the characters to unintelligible speech and uses the environment, music and animation to convey information instead, improving the quality of the experience and emotional immersion rather than reducing it.
As for the play state being a complexity domain, it helps us understand just how much harder it is to move from a demo to a published game, and explains the countless unfinished projects sitting on hard drives across the internet. We can use the idea of complexity domains to visualize the effort required to complete a game, giving us a much better handle on what the true size of the work is.
So next time you start a new project, don’t forget to ask yourself these questions:
- What are the major dimensions of complexity in your game?
- Which dimension adds most value to the player’s experience?
- Which dimensions could be reduced with the least effect on player experience?
- Can alternative solutions be found to satisfy the player's needs instead of raising the complexity?
- How many domains does the game cover?
Let us know what you think about this article! How do you measure the complexity of your games? What approach do you use to scope your projects? Think this approach is the best thing since sliced bread? Think it's a lot of rubbish? Let us know!
Until then, Happy Gamedeving!
- Unity 4.x Game Development by Example Beginner’s Guide (Ryan Henson Creighton, 2013) - inspired the article with its Multiplayer Ladder
- Brothers: A tale of two sons, by Starbreeze Studios 2013
- The Mythical Man Month (Fred Brooks, 1995)