A game loop is a long series of small decisions with a legal action set you already know. That is a Jev-shaped problem: one state, a short list of options, and code that applies the result. The bots below differ in what they put in the state and in how many requests one tick costs.
One snapshot, then a short list
clash-jev plays Clash Royale on a real phone. The laptop reads H.264 over adb, OpenCV and a small hand-labeled network name the troops, and once a second that becomes JSON. Jev picks a strategy from a fixed list of twelve, then a card, then a legal square. A play is three requests. Choosing not to play is one. Nothing in the bot is trained to play.
The write-up is explicit about what the state is not allowed to contain. Measurements only: no playable flag and no list of counters. When the state included counters, the "right" card jumped to 98%, and that number was measuring the list. Option text defines a strategy. It does not say when the strategy is wrong. If Jev picks a card the player cannot afford, the bot taps nothing and the log still records the pick. A failed request plays a baseline move under a different source, so later analysis does not count it as Jev. About twenty matches ran 150 to 200 requests each, around $0.004 a match. Automating play breaks Supercell's terms. Treat the repo as a study of how to ask, not as a client to ship.
Planner and decider
The Minecraft agent splits the turn. A planner sets the objective, the items, and a waypoint. Jev selects one bounded action from current observations: travel, mine one block, collect, craft, open a chest, eat, sleep, or a combat interaction. Mineflayer does the path and the protocol. The verified run nether-final-08 finished in 8 minutes 43.300 seconds with 131 Jev decisions and 35 planner calls, starting from an empty inventory and killing the dragon with six bed explosions. The published ids are openai/gpt-6-astra for the plan and typesafe/jev-1.13 through OpenRouter. The recording used Survival with Peaceful difficulty and a seed that was surveyed in advance. There is no license file, and the video stays out of the repository.
That split is the useful pattern when the horizon is longer than one tick. Jev should not be asked to invent the route. It should be asked which of the currently legal actions serves the objective the planner already wrote down.
The earlier loops
TypeSafe Mario, jev-plays-pokemon-red, Jev plays StarCraft, and jev-drone are the same contract at different speeds. Mario and Pokémon keep a small legal set and a structured observation. StarCraft records the probabilities next to an explicit victory check. The drone cookbook is the official version of a tick: state in, questions out, code applies the action. Valen is the open multimodal variant, scoring a board image without generating tokens. Its preview checkpoint solved one Sokoban level in 9 decisions and 1.13 seconds of decision time.
What a tick should contain
- A state of measurements, not of your conclusion.
- The full legal list, including the option to wait, even when one option is obviously legal.
- One request per decision step when the options would otherwise multiply into near-duplicates. Clash Royale uses three. A single tick with a handful of actions can stay one call, which is the batching rule in one request, many questions.
- A log that separates a model pick from a fallback.
The demos category collects the playable ones. Copy the question design. Leave the game clients in the research repos they came from.
