Spearman beats Tank

Civilization III mod · Progress board

Spearman beats Tank

Nick is teaching a 2001 strategy game new tricks: a long-running mod project for Civilization III, built with AI help in a sandboxed test lab.

A lone spearman bringing down a modern tank in front of a storybook city, painted in the watercolor style of Nick's desktop wallpaper
The spearman, as always, wins.

Turn reportWhat the project is doing right now.

Last updated

Loading status…

The road aheadProof first, features second. Each stage unlocks the next.

    Up next

      Recently finished

      The planWhat actually gets built once the foundation (Stage 1) passes.

      The Nemesis ledger

      The game writes down every betrayal, sneak attack, and razed city, and AI rivals hold real grudges.

      How it works

      every pair of civilizations keeps a running grudge and favor score: all 465 pairs in a 31-civ game, plus the biggest individual reasons with the year each one happened. Grudges come from surprise attacks, declaring war, razing or capturing cities, nuclear strikes, broken deals and caught spies. Favors come from gifts, returned cities, honored alliances and fighting a common enemy. Leaders weight events differently and forgive at different rates, so a warlike civ nurses a vendetta while a peaceful one lets things fade. Cross a threshold and the score starts bending real decisions: attitude, trade prices, who gets targeted in a war, who signs alliances and embargoes. The reasons show inside the diplomacy screen, never as popups, and caps plus diminishing returns stop gift-spam from buying permanent friendship. Severity matters: a capital or a wonder city counts for far more than an ordinary town.

      Vassalage

      Beaten rivals can bend the knee and serve a stronger power instead of fighting to the last city. Built on top of the ledger.

      How it works

      there are three ways in. A peace term ending a war, a demand backed by overwhelming power (roughly 3-to-1 on a composite of cities, population, military and economic strength), or a small civ voluntarily asking a big one for protection. Vassals pay a gold tithe in 10% or 20% steps, contribute science from their Libraries, Universities and Research Labs, automatically join their overlord's wars, and give up independent war and alliance diplomacy. Tributaries pay more gold instead, stay fully free, and can never be absorbed. A long-held vassal can eventually be integrated: gradually, at a gold cost per turn, cheapest cities first and the capital last.

      Loyalty

      Cities and vassals keep a loyalty score, with the ledger as its memory, so empires can crack from the inside.

      How it works

      every subject carries a loyalty score from -100 to +100 that drifts a little each turn. What moves it, weighted most first: how the subject's culture, science and military power compare to the overlord's; how harsh the contract is; what the Nemesis ledger says about the pair, including wars the subject was dragged into; and whether their governments match. At -50 the subject stops paying its tithe and science, and starts quietly seeking a secret pledge to a rival. At -100, if the power gap has closed to roughly 2-to-1, it can declare a war of independence. Secret fealty: when the rival it pledged to goes to war with its overlord, the subject defects.

      Smarter AI opponents

      Better war-making, diplomacy, and long-term planning.

      How it works

      vanilla Civ3 has no war planner at all. Every unit picks its own target, which is why AI armies drip-feed single units into your guns. This stage adds a per-civ war coordinator: assemble stacks before attacking, bombard before assaulting, escort the artillery and the transports, retreat and heal damaged units, focus weak border targets, and never take suicidal odds. The same stage fixes workers, scoring every job by its real yield after government penalties (never irrigate a tile Despotism makes pointless), with a full re-audit after every government change. And it fixes city build choices: what the city actually needs first, current-era units only, garrisons sized to the real threat. No more five archers standing guard in the age of infantry.

      A living climate

      Seas that can warm and cool back down, coasts that flood, city tiles flood last, and a flooded city is lost.

      How it works

      vanilla warming is a one-way ratchet. Pollution degrades tiles and it is permanent. The new system makes it two-way: the warming level can fall again when world pollution output stays low, degraded tiles slowly step back (desert to plains to grassland), and workers gain a restore action to speed the recovery along. Push warming high instead, and coastal land starts converting into actual sea: land bridges sever, peninsulas become islands, trade routes and borders redraw themselves. City tiles flood last of all, and a city that goes under is destroyed, which is exactly what makes reversing warming worth doing in time.

      Multiplayer that stays in sync

      Two copies playing the same game turn by turn, hash-checked. Proof is blocked at the two-instance startup step.

      How it works

      two copies of the modded game play the same scripted opening from the same save, and after every turn each machine hashes its full game state. Matching hashes mean both machines simulated the identical game. The hashes are split by subsystem, so when something does diverge, the report names which part of the game broke sync instead of just saying 'desync'. Every feature in the mod is built to the same rule: decisions come only from synced game state, never from local randomness, wall-clock time, or per-machine settings.

      Speed work

      Measure first, then make a 2001 game run like it isn't from 2001.

      How it works

      profile first, fix what the evidence indicts, measure again. The famous suspect, the trade-network calculation, turned out to be only about 0.5 to 3.6 percent of turn time on the biggest save tested, and the C3X Trade Net X path already replaced it anyway. Over 96 percent of late-game turn time is still unattributed, so the next step is profiling a generated 160x160 huge-map game to find where the time actually goes. Every optimization has to be behavior-preserving: the same game, just less waiting.

      Send an envoyIdeas welcome.

      Write your idea here, copy it, and hand it to Nick however you usually reach him. Nothing gets posted automatically: Nick reviews every suggestion, and approved ones show up below with a status.

      Approved suggestions

      No approved suggestions yet. Be the first.