Submission Text Full Submission Page
ATTENTION STAFF: There is an updated version of the movie, please replace the current one (00:34.100): https://tasvideos.org/UserFiles/Info/639194746520296574
Sid Meier's Civilization is a strategy game developed and published by MicroProse in 1991. The premise is deceptively simple: you start a civilization and attempt to become the best one in the world. However, the game has enormous depth and games can often take many hours to complete. The game was hugely successful and is credited with popularizing the "4X" genre of strategy video games.

Sync info

This movie uses the original 720K floppy release, which is GoodOldDays entry 1757.
SHA-1                                     Filename
26c8344b139b330193d3f86de48dfb9853a41c94  disk01.img
d62b42ca840cdc20379abeeaefaa4718f7720f68  disk02.img
ee3e054c335139e15a0f4642bfaefb4e8a850391  disk03.img
545d41895ece3c21069daa8da3bbe3b08a3fe5d1  disk04.img

Make an .xml in the multidisk bundler with these four disks, and then run the .xml as a ROM.

Goal

There are three different win conditions: one is to eliminate all other civilizations, one is to colonize Alpha Centauri, and the last one is to have the best civilization score at the end of time. The first one is obviously going to be much faster, so we're going with that.

Map and city generation

The generation of everything is done in a couple of different phases. First of all, the RNG is seeded based on the current system time down to the second. The map is generated during the intro sequence, and then the enemy city locations are generated just before the map is revealed for the first time.
The enemy city spawning is bizarre. First off, the game will only generate the first two at a time. The third one is generated once one of the other enemies are attacked, and then a FOURTH (???) one is generated after the second one is attacked, despite picking 3 CPU opponents.

Getting the ideal setup

Finding a good setup required quite a bit of brute forcing. Not only do you need some decent geography (with some resources nearby), but everybody must start on the same continent, with enough room for the 3rd and 4th cities to spawn as well.
I made a script to run through thousands of different starting system times to find a suitable habitat for our speedrun. The script would not be able to figure out if the starting cities were connected by land (I'm not quite that advanced yet) but would be able to tell how far apart they are. I looked at two different setups:
  • Cities can be hit in a straight line: one unit starts at home and attacks the first city, then the second.
  • Home city is between enemy cities: one unit attacks the first city, home produces a second unit which attacks the second city.
The game will obviously not spawn your city right next to an enemy city. There seems to be some set minimum distance at around 7 squares.
Because units can move diagonally, the minimum amount of moves between cities is theoretically whatever the highest distance is out of the x and y distance between the two cities, barring any water being in the way. I calculated these distances between each seed and marked any where the theoretical minimum number of moves would be less than 20. I ended up choosing a seed with the home city between the enemy cities, as well as very favorable resources available at the start and two very convenient villages nearby as well.
Even with a good setup, we're not out of the woods yet. The two other cities must be generated in a good place, and you must get reasonable RNG when attacking them, otherwise everything else is pointless. RNG manipulation is fairly limited and is mainly done through waiting an extra turn to attack the cities. Despite these limitations, the other two cities are spawned in good locations on the same continent with fairly minimal waiting.

Relevant mechanics

Difficulty

The game difficulty is irrelevant for this run. The movie syncs on any difficulty, so the hardest one, Emperor, is chosen.

Villages

Villages are a random element that mostly helps you, but can spawn barbarians sometimes. The outcome we're looking for is for it to spawn a friendly unit, specifically the Cavalry. The Cavalry is a horseback unit that is further down the tech tree that has 2 movement points instead of 1, which lets us move twice per turn depending on the terrain. This will obviously let us take fewer turns to get to the destination and requires less screen-switching between units.

Resources

Resources are what's needed to produce units in this game. There are two ways resources are obtained in this run: they are either bought or cultivated from nearby squares. The more resources you gather, the faster you will produce units.

Battles

The chance of a successful attack is fairly straightforward to calculate: take the attacker's attack and divide it by the attacker's attack and the defender's defense added together. Militia have 1 attack and defense, so the odds of a successful attack against another Militia are at 50%. Cavalry have 2 attack so they have better odds at 66.6%.

Movement

Units can have different movement bonuses that dictate how many times they can move each turn. Different terrain has different movement penalties as well. Militia have a movement stat of 1 so they can only move once per turn, but Cavalry have a movement stat of 2 which lets them move twice, as long as the terrain is favorable enough.

Timeline

Setup

EGA is chosen as the graphics setting. VGA has faster map generation but has fade-in and fade-out for many scenes which wastes a ton of time. Choosing 3 opponents, Emperor difficulty, and the default Roman tribe.

4000 BC

Moving up one tile for a better city location.

3980 BC

Building the first city here offers a bit more for resources. There is a nearby Plains tile with horses that a worker is moved to. While we gather enough resources to make a second Militia unit, we can build our first Milita unit by buying the resources required. It needs 50 gold, which is exactly how much we start with.

3960 - 3900 BC

Moving up towards the first enemy city.

3880 BC

Interacting with the village spawns a friendly Cavalry unit that will let us move twice per turn, on top of being superior offensively. Our second Milita unit is also created and starts moving towards the other enemy city.

3860 BC

The second Militia unit quickly reaches another village and spawns another friendly Cavalry unit. This unit will deal with the other two cities. The first Militia unit waits to attack Berlin for RNG manipulation.

3840 BC

The cavalry units start moving quickly towards their targets. Any idle unit will be told to fortify from here on out and will not need to await orders.

3820 BC

Now that all the needed Militia are made, it's best to go into Rome's city display and reallocate resources to prevent any more from being produced. This will save some time later. Also, Berlin is finally attacked. This results in a very favorable spawn location nearby for Germany's second city.

3800 - 3740 BC

The second Cavalry stops in front of Babylon for RNG manipulation. Paris is taken to eliminate another opponent, and then Babylon falls after. This makes the Zulu city spawn in a great location next to the second Cavalry.

3720 - 3660 BC

The second Cavalry quickly moves down and takes Zimbabwe to conquer the earth.

Possible improvements

With a game like this, there could be potential improvements all over the place. The layout of the first and second cities could be a little bit closer. There are better areas to start in, like building on a forest with another adjacent forest (or horses) that would generate 4 resources per turn instead of 3 and get the second militia one turn earlier. I think the RNG was incredibly favorable, especially getting the Cavalry units and generating the third and fourth cities with minimal manipulation. A little bit of manipulation was needed, but maybe there is a seed where that's not necessary. A more sophisticated bot is needed to advance this further.


TASVideoAgent
They/Them
Moderator
Location: 127.0.0.1
Joined: 8/3/2004
Posts: 17795
Location: 127.0.0.1
This topic is for the purpose of discussing #10574: slamo's DOS Sid Meier's Civilization in 00:34.100
Dimon12321
He/Him
Editor, Reviewer, Skilled player (1180)
🇷🇴 Romania
Joined: 4/5/2014
Posts: 1507
Location: 🇷🇴 Romania
So that's how the series begins. I haven't seen any gameplay of Civi 1 before. That's some nice investigation you've done. Yes vote
TASing is like making a film: only the best takes are shown in the premier. https://xkcd.com/3246/
Advisor, Expert player (2950)
Joined: 5/21/2013
Posts: 422
I've slightly improved the movie, here is the updated one: https://tasvideos.org/UserFiles/Info/639194746520296574 It turns out you can go into the options and skip the palace scene. If any staff could update the movie file I would appreciate it.
MESHUGGAH
Other
Skilled player (1969)
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
Joined: 11/14/2009
Posts: 1391
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
Very nice TAS! I played very long time ago, so I'm not sure about this: - Can you save time by disabling the palace scene by removing the checkmark @ Game - Options - Palace? edit: LMAO, I didn't saw the previous comment.
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Challenger
He/Him
Judge, Skilled player (1908)
Joined: 2/23/2016
Posts: 1194
Great research and job with this game! Yes vote.
[HomePages/Challenger|My homepage] Currently working as a Judge and planning new SNES projects for the 2026 year if possible :)
Experienced player (902)
Location: RNG Bullet Hell
Joined: 11/21/2023
Posts: 119
Location: RNG Bullet Hell
The TAS is a great technical achievement, and the game is notable. To me this stands out as a little diamond in a helix of semi-precious stones.
Joined: 4 days ago
Posts: 2
Possibly a bit odd to sign up to comment on this one game, but I know it well and I'm a long time lurker at least! There's a mechanic to stop games ending quickly where a civ will respawn if it's defeated before a certain date. The other civ that shares its colour will show up somewhere else on the map with a new settler. This happened with both of the civs which is why you ended up defeating 4 opponents. What's weird and why I wanted to chime in is that you were supposed to have a third opponent! I'm wondering if you found a seed that produced a map without enough good land for the spawn loop to actually spawn it in. Presumably I can replay the tas and use it to generate a save file for investigation
Joined: 4 days ago
Posts: 2
Actually I'm talking nonsense, it's 3 including the player as the minimum option, not 4 like my dodgy memory thought!

1785109590