If you wanted to build a video game to model the evolution and complexity of human civilisations, how would you do it?
That is a question so broad, it is virtually impossible to answer without some kind of framework. So let’s establish one: we want a way to represent territory, something that reflects the diversity of terrain on Earth. Some terrain is better than others for farming; some terrain is better than others for mining. Hills are harder to traverse than flat land, while mountains are impassable for regular travel. We need a way to represent fresh water in the environment, because that affects human settlement patterns. We need some way to represent terrain features such as forests and jungles and swamps, because these affect the possible uses for the terrain, and they can also be removed if you wish: forests and jungles can be cleared, and swamps can be drained. As far as the sea is concerned, we need to at least make a distinction between the shallow coast, where fishermen work and where littoral brown-water navies can operate, and the deeper, treacherous ocean that is out of reach without more advanced technology. Oh — and we need some way to reflect that parts of the world are more abundant in some resources than others.
There are many ways to skin this cat, but here’s how Civ VI does it:
(Note: this image is from a True Start Location Europe map, a Civ-generated map of Europe where civilisations spawn at the location of their historical capitals. Most Civ games take place on maps that are Earth-like, but not recognisably Earth.)
The game uses hexagonal tiles, and each tile has a base terrain type and features that sit on top of that base terrain. Some tiles have resources, such as stone, fish and olives. The northern part of Italy contains a mountain range (mimicking the real-life Alps), and this mountain range includes a natural wonder, the Matterhorn.
To make this clearer, I’ve annotated some of the terrain features (white) and resources (red) on the map. The Matterhorn is marked in blue:
This is the first step in trying to model the evolution of civilisation: modelling the terrain. The next question is, how do we quantify the value of the terrain?
Yields Part I: Food, Production, Gold
In Civ, there is a game concept known as tile yield. The yield refers to what each tile produces for the city it belongs to. The three basic yields are food, production, and gold. I’ve turned on the yield icons in the screenshot below, so you can see what each tile yields:
The basic flat grassland tile yields two food (2F, represented by ears of corn). Hills on any tile adds one production (1P, represented by hammers), so a grassland hill tile yields two food and one production (2F + 1P). Woods on any tile adds one production, so a grassland woods tile yields two food and one production (2F + 1P), and a grassland woods hill tile yields two food and two production (2F + 2P).
The basic coast tile yields one food and one gold (1F + 1G, with gold represented by coins). An ocean tile yields just one food. Mountains yield nothing.
The presence of resources and natural wonders affects yields as well. Stone adds 1P to the tile yield, while fish add 1F. Wine adds 1F + 1G, olives add 1P + 1G, while horses add 1F + 1P. Marble adds one culture (1C) which is a yield we’ll discuss later; the Matterhorn also adds 1C to the yield of adjacent tiles.
This is a way for the game to quantify what each tile produces. Obviously this is an abstraction — in real life, not all farming is equal, and not all raw production is equal either — but in a game that operates on such a macro scale, this is an acceptable simplification.
You may notice that the popup on the stone says, in angry red, “Requires Mining”. This has to do with the technological tree, which I’ll talk about in a separate article.
Tile Improvements: Farms, Mines, Quarries, Plantations
The tiles we’ve seen so far are the Civ equivalent of greenfield or undeveloped land, but they do not remain so over the course of the game. Players can build tile improvements on tiles owned by their cities. These include (but are not restricted to):
- fishing boats
- lumber mills
- oil wells
Farms, mines and lumber mills can be built on any suitable tiles (flat grasslands/plains, hills, and woods respectively), while the others can only be built on a resource. Improving a resource tile gives your empire access to that resource.
In this picture here, I’ve built a quarry on each of the two stone tiles. This adds 1P to each of the two tiles:
The stone on the flat grassland was previously producing 2F + 1P; it is now producing 2F + 2P. The stone on the grassland hill is even more productive: its 2F + 2P have now increased to 2F + 3P.
Different tile improvements provide different bonuses. For example, the unimproved Olives tile provides 2F + 1P + 1G (and the angry red words tell us the tile “requires Irrigation”):
After building a plantation on the Olives tile, the tile now yields 2F + 1P + 3F:
(The eagle-eyed may notice that the tile’s appeal has fallen, from 5 to 4.)
In terms of modelling, it’s pretty clear what tile improvements model. Some areas are naturally richer in resources than others, which is where the base bonus to food or production or gold comes from. Imagine a region rich in, say, wild rice. That area provides you more food than an average grassland region without that wild rice. However, if you could domesticate that rice… that would provide you even more rice, even more food, per square metre.
Of course, tile improvements require technology. Before I discuss technology modelling in Civ VI in a future article, there’s something else that’s important to explain about the Civ VI model.
Modelling Time: The Turn
Full Civ VI games start in the year 4000 B.C., and end in the year 2050 A.D. These dates are arbitrary, of course — civilisation didn't begin in 4000 B.C., the empires featured in the game didn't (and don't) span that time frame. Some Civs in the game have histories that extend before 4000 B.C. (in particular: Sumer, China, India). Nonetheless, the game has to start somewhere, and it might as well be 4000 B.C.
To me, the more interesting question is: how do you approximate the passage of time in a game like Civilization?
Many simulation and grand strategy games have a panel with pause, play and fast forward buttons:
When the game starts, the player starts positioning their assets (whether roads, troops or anything else). The player can pause the game and spend some time crafting their next moves, then hit “play” and set the simulation in motion. During particularly slow stretches, the player can fast-forward and run the simulation at 2x to 5x the speed of regular play.
This is the most obvious solution in any game that is explicitly a model of some real-world analogue. Civ could have done the same, starting the game in the year 4000 B.C. and advancing the clock at a base rate of, say, ten years per minute, with the option to pause or fast-forward gameplay as it suits the player.
The problem with this game mechanic is that the speed of human technological, cultural and economic development has accelerated over time. Scientific and social developments have a multiplicative effect on human civilisation’s technological, cultural and economic output. The technological progress that humans made in the year 4000 B.C. is a fraction of the progress that we made in the year 2017. A pause-play-fast-forward game mechanic for modelling time would create a lethargic early game, with an overly dense late game that would test players’ reflexes and attention much more than their strategic abilities.
Instead, the Civilization game series uses a turn-based rather than a real-time game mechanic. Players take turns to make their moves, and each turn represents a predefined timespan. In Civ, earlier turns represent a longer timespan, while later turns represent an increasingly shorter timespan. For example, Turn 1 lasts from 4000 B.C. to 3960 B.C., while Turn 499 represents January to June 2049 A.D. This way, the game remains engaging from start to finish, and the game model more accurately reflects the evolution of human civilisation with respect to time.
Population, working citizens and yield per turn
The combination of yield and turn-based time mechanics gives us the concept of yield per turn. At the beginning of every turn, the game calculates how much of each yield each tile produces, and adds up the totals per city.
Not all cities are the same size, though. A city with a low population cannot adequately work all the resources around it. As the city’s population increases, its citizens start working more and more tiles around the city. A city with a population of 1 receives the yield from the city tile and one other tile within its borders. A city with a population of 5 receives the yield from the city tile and five other tiles within its borders — and so on.
Logically, this would mean that you’d want your cities to be as big as possible, right? That is usually true, but bigger cities also require more food to feed, and that’s where the food yield per turn matters. Each citizen in a city consumes 2F per turn, so a size 2 city requires at least 4F per turn to maintain its population, and a size 5 city requires at least 10F per turn to maintain its population.
It’s hard to explain all of this abstractly, so let’s take a look at an example of this mechanic:
Let’s take a look at an example of this mechanic:
This is the city screen for the city of Ravenna. The number “2” next to the city’s name on the map tells us the city has a population of 2. (This doesn’t mean there are only two people in the city, obviously — the city population number is an abstraction, just like everything else in this model.)
The tile that the city sits on is always worked — that is, the city always receives the yield from the city tile (highlighted in green). In this case, that tile yields 2F + 1P. Additionally, each of Ravenna’s two citizens can work one tile within Ravenna’s city boundaries. In this case, the citizens have been assigned to work the two tiles highlighted in red. The northern red tile yields 2F + 1P + 1S (science, a yield we’ll discuss later in the series), while the southern red tile yields 2F + 1P + 1G.
This gives Ravenna a base tile yield of 6F + 3P + 1S + 1G. Tile yield isn’t the only way for cities to generate yield, but it is one of the most important yield mechanics in the game. (Buildings, city population and specialists are the other main ways to increase city yield, but I’ll talk about those mechanics another time.) After all the yield from tiles, buildings, city population and specialists is added up, various modifiers are then applied to the base yield to generate the city's actual yield per turn.
If you look at the bar above the “Ravenna” interface, you’ll see that each turn, Ravenna generates:
- 2.7 culture (don’t worry about this for now)
- 1.1 surplus food
- 3.1 production
- 2.1 science (don’t worry about this either)
- 0 faith (don’t worry about this either)
- 1 gold
The numbers aren’t all round numbers because there are various multipliers at play here (another topic for another post), but you can see that Ravenna’s gold yield per turn comes entirely from its olives tile (1G). The production base of 3.1P per turn comes from its three worked tiles (1P per turn each), plus a 5% multiplier because the citizens are happy (yet another game mechanic for another post). The city is building a granary, so the 3.1P per turn goes towards finishing that building, which requires a total of 65P to complete. Ravenna's already invested 36P in the granary, so at 3.1P per turn, it will take 9 more turns for Ravenna to finish the granary.
1.1 food per turn might seem surprisingly low, but the city screen is kind enough to break down how the food surplus is calculated, so we’ll take a look at that.
Food surplus per turn: modelling population growth and decline
Breaking up a map of terrain into tiles and assigning each tile a food value — that’s a pretty simple idea. Figuring out how food affects a city’s population is slightly more complicated. All things considered, Civ VI’s model is a very simplified one.
Take a look at the “Citizen Growth” panel on the left of the city screen. The city, with its three worked tiles of 2F each, generates 6 food per turn. The city has a population of 2, so the city consumes 2 x 2 = 4 food per turn. That leaves a surplus of 2 food per turn that contributes towards city growth.
Because the citizens are happy, there’s a 10% bonus applied to city growth, giving us 2.2 surplus food per turn. However, because there is barely enough housing in Ravenna (yet another mechanism to be discussed in a future post), the population growth rate is halved. That’s how we arrive at the final number of 1.1 surplus food per turn.
Under “Total Food Surplus”, there’s a “Growth” bar. Think of the growth bar as a food basket or a granary: the excess food gets added to the food basket every turn, and when the food basket is full, a new citizen is born and the city’s population increases by 1.
A city’s population can also drop if it generates less food than its citizens consume. In that situation, the food surplus becomes a food deficit. A food deficit reduces the amount of food in the city’s food basket, and when the food basket is empty, the city loses a citizen and its population drops by 1.
This model has the effect of scaling city yield with city population, but also produces a natural upper limit for each city based on how much food a city generates. If a city cannot feed itself, it cannot grow. Mature Civ cities reach an equilibrium where the total food surplus is at or close to 0, and stay at that size until the end of the game.
What Comes Next?
Civ VI is a complex game that is pretty challenging to learn. In this post, I’ve laid out some of the key game mechanics that we’ll need to understand in order to do a truly deep dive into Civ VI as a model of civilisation, but there’s a lot more to it. In the next post, I’ll explore two of the most fundamental game mechanics in Civ VI: the technological and civics trees. We’ll talk about how they work, and what kinds of assumptions they make about how progress happens.