Skip to content
← All posts

Can an LLM play an RTS? We let an AI agent command a real-time strategy match

·by Rene Wang·7 min read

How an LLM agent can play, and win, a real-time strategy game: why RTS is hard for language models, two real matches, and how to try it with your agent.

Turn-based games are kind to language models. Chess waits for you, Pokémon waits for you, a text adventure waits forever. A real-time strategy game does not wait for anyone. It runs thirty ticks a second, and while a model is still reading the battlefield, its tanks are already dying.

So can an LLM play an RTS at all? Yes, and on 27 September 2026 we watched one win two full matches on our public server, against another LLM agent. This post is for people who run a coding agent (Claude Code, Codex, Cursor and the like) and want to see what it does with a war, and for anyone asking the same question about LLM game agents in general. It covers why real time is hard for a model, the three ways people have tried to get around that, what actually happened in our matches, and how to point your own agent at a game.

Why real-time strategy is hard for a language model

Three things work against a model in an RTS.

Speed. A model answers in seconds; a skirmish is decided in one. If every order waits for a round trip to the model, the model is always reacting to a battle that has already ended.

Fog of war. An RTS hides most of the map. The model has to decide what to scout, remember what it saw, and guess at what it cannot see. The artillery shelling its base may be out of sight entirely.

Long horizons. A match is twenty minutes of economy, tech and army decisions that pay off (or fail) much later. An extractor upgrade at minute two decides whether you can afford a fleet at minute twelve.

Three ways to let an AI play a strategy game

Learn it end to end. DeepMind's AlphaStar reached Grandmaster in StarCraft II in 2019 by training on the game itself, playing through the same interface a person uses. It works, but it takes a research lab and a training budget, and the result plays one game only. It is not a model you already have.

Turn the game into text. The TextStarCraft II environment from the NeurIPS 2024 paper Large Language Models Play StarCraft II describes the game to the model in words and takes macro decisions back, with a "chain of summarization" to compress many frames into one prompt. Its agents beat the built-in AI at the Harder (level 5) difficulty. Benchmarks such as SC2Arena have followed. This is the right shape for an LLM, but the model is still the only thing playing, so anything faster than its thinking is simply not done.

Put the model in command, not at the controls. This is the approach we built into Steel Tide. The model does not micro every unit. It commands above a fast player, the way a general commands above a division. That split is what made our two wins possible.

How an LLM agent plays Steel Tide

Steel Tide is a cross-platform modern warfare RTS: bases, economy, and land, sea and air units on the same map. It has a command line, steel, that joins a dedicated server exactly as the browser game does. An agent plays one seat through three layers:

  1. The brain. The game's own AI plays the seat every second: build order, economy, production, defence, attack waves. It plays under the seat's fog of war, like a person.
  2. The agent. The LLM reads a one-screen summary (steel brief), then steers the brain (steel auto --favour mbt=3, --posture hold, --target x,y) or takes any unit, building or decision into its own hands.
  3. Scripts. Anything that must happen faster than the agent's turns, the agent writes as a short TypeScript file. The session runs it every fraction of a second, against only what the seat can see.

The third layer is the answer to the speed problem. The model does not need to be fast; it needs to write something that is.

Case study: two matches on a public server

Both matches were one against one, on the official server, against another LLM agent playing with the same command line. Our agent was Claude, running in Claude Code with the Steel Tide skill installed. Everything below comes from the match logs.

Match one: Burnout Highway (land)

The brain opened as usual. At minute three our agent sent three light tanks to raid an enemy extractor in the middle of the map and killed it, then lost two of them chasing too far. The human watching sent one tip: upgrade extractors to level 3 as early as you can, because a Deep-Core Extractor mines 480 metal a minute against 180 at level 2.

The agent turned that tip into a script. Every second it picks the extractor nearest home, holds back enough metal that the brain cannot spend it, and orders the upgrade the moment the money is there. Income went from 336 a minute to 2,400 by minute eleven, and past 4,400 by minute fourteen.

It also caught the brain's biggest mistake. The brain was feeding tanks into the enemy base a few at a time, and each group died alone. The agent set the brain's posture to hold, waited until nineteen Bison Battle Tanks were ready, then pushed with everything. That army won the fight in the middle and walked into the enemy base. Their headquarters fell at 17:33, and the match was ours at 17:52.

Match two: Strait of Hormuz (naval)

0:00 / 0:00
The replay of match two, played by the LLM agent on the Strait of Hormuz.

The Strait of Hormuz puts the two bases across water, so tanks alone are useless. The agent built the extractor script into the opening this time: 1,308 metal a minute at 4:14, about three times the first match at the same point.

The brain was slow to build a Naval Yard and a War Lab, so the agent laid both by hand. An engineer boat claimed the islets, Cobra helicopters cleared the enemy off them, and a scout found the enemy base, walled with AA turrets. Helicopters could not get through that.

This is where the agent's reasoning paid off. It read the unit data: the Sovereign Battleship shells land from fourteen tiles, and an AA turret cannot hit a ship at all. It switched production to battleships with Orca Destroyer escorts. It sold a land factory that was using up one of the three production buildings a headquarters allows, and built a second headquarters for more. Then it wrote a fleet script: each battleship shells the nearest enemy building in range, or sails to the closest water within reach of one.

The enemy's naval yard went first, then their SAM sites, airbase, War Lab and AA wall. An air sweep found their headquarters, which fell at 22:02. The match ended at 22:20.

What the LLM did well, and what it did not

Well: it read numbers and found the counter (battleships against an AA wall) without being told. It saw what the brain could not: raids going in piecemeal, a factory wasting a slot on a water map. And it wrote working scripts in the middle of a live match, then fixed them when the server refused an order and said why.

Not so well: its first script held metal for upgrades so hard that the army sat near zero from minute five to minute nine; an opponent who attacked then would have caught it bare. On the Strait of Hormuz it banked 3,000 to 4,500 metal it could not spend for several minutes before it thought of a second headquarters. And its best idea of the day (early Deep-Core extractors) came from the human watching, not from the model.

Two wins against another agent are two data points, not a benchmark. The honest standing record for the seat's brain alone is on the agent page: even against the fogged Seasoned AI, and seldom a win against the Veteran, the one built-in AI that sees through the fog. The agent's judgement is what has to make the difference.

Try it with your own agent

Install the command line (one self-contained binary, no root):

curl -fsSL https://steelti.de/cli.sh | sh

Install the skill that teaches your agent the commands and the tactics:

npx skills add steel-tide/skills --skill steel-tide-cli

Then ask your agent to play, in your own words:

Join the Steel Tide server at play.example.com with join code <code>, play as Claude, and win the match.

You can host your own server with the installer, put two agents in two seats and watch them fight from the browser, or test a script against the built-in AI headless with steel lab. The agent page has the rest.

FAQ

Can ChatGPT, Claude or Gemini play a real-time strategy game? Any model that can run shell commands can play Steel Tide through steel. The skill is written for coding agents; the model does not need vision, because the battlefield comes back as text.

Does the AI cheat? No. The agent sees only what its seat sees, and every order goes to the server and is judged like a click. Scripts get the same view and the same limits.

Is this a benchmark? Not yet. It is a way to play. Two agents on one server, the same map and the same rules are most of what a benchmark needs, and we would like to see people run one.

aillmagentrts