Turn Based, Simultaneous Execution
- an Introduction
By Jørn "Innocence" Gaarde
Everyone who has ever played a strategy game knows
what turn based means: It means the players are taking turns moving their
units. So the first player moves all his units, then the next player takes his
turn, then the next, and so on until all players have moved. Very simple and
straight forward, and when dealing with board games probably the only usable way to
control the action.
This is most likely what the computer
game companies thought, as is evident from the majority of titles that use this
model, including the classic Civilization series.
There are however a couple of very serious flaws
with this model:
- It's unfair
- It's time consuming
- It doesn't handle idle players(dropouts) well
- It's prone to cheating
Let me elaborate on these points:
Unfair?
How many times you have been in a game where you had major reinforcements enroute to fortify one of your main cities? Your next move will place the units in the city, but since the enemy moves before you he's able to capture the city right in front of your mighty army. That sucks - in the real world both your troops would have moved at the same time. Your reinforcements would have reached the city in time and you wouldn't have lost it.
Time consuming?
Take the example of a classic turn based game played over the
Internet with players all over the world in different timezones. It'll take an hour or so
for each player to make a move and pass it on. But the next player might not
run his turn before the following day. So with two players it'll take two days
to make a turn. For ten players ten days and so on. So it'll be at least ten
days from when you've made a turn until you get another turn... Unacceptable.
Dropouts?
Say Player A has mailed the turn to Player B, but after three days
Player C still hasn't received any turn, and after failing to contact Player B
it becomes evident that he's nowwhere to be found and has most likely lost
interest in the game. Given that there is a way to skip a player's turn in the
game, Player A must now mail his turn to Player C, and after five days of waiting
the game can continue.
Cheating?
We all know this situation in single-player games: You are about to
move your units into a large and very decisive battle. What do you do? You save
the game, attack the enemy and if you loose you reload the turn and try
something else. See the problem? Who's stopping a player from doing the same thing in
multiplayer games? A player could save and reload the turn until he gets the results he
wants, then forward the turn to the next player. When you receive a turn and
the last player won an nearly impossible battle over you, how can you really be
sure he didn't cheat?
The solution?
So what to do? Well, the solution to all of these problems is a
turn based, simultaneous execution model.
So what is it?
Glad you asked! The basics go like this:
One person is appointed game Host. This person, who
might be a player as well, sets up the gameworld and rules, then sends each
player a separate turn file.
The Host is the only person who can generate
a turn in the game! See, players don't move their units physically in game -
they only give Orders. Using Chess as an example, instead of moving your Queen
from B2 to B4, you'll give the Order "Next turn move my Queen from B2 to
B4". So generate means that the Host utility will collect Orders
from all players, then execute all Orders at the same time, hence the term
simultaneous execution.
Naturally you wont have to write down the Orders -
in fact such games play much the same way as classic turn based games, since the
game generates the Orders for you from the decisions you make while reviewing your turn. For example, you simply tell your unit to move to a particular place, and the game will create the appropriate Order set for you to send off to the host.
Once the players have received their first turn, the
game process loops in the following way:
1) Each Player opens his new turn and state Orders for the next turn,
then sends this Order file to the Host
2) The Host sets a deadline for the Order files to be due, then
generates the new turn and sends a new turn file to each player.
Repeat from 1 until a winner is declared.
See how this deals with the flaws mentioned
before?
- It's fair: All Orders are carried out
simultaneously in the Host program
- It's less timeconsuming: It doesn't matter
if there are two players or several thousand since they can all plan their
Orders at the same time.
- It ignores dropped players: If a player
doesn't send in his orders it wont matter a bit, since the Host will generate
anyway just without new orders for the dropped player's units.
- It's impossible to cheat: A player cannot
save and reload since the Host generates the turn. And since the Host file
contains a exact copy of the player files, player can't even hack their files
to add units and more, as the host would simply deny the inconsistency.
Furthermore, each player's turn file only contains data for that specific player.
So even if a player hacked the file to find out where the enemy was he
wouldn't be able to get any extra info, simply because it only contains data the
player has knowledge of.
Turn based, simultaneous execution vs. simultaneous
turn based
Some games use a third turn based model: In these games all players
must be connected online with each other, and thus have much in common with
the Real Time Strategy (RTS) genre. Unlike RTS,
the game still runs in turns and players move units about like a classic turn
based game, but do so simultaneously in real time. This simultaneously turn based
(real time) model has nothing to do with the turn based, simulatneous
execution model described above, yet they are often confused.
Examples of Classic Turn Based, Turn Based, simultaneously execution and Simultaneous Turn Based games:
| Classic Turn-Based |
Turn Based, simultaneous execution |
Simultaneous Turn Based (Real Time) |
|
Civilization I and II (and quite possible III as well)
|
Stars! |
CivNet |
| Alpha Centauri |
Combat Mission |
Age of Wonders |
|