Metag Studio presents · An AI-native real-time tactics game

Command Intent
You speak. They fight.

In development · Unity · PC

You are the platoon leader. Give orders in plain speech. The platoon answers on the radio, asks when an order is unclear, warns you when a plan is weak, and AI soldiers carry it out. You never click a single soldier.

Try an order
PTT · 0.3× time Support squads, suppress the church. The two nearest the main gate, go in. Everyone else, hold.
Support 1
suppress
Support 2
suppress
Breach 1
move · run
Breach 2
move · run
Breach 3
hold
Anti-armor 1
hold
Anti-armor 2
hold
Recon 1
hold
1 sentence · 3 intents · 8 squads taskedRadio: Support One, Support Two suppressing. Breach One, Breach Two moving on the gate.

AI-native · two-way

The game talks back

A classic RTS takes clicks and gives silence. Command Intent is built on language models from the first line of code, so every order is a conversation. The platoon acknowledges, asks, warns, reports and improvises, and you answer in the same breath.

Radio net · one minute of playMission clock 06:12
  1. YouBreach team, take that tank.
  2. Platoon AIBreach squads carry no anti-tank. Anti-armor Two is 60 metres from it. Send Anti-armor Two instead?
  3. YouYes. Breach team keep the gate.
  4. Platoon AIAnti-armor Two moving on the tank. Breach One, Two, Three holding the gate.
  5. Breach 2Taking fire from the roof. We can't lift our heads.event: under_suppression · S2 · awaiting orders
  6. YouSupport, hit that roof. And from now on, suppress anything you see, don't wait for me.
  7. Platoon AISupport One, Two suppressing the roof. Standing order updated: Support squads fire on contact.set_standing · t2 · on_contact: suppress_nearest
  8. Breach 2Moving again. Jansen is hit, he's walking. Medic?event: unit_wounded · S2 member 3
  9. YouMedics to Breach Two.
  10. Anti-armor 2Tank's hull is turned toward us. Taking the side shot.L2 improvises: fire_at(E7, aspect:flank)

It understands references

Name things the way you see them. Visual traits, places, squads and people all resolve on the live battlefield.

"the one in the yellow cap" · "the house with the radio" · "Jansen's squad"

It asks when unsure

Two squads tied for "nearest"? A squad name that doesn't exist? The platoon asks one question instead of guessing. Say "both" or "forget it" to close it.

"Breach Two or Breach Three? Both are 40 m from the gate."

It warns you

The AI knows each squad's strengths and gaps. Send the wrong squad and it offers the right one. A suppressed squad with no medic triggers a suggestion before you ask.

"Breach One has no medic. Send the platoon medics?"

It reports, one thing at a time

Squads handle cover, return fire and deployment on their own standing orders. Only what needs the platoon leader reaches you, queued by priority like a real radio net.

"Breach Two suppressed at the sandbags. Awaiting orders."

You change the rules by talking

Standing orders are sentences. "Don't advance without me." "Fire on anything you see." Say it once, and the squad behaves that way for the rest of the fight.

set_standing · advance: manual

Soldiers act like people

Veterans improvise a better position. Rookies fire early. A suppressed squad panics or holds. Every outcome is narrated back to you by name, and it did happen.

"Alpha-2 took one for the sniper team."

The ceiling of classic RTS

Tactical depth has been locked behind APM for 25 years

Real-time strategy never lacked depth. It lacked a way to hand that depth to ordinary players. A bounding retreat is one paragraph in a field manual and twenty precise actions on a mouse.

Classic RTS · bounding retreat 20 actions, uninterrupted

select squad A → pick fallback point → wait → select squad B → fallback → reselect A → … repeat until clear. One slow hand and the whole squad is gone.

Command Intent · bounding retreat 1 sentence

“Breach One and Two, alternate cover and fall back to the extraction point.” → interactive_retreat. The two squads become partners: one fires while the other moves, and they rotate on their own.

Players understand tactics. Their hands can't keep up with their heads.

Experience

Four tactics an RTS can't express. Now one sentence each.

Each order is spoken by the player, translated by the model into primitives, and executed on the field. Nobody reads JSON. You say it, and it happens.

Bounding retreat fire & move

Breach One and Two, alternate cover, fall back to the extraction point.

interactive_retreatpartner

Two squads become partners. One shoots while the other runs to the next cover, then they swap. Nobody is waiting on your next click.

Bait and ambush conditional trigger

Sniper, wound the patrol. Don't kill him. When they come to pull him out, everyone opens fire from the low wall.

woundwhen: enemy_reached(n05)free_fire

The waiting is done by the model, not by you. The trigger fires on a real battlefield event, so you can turn your attention elsewhere.

Creeping barrage fire & infantry tempo

Mortars, from D1 push one line forward every 30 seconds. Assault squad walks behind the barrage.

barrage_creepfollow

Artillery and infantry are bound to one clock. The barrage advances, the squad advances with it, and the gap never opens.

Infantry and armor combined arms

Assault squad, mount the tank. Dismount at the church door. Tank, keep your front toward column D.

mountdismountset_facing(hull, turret)

Hull and turret face independently. The tank takes fire on its front armor while the infantry rides in and drops at the door.

How it works

The model translates. The engine does the geometry.

Two layers of language models sit between your voice and the battlefield. They output selectors and primitives, never coordinates. Sorting, distance and pathing stay inside Unity, so every order is deterministic, verifiable and replayable.

Input

Your voice

Goal plus constraints, in plain speech. Hold push-to-talk and the game slows to 0.3× while you think.

“the two nearest the gate”
L1 · every 2–5 s

Platoon LLM

Parses intent against the map skeleton, the roster and the event queue. Emits orders as selectors plus primitives, and asks a question when an order is ambiguous.

{nearest:{anchor:"n09",n:2}}
L2 · ×8, on demand

Squad LLMs

One per squad, with only its sector, four slots, standing orders and local contacts. Turns an order into a sequence of atomic operations.

stack_on → breach → clear_room
Execution

Unity

Resolves selectors into squad lists, runs NavMesh pathing, physical ballistics and armor math, then reads the result back on the radio.

“Breach One, Breach Two moving.”
Classic RTSUnit level

Select, move, attack. You manage every soldier.

Company of HeroesSquad level

Squad movement and cover. Still driven by the mouse.

Command IntentIntent level

Objectives, constraints and coordination. Driven by speech.

Atomic operations the squads execute

move_tofollowretreat_tohaltfire_atwoundsuppresscease_fireset_stanceset_facingtake_coverthrow_grenadeobservemark_targetset_formationset_spacingdeploypack_upbreachclear_roomcall_firetreat_casualtymountdismount

Every primitive takes the same target object, the same conditional modifiers (when, until, after_sec) and refers to places by named map anchors rather than compass bearings. The static map and roster live in the prompt cache, so a 20-minute battle stays affordable.

Eight squads · four templates

More units than an RTS. Fewer words than a phone call.

A platoon is eight four-man squads under your direct command. Squads are built from templates you design and name yourself. A battle allows at most four templates, so a squad's name is its capability sheet.

Assault

AssaultAssaultAssaultMedic
cqb · breach · medic · no ranged

Returns fire on contact, takes cover when suppressed, self-aids the wounded. Advances only on your order.

Support

Machine gunnerAssaultAssaultMortar
suppress · indirect · no medic

Deploys on arrival, suppresses the nearest enemy group on contact. Never advances on its own.

Anti-armor

AssaultRPGAssaultEngineer
at · mine · demolition · no medic

Opens fire on armor automatically. Against infantry it only defends itself.

Recon

AssaultSniperAssaultMedic
ranged · mark · medic · low firepower

Marks targets without firing. Falls back the moment it is spotted.

Armor

CommanderGunnerDriver+ 1 tank
heavy armor · direct fire · carry · weak rear

Free fire. Turns its hull when its flank or rear is exposed. A fixed official template.

the three on the left→{side:"left", n:3} all support squads→{template:"t2"} anyone with an RPG→{caps:["at"]} the rest→{rest:true}
≤4

Templates per battle

Working memory holds about four chunks. Your template library is unlimited; a single battle draws from at most four. The name you gave a squad tells you what it can do.

0

Fixed groups

No squads, no sections, no control groups. "The two nearest the gate" and "the rest" are resolved by the engine on absolute map coordinates, each time you speak.

1

Decision at a time

Squads look after cover, return fire and deployment under standing orders. Events that need the platoon leader queue up and arrive one by one, like a radio net.

0.3×

Time while you talk

Hold push-to-talk and the game slows. Think the order through, speak it once. Target pace: four or fewer orders per minute.

First playable mission

Five Minutes to Extraction

A ten-minute mission on a 200 m × 200 m map, built to make the difference from a classic RTS obvious in three acts. The player has only four commands, and each one shows a different kind of intelligence.

MOVESUPPRESSRECONFALLBACK
Act I · 00:00–02:00 · Conditional kill

The one in the yellow cap

Sniper. The one in the yellow cap. Wait until he reaches the door, then shoot.

The countdown reads 5:00. Your sniper team lies prone on the ridge above the village while a high-value target patrols the courtyard. You can shoot now, wait for the doorway, take the guards first, or wound him and let his rescuers walk into the scope.

Roger.Target down. Two tangos neutralized.
Act II · 02:00–05:00 · Search

One word, a whole behavior chain

Into the village. Search for documents, the weapons cache and the radio.

The squad picks its own cover, bounds wall to wall, kicks the door, clears the room and turns the house over. You gave one order. The AI did the rest, and reports each item as it is found.

Documents secured.Weapon cache found.Radio recovered.
Act III · 05:00–10:00 · Bounding retreat

We are compromised

Fall back.

The timer hits zero and enemy waves pour in from three street entrances. Alpha and Bravo come up from the landing zone to receive you. One word, and the platoon runs a textbook bounding retreat along the cover chain into the tree line.

Alpha covering!Bravo moving!Move! Move!
ABCDE 12345 n02 sniper ridge n06 church n08 courtyard n09 gate ✚n19 spawn ✚n14 spawn ✚n15 spawn n17 LZ A · RIDGEB · VILLAGEC · STREETD · FOREST ■ friendly spawn ◎ objective ✚ enemy spawn ■ extraction - - retreat axis Grid cell 40 m × 40 m. Orders name anchors (n02, n09…), never compass bearings.
A

Ridge sniper point

Ten metres up. Drone view and a sniper's line over the whole village, but not untouchable.

B

Village objective

Four sandstone buildings around a courtyard. Doors, windows and corners are the conditional firing points. Evidence sits in three of them.

C

Street firefight

A long, straight main street for the fire line and a side alley for flanking. Three enemy entrances, random waves, a cover chain built for leapfrogging.

D

Forest extraction

Low visibility, thick cover, fewer enemies. The place where the player finally exhales.

After the battle

Every fight leaves a memory only you have

When the mission ends, the model writes an after-action report from one squad leader's point of view. The soldiers in it carry the names you gave them, and with permadeath switched on, the one who didn't make it is gone for good.

AAR · Extraction #07Narrator: Bravo squad leader
“Bravo's squad leader pulled the sniper team out for the third time. Alpha-2 was hit during the bounding retreat but kept suppressing until the last rotation.”
Objective
HVT killed · evidence recovered
Casualties
1 serious, 2 light
Extraction
Successful, 09:41
Orders spoken
11 in 9 min 41 s

They talk during the fight

Wounded soldiers call for the medic. Suppressed squads tell you they can't move. A veteran reports a better position before you ask for one.

Names you chose

"Breach One" is a squad you built and named. Losing it weighs more than losing "Squad 3".

Replacements are new people

Between battles, slots are refilled by template. The replacement gets a new name and an empty record.

Templates are the meta-loop

Support got overrun because it had no medic? Swap a rifleman for a medic, change its standing order, and test it next battle. Configuration depth stays before the fight, out of your working memory during it.

Platform

An open CLI, and an esport for the age of language models

Spoken orders have an expressive ceiling. A multi-stage, looping, stateful tactic is a program, not a sentence. So the same atomic-operation API the model uses is open to players as Lua tactic macros, running in a sandbox inside the engine.

-- creeping_barrage.lua · written by the model from a spoken idea
function creeping_barrage(ctx)
  while ctx.line < ctx.target do
    artillery:barrage(ctx.line)
    wait(30)
    if squad:any_wounded() then
      artillery:pause()
      medic:assist()
    end
    if enemy:armor_seen() then
      anti_tank:insert("left")
    end
    assault:follow("barrage")
    ctx.line = ctx.line + 1
    coroutine.yield()
  end
end

You don't have to write code

Describe the tactic. The model writes the Lua, a headless simulator validates it, and it lands in your tactic library under a name you choose. Templates define who; macros define how. Both carry a share code and an author credit.

Spoken idea→Model writes Lua→Simulated→Tactic library→Called by name in battle

Live code as a strategic resource

In a match, a model writes a complex macro in 10–20 seconds, during which only basic orders are available. That delay is the "build time" of this esport. Spectators see the battlefield and a one-line intent subtitle; the code streams in a side panel for commentators. Every prompt, code hash and replay is archived, so a tactic can be proven to have been written live.

Main format

Human + model teams

A human platoon leader with the model of their choice as staff officer. The model is the player's equipment; model vendors are natural sponsors.

Showcase

Model vs model, 8 on 8

Fully autonomous. A benchmark you can watch: who flanks whom is obvious from the map, and a bad conditional is visible drama.

Pure skill

Unified-model bracket

Every team on the same model. Removes the model gap and leaves only the commander.

Roadmap

Prove the experience, then open the content, then the platform

Each milestone has a measurable gate. Nothing moves forward until the previous gate holds.

M1–M3

Three-squad mode

Semantic command, atomic operations, prompt-cache cost. Partially complete.

Foundation
M4a

Eight squads

Player templates, selector language, event queue. Gate: ≤4 orders per minute, selector accuracy ≥95%.

Experience
M4b

Template editor

Build, name and share squad templates by code, with author credit.

Content
M5

Open CLI

Lua tactic layer, sandbox, simulation and validation pipeline.

Content
M6

Tournament mode

First human + model exhibition match, with archived prompts and replays.

Platform

RTS spent 25 years teaching you to click. We let you speak, let the model act, and let everyone watching understand.

Metag Studio

Building Command Intent

Metag Studio is the team behind Command Intent, an AI-native real-time tactics game built in Unity on a two-layer language-model command stack. We are talking to publishers, model vendors and playtesters.

Contact
  • Publishing and investment
  • Model vendor partnerships and the esports format
  • Playtest and demo requests
  • Press and content creators