As I started writing this post up, it quickly became obvious that there was way too much to say about this to make it a single easy read. As such, this will then be the first of a series of posts on our movement and combat systems.
There are several reasons why 4X strategy games are, more often than not, turn-based. First of all, let’s be honest, it is a lot simpler to code for multiplayer when time isn’t freely flowing: there is mostly no need for live synchronization between local and server environments, and ping is never an issue (that is A LOT of work that can just be skipped). Second, there are many gameplay advantages, the most prominent of which being that turn-based play is simple to understand. Playing games in a such a sequential fashion is a way to make sense of the chaos of complex situations. It allows the player to focus on the single situation in which they are, and suspends time to allow them to think about their next move.
Problems in turn-based games
Turn-based games however also have some flaws. The turn order can have a massive impact on the game, and even on an individual player’s chances to win: for example, in chess, the winrate of the white player typically oscillates between 52 and 56%. It can feel pretty crappy to play directly after a really good negotiator in a trading game like Settlers of Catan, because most turns, people will have already traded with them just before it comes to your turn to trade. Similarly, if you’ve ever been on the receiving end of a traitorous ally’s attack in a Civilization game, it never feels good to know that they won the war because they got to play first after the truce ended and nuked half your cities before you were even allowed to react.
Another sizable problem with turn-based games: they are clunky, and the downtimes can be significant. Anyone who ever sat around a board game table knows what I’m talking about here: when it is not your turn… there is typically not much to do apart from having a sip and a bit of banter. Can be fun in certain contexts, as long as you are in good company. When we look at multiplayer video games, however, this kind of downtime is not really acceptable to most players. People want to play the game, not wait for it to be their turn 78% of the time.
So what can you do to fix these problems? In the case of 4X games, most often the main area of interaction between players is combat between factions, and more generally how units move and behave with each other. There are several ways:
- Make a solo game. It mostly doesn’t matter if there are small discrepancies if only one human player is playing at a time, because you can mostly shove it all under the “it happens between turns” carpet. Ozymandias or the campaign mode of Total War games are good examples of this.
- Scrap the turn-based idea altogether, and go for real-time. This is doable, if you have real slow progression which allows for the player to focus on a limited amount of things at a time (think about Stellaris or Europa Universalis, for example)… but this solution comes back with all the other problems from real-time games which we mentioned earlier.
- Implement some kind of compensation mechanics, either for simultaneity or fairness. For example, in many board games, players who have a significant advantage over the others because of the turn order will start with less resources to compensate their advantage. In online games, the large downtimes are often fixed by introducing a fake simultaneity to the turns, in which players all interact and modify the game state at the same time: this causes further problems, because it violates one of the core advantages of the genre: that you can play at your own pace. Good examples of this kind of mechanics can be found in recent successes of the genre: the Civilization games, Old World, or Humankind.
- Ignore the problems, and live with the fact that your game has large downtimes and can be a bit unfair. This can be fine for games mostly played in multiplayer over email or hotseat. The Heroes of Might and Magic series would be a good example of this.
- Really make the turns simultaneous. As far as I know, this has not been done in a massively successful way up to now (do feel free to make recommendations if you know a game that does this well, actually!)
This last solution is the one that we are currently exploring for Almanach. It is a way to have the advantages of sequential turn-based games (depth of strategy, playing at your own rhythm, simplifying situations which would be complex in real-time), without some of its problems (turn order problems, large downtimes). In order for a game to really be simultaneous, player actions during their turn cannot affect the state of the game: in essence, players are giving orders to be carried out later, at a specified moment when the orders of all players are performed simultaneously. So why don’t game designers do this more often? There are are two main reasons.
First: because it makes the design a lot more complicated, and there aren’t very many examples of games to get inspiration from. You can’t really just design the rules of your game and then add simultaneity on top of it; it is a core feature of the game, and you need to design it from the ground up with it in mind. Example: let’s think about chess, which is a relatively simple game in terms of the action which you can do (essentially, move one piece at a time). You can’t really just tell both players to write their move secretly and subsequently play them at the same time, because there are a bunch of new edge cases where the actual rules of chess are just not really defined. What happens if both players decide to move a piece into the same square at the same time? If a pawns moves diagonally to take something which isn’t there anymore? If both players are mate simultaneously? Even if you do manage to define what happens in all of the edge cases, is the game still fun?
Second: separating the giving of orders from their actual realization deprives the player from immediate feedback, which slightly undermines the simplicity concept behind turn based games. Sequential (that is, non-simultaneous) turn-based games can impact the game state at every action that the player takes: if you order a unit to move from one tile to another in Civilization or Old World, the unit moves, and your next action has to compose with the fact that this unit now is on the new tile. This cannot happen in simultaneous play, because the game state cannot change during a player’s turn. How do you convey to the player that he has given an order, if it is not immediately carried out? How do you keep the game readable if a player is giving 3, 4 or 12 orders simultaneously?
Simultaneous movement in Almanach
In Almanach, units move on a map consisting of hexes, quite similarly to other games of the genre like Civilization V&VI, Old World or Humankind. Terrain can influence movement (you can’t walk through cliffs, or over water, for example), and the positioning of your troops will have a strong influence on the outcome of a fight.
So how do you give simultaneous orders in such a context? Those orders should ideally be easy to give, easy to remember and easy to modify. With this in mind, have a look at this gif:
Essentially, the manipulations that you have to do are similar to other games: select a group of units with a left click, then give an order with right click. Holding a right click down allows you to check the path the different units in the group will take. Where the difference lies is that the order is not carried out immediately when the right click is released: you can change your mind and give a different order at any time before finishing your turn, which will then supersede the previous one.
Once an order is given, an arrow remains visible on the map and the concerned units move to the tip of that arrow, to help you remember where everyone is going. There are of course still some issues with this, notably with the placement of units at the tip of arrows (as you can see at the end of the second gif), but overall we are pretty satisfied with the general flow.
Next step: how do these units interact with units from a different faction? Do they fight? What does a fight mean, and how does it happen? We will answer this question and many more in the next blog post in this series 😛
If you liked this post, be sure to support us by subscribing to our newsletter, letting us know what you think in the comments below, or join our community Discord server! Hope you enjoyed, and we’ll see you next time!