The Frontier · Experiments in real-time strategy
Speak to your army.
Fight a mind that talks back.
Shards of Stone is a love letter to the RTS games we grew up with. It is also where we try things they never could: giving orders out loud, facing an opponent played by a language model, and chatting with it while it tries to burn your base down.
Voice commands
Say it, and it’s done
Hold V, say what you want, and let go. Your Commander turns plain speech into real orders across your whole base, while your hands and eyes stay on the fight.
Micro a skirmish on one side of the map and say “upgrade all farms” for the other. No hunting for buildings, no switching screens. Ask a question instead, like “what should I build next?”, and it answers without touching anything.
- “Upgrade all farms”
- “Train four crossbowmen”
- “Send idle workers to the gold mine”
- “Research better armor at the blacksmith”
- “Attack-move the army to the enemy base”
- “Build a tower by the east gate”
Needs your own AI key. Your Commander is a language model, so voice commands switch on once you add a key for Gemini, Claude or ChatGPT. An order costs from a fraction of a cent to a few cents, depending on the model. Set it up in a minute →
Easier to play, your way
Classic RTS games ask for fast, precise clicking and a lot of memorised hotkeys. Voice and typed orders give players another way in, whether that’s because of a disability, repetitive strain, or simply preferring to think about strategy rather than click speed.
- Speak or type. The Commander tab in chat takes the same orders as your voice.
- Plain language. No command syntax to learn. Say it the way you would say it to a person.
- It can talk back. Add an ElevenLabs key and your Commander answers aloud, in a voice for your faction.
Push-to-talk currently means holding a key down. Speech recognition works best in Chrome, Edge and Safari; other browsers fall back to server transcription.
LLM difficulty
Your opponent is a language model
Set an AI seat to LLM and it is played by Gemini, Claude or ChatGPT. It reads the state of the battle, forms a plan, writes notes to itself about what worked, and changes course when you surprise it. Two models never play quite the same game.
And it talks. Type in General chat and it answers in character: a gruff dwarf, a trash-talking goblin, a condescending high elf. Taunt it after a raid, wish it luck, or ask how it’s feeling about that second expansion. It will bluff, but it won’t reveal its plan.
General chat · example
- You: nice mine. shame about it
- Goblin Warboss: Take it! Plenty more gold where you ain’t lookin’.
- You: gg?
- Goblin Warboss: GG when yer hall’s on fire, stumpy.
Illustrative. Real replies are written live by the model.
Honest limits
- It plays with the same economy bonuses as the Hard AI, and it is not yet limited by fog of war. Expect a fight.
- It thinks in turns a few seconds apart. A rule-based helper handles moment-to-moment chores like idle workers and retreats in between.
- Single-player only. Multiplayer runs every AI on every player’s machine, and a model never gives the same answer twice, so LLM seats become Hard AI online.
Under the hood
How a model plays a real-time game
A language model can’t click. It also takes seconds to answer, and a real-time battle won’t wait for it. So the game and the model trade turns in a loop. Your Commander uses exactly the same loop, except the snapshot is your side of the battle and the turn starts when you speak.
- 1
The game keeps running
The battle simulates at 20 ticks a second, off the main thread. It never pauses to wait for the AI.
- 2
A snapshot is written
On its turn, the AI’s side of the battle is packed into compact JSON: resources, income, army groups and their health, buildings and queues, what it can afford right now, the map as a grid of zones, and a short memory of its own recent plans.
- 3
The model decides
The snapshot goes to the model you picked. It answers with a short list of orders (build, train, research, attack-move, cast, garrison, trade and more), plus notes to itself for next turn.
- 4
The engine checks every order
Each order is validated against the real rules: can it afford it, does it have the tech, is there population room. Invalid orders are refused, and the reason is sent back on the next turn so the model can correct itself.
- 5
Then it happens
Valid orders run through the same game engine as everything else. A few seconds after the reply lands, a fresh snapshot goes out and the loop starts again.
“Upgrade all farms”, as the model answers it (ids shortened)
{
"cmds": [
{ "c": "upgrade", "b": 412, "to": "animal_farm" },
{ "c": "upgrade", "b": 418, "to": "animal_farm" },
{ "c": "upgrade", "b": 433, "to": "animal_farm" }
],
"notes": "Upgrading all three farms. Lumber will be tight for a minute."
}Turn it on
Bring your own AI key
The models are run by their providers, so they are billed by them. Add your own key and you choose the model and control the cost. Everything else in the game stays free.
- 1
Sign in
Language-model features are tied to your account, so the settings stay with you.
- 2
- 3
Add it in the game
Settings → LLM AI. Paste the key, pick a model and press Test. Keys are encrypted on our server and never stored in your browser.
- 4
Hold V and speak
Start any skirmish, at any difficulty. Your Commander joins automatically: hold V to talk, or type in the Commander tab of chat. That is all voice commands need.
- 5
Optional: an LLM opponent
Set any AI seat to LLM and choose its model. The lobby shows the estimated cost per hour before you start.
Good to know
- Where it works: skirmish against the AI, and AI-vs-AI matches for LLM opponents. Not in multiplayer, and the Commander sits out Dungeon Crawler.
- Cost: each order sends your side of the battle to the model, about 8k tokens in and 500 out. Every Commander reply shows what that order actually cost. For opponents, the lobby estimates cost per hour before you launch.
- Voice replies: optional. Add an ElevenLabs key in the same settings tab.
- Your keys: encrypted at rest on our server and only ever shown back masked.
Estimated cost of one order
- Gemini 2.0 Flash~$0.0010
- Gemini 2.5 Flash~$0.0015
- GPT-4o Mini~$0.0015
- Claude Haiku 4.5~$0.011
- Gemini 2.5 Pro~$0.015
- GPT-4o~$0.025
- Claude Sonnet 5~$0.032
- Claude Opus 5~$0.052
At list prices. Busy late-game battles send more, so read these as a guide.
Also on the frontier
More we’re trying
- Game modes →
Model vs model
Every AI seat picks its own provider and model, so you can put Gemini, Claude, ChatGPT in one match and watch who wins.
- Custom games & mods →
Make games with an AI assistant
Maps, triggers and data changes are plain JSON with published schemas, so an AI assistant can draft a custom game for you to test.
- Play a match →
Watch it back: replays
Every skirmish, AI-vs-AI and multiplayer match is recorded. Save it from the pause menu, then open Watch Replay to play it back at up to 8x, skip ahead or rewind. A replay is the seed and every order given, not a video, so a half-hour match is a few hundred kilobytes. Matches with LLM opponents can’t be replayed yet. New, and still being tested.
- Game modes →
Observer mode for casters
Take the observer seat and watch with a broadcast HUD modelled on StarCraft II: player resources and supply, live production, army and income tabs, auto-follow on the action, and a stream delay so viewers can’t scout for the players.
- How it is tested →
Deterministic multiplayer, in a browser
Up to eight players run the same simulation in lockstep, with state hashes compared to catch a desync the moment it happens.
- Read the dev log →
The simulation runs off the main thread
The whole battle, AI included, runs in a Web Worker, so rendering stays smooth when the fight gets big.
- Play now →
Classic 2D or Modern 3D
The same match can be drawn as hand-baked 2D sprites or as a lit 3D world with living weather. Switch between them with a key, mid-game.
- See them all →
One engine, several games
The same engine runs the RTS, a MOBA, a dungeon crawler and a deck-building card battler.