Statim plays: one forward pass per move

Each turn a small game engine describes every legal move in one plain sentence. Statim reads them with a one-line strategy and returns a probability for every move; the highest is played. A 13 MB LoRA adapter taught it from the decisions of a hand-written engine heuristic. No LLM, no search. These are the median games of 50 evaluation seeds the adapter never saw.

2048 Step 0
Score: 0 Largest: 2
median game · 19 ms per move
Snake Step 0
Score: 0 Length: 3
median game · 19 ms per move
Othello Step 0
Black: 2 White: 2
median game · 19 ms per move
Tetris Step 0
Lines: 0 Score: 0
median game · 19 ms per move

How it works

Three steps per move. The engine supplies facts, Statim weighs them.

01

Engine lists moves with features

A small game engine enumerates the legal moves, simulates each one step ahead and writes the result as a sentence: merges, empty cells, distance to the food, discs flipped, holes.

02

Statim scores every move in one pass

The sentences go to Statim as one choice question with the strategy as its instruction, through the actions LoRA adapter. One request, one forward pass, a probability for every move.

03

Highest probability is played

The move with the highest probability is applied, the engine advances the game, and the next decision starts.

Measured on 50 games it never saw

Each game played 50 times on evaluation seeds 1–50; the adapter was trained only on games from seeds 100,000 and up. Every player faces the same seeds. Mean over the 50 games.

GameRandom movesStatim, no adapterStatim + adapterEngine heuristic (teacher)
Snake, food eaten0.20.125.422.9
Othello, games won of 50794447
2048, score1,1322,0103,4014,721
Tetris, lines cleared00.0479988*
What it shows

A small adapter teaches the decision model a new kind of choice

  • Without the adapter Statim is close to chance in Snake, Othello and Tetris: it follows the wording of the move names, not the sentences.
  • With it, Snake and Othello reach the teacher’s level: in Snake it eats 2.5 more food per game than its teacher on average (95% interval +0.2 to +4.9), which is not significant per game (sign test p = 0.11).
  • 2048 and Tetris stay below the teacher; a second training run with more 2048 and Tetris games is in progress.
  • One forward pass per move, median 19 ms on an RTX 3070 (p95 31 ms).
  • Live mode runs on the free demo server (2 CPU threads, q8_0 weights), where the same adapter scores Snake 23.9, Othello 40 of 50 won, 2048 3,840 and Tetris 72 on the same 50 seeds; expect a few hundred milliseconds per move.
What it does not show

No search, no pixels, no self-play

  • The engine does the arithmetic: it simulates every move one step and writes the result as a sentence. Statim weighs the sentences; it never sees pixels.
  • No lookahead: no tree search, one decision at a time.
  • Imitation, not reinforcement learning: the adapter learned from the heuristic’s choices, so the heuristic bounds it.
  • Replays: the page plays recorded games; the median-score game of the 50 seeds is shown for each game, not the best one.

* 12 of the heuristic’s 50 Tetris games were stopped at 5,000 moves, so its mean is a lower bound. Snake food, Othello disc margin and 2048 score are the engines’ own scores. Protocol, per-seed results and code: demos/actions.

Inspect the engine or generate your own traces

The game engines, the training data generator and the evaluation are in the repository under Apache-2.0. Replay any seed with demos/actions/run.py.