Verified complete solves and AI exploration runs for Z-machine games
These walkthroughs play the game start to finish for a perfect score,
verified by deterministic replay (scripts/replay_solve.py)
against a fixed RNG seed. The JSON includes the full command list and
a step-by-step score timeline; the text file is a plain command script.
| Game | Score | Won | Turns | Commands | RNG Seed | Download |
|---|---|---|---|---|---|---|
| 905 | win (unscored) | Yes | 0 | 20 | 1 | JSON | Text |
| acorncourt | 30/30 | Yes | 18 | 18 | 1 | JSON | Text |
| advent | 350/350 | Yes | 290 | 289 | 3 | JSON | Text |
| adventureland | 100/100 | Yes | 146 | 146 | 3 | JSON | Text |
| allroads | win (unscored) | Yes | 0 | 185 | 1 | JSON | Text |
| amfv | win (unscored) | Yes | 0 | 623 | 1 | JSON | Text |
| balances | 51/51 | Yes | 123 | 124 | 1 | JSON | Text |
| ballyhoo | 200/200 | Yes | 413 | 415 | 1 | JSON | Text |
| castle_adventure | win (unscored) | Yes | 67 | 277 | 1 | JSON | Text |
| cloak | win (unscored) | Yes | 4 | 5 | 1 | JSON | Text |
| coldiron | win (unscored) | Yes | 89 | 30 | 1 | JSON | Text |
| cutthroats | 250/250 | Yes | 416 | 264 | 1 | JSON | Text |
| deadline | win (unscored) | Yes | 10 | 129 | 1 | JSON | Text |
| deephome | win (unscored) | Yes | 11 | 315 | 1 | JSON | Text |
| detective | 360/360 | Yes | 45 | 45 | 1 | JSON | Text |
| dreamhold | win (unscored) | Yes | 0 | 438 | 1 | JSON | Text |
| edifice | win (unscored) | Yes | 136 | 142 | 1 | JSON | Text |
| enchanter | 400/400 | Yes | 300 | 206 | 1 | JSON | Text |
| hhgg | 400/400 | Yes | 521 | 466 | 1 | JSON | Text |
| hollywood | 150/150 | Yes | 395 | 394 | 1 | JSON | Text |
| infidel | 400/400 | Yes | 305 | 306 | 1 | JSON | Text |
| jewel | 90/90 | Yes | 246 | 248 | 1 | JSON | Text |
| lgop | win (unscored) | Yes | 395 | 373 | 1 | JSON | Text |
| library | win (unscored) | Yes | 1 | 37 | 1 | JSON | Text |
| lostpig | 7/7 | Yes | 173 | 173 | 1 | JSON | Text |
| lurking | 100/100 | Yes | 310 | 306 | 1 | JSON | Text |
| minizork | 350/350 | Yes | 440 | 405 | 1 | JSON | Text |
| moonmist | win (unscored) | Yes | 26 | 86 | 1 | JSON | Text |
| pentari | 70/70 | Yes | 35 | 35 | 3 | JSON | Text |
| photopia | win (unscored) | Yes | 80 | 110 | 1 | JSON | Text |
| planetfall | 80/80 | Yes | 5165 | 444 | 1 | JSON | Text |
| plundered | 25/25 | Yes | 192 | 186 | 1 | JSON | Text |
| reverb | win (unscored) | Yes | 4 | 72 | 1 | JSON | Text |
| shade | win (unscored) | Yes | 124 | 126 | 1 | JSON | Text |
| sorcerer | 400/400 | Yes | 390 | 234 | 2 | JSON | Text |
| spellbreaker | 600/600 | Yes | 531 | 422 | 1 | JSON | Text |
| starcross | 400/400 | Yes | 265 | 240 | 1 | JSON | Text |
| stationfall | 80/80 | Yes | 5700 | 375 | 1 | JSON | Text |
| suspect | win (unscored) | Yes | 29 | 110 | 1 | JSON | Text |
| suspended | win (unscored) | Yes | 71 | 72 | 1 | JSON | Text |
| suveh_nux | win (unscored) | Yes | 0 | 102 | 1 | JSON | Text |
| theatre | 50/50 | Yes | 295 | 357 | 1 | JSON | Text |
| trinity | 100/100 | Yes | 485 | 473 | 1 | JSON | Text |
| wearing_the_claw | win (unscored) | Yes | 159 | 160 | 1 | JSON | Text |
| wishbringer | 100/100 | Yes | 162 | 179 | 1 | JSON | Text |
| witness | win (unscored) | Yes | 42 | 56 | 1 | JSON | Text |
| zork1-r5 | 350/350 | Yes | 416 | 418 | 4 | JSON | Text |
| zork1 | 350/350 | Yes | 499 | 431 | 3 | JSON | Text |
| zork2 | 400/400 | Yes | 416 | 386 | 2 | JSON | Text |
| zork3 | 7/7 | Yes | 241 | 216 | 1 | JSON | Text |
Automated exploration output: room mapping and command coverage generated by the solver. These are regression-test fixtures for the z2js compiler, not complete solutions — most do not finish the game.
| Game | Rooms Explored | Commands | Coverage | Download |
|---|---|---|---|---|
| 905 | 1 | 12 | Shallow | JSON |
| acheton | 1 | 12 | Shallow | JSON |
| acorncourt | 1 | 12 | Shallow | JSON |
| adv440 | 1 | 12 | Shallow | JSON |
| adv550 | 1 | 12 | Shallow | JSON |
| advent | 8 | 125 | Partial exploration | JSON |
| adverbum | 1 | 12 | Shallow | JSON |
| aisle | 1 | 12 | Shallow | JSON |
| allroads | 1 | 12 | Shallow | JSON |
| amfv | 1 | 12 | Shallow | JSON |
| amish | 1 | 76 | Shallow | JSON |
| anchor | 1 | 12 | Shallow | JSON |
| anchorhead | 1 | 208 | Shallow | JSON |
| animals | 1 | 12 | Shallow | JSON |
| asylum | 1 | 76 | Shallow | JSON |
| bear | 1 | 76 | Shallow | JSON |
| bedlam | 1 | 12 | Shallow | JSON |
| bluechairs | 1 | 12 | Shallow | JSON |
| booth | 1 | 12 | Shallow | JSON |
| bunny | 1 | 12 | Shallow | JSON |
| candy | 1 | 12 | Shallow | JSON |
| catseye | 5 | 60 | Partial exploration | JSON |
| cheeseshop | 2 | 24 | Shallow | JSON |
| coldiron | 1 | 12 | Shallow | JSON |
| curses | 1 | 12 | Shallow | JSON |
| detective | 2 | 24 | Shallow | JSON |
| devours | 11 | 122 | Broad exploration | JSON |
| djinni | 11 | 401 | Broad exploration | JSON |
| dracula | 1 | 12 | Shallow | JSON |
| dreamhold | 1 | 12 | Shallow | JSON |
| edifice | 1 | 12 | Shallow | JSON |
| enchanter | 1 | 12 | Shallow | JSON |
| enemies | 1 | 12 | Shallow | JSON |
| failsafe | 3 | 30 | Partial exploration | JSON |
| fairyland | 1 | 148 | Shallow | JSON |
| fantasydimension | 5 | 401 | Partial exploration | JSON |
| farm | 1 | 76 | Shallow | JSON |
| jigsaw | 0 | 470 | Shallow | JSON |
| leather | 4 | 391 | Partial exploration | JSON |
| lists | 2 | 24 | Shallow | JSON |
| loose | 12 | 501 | Broad exploration | JSON |
| lostpig | 1 | 12 | Shallow | JSON |
| photopia | 1 | 12 | Shallow | JSON |
| planetfa | 0 | 209 | Shallow | JSON |
| Ralph | 1 | 166 | Shallow | JSON |
| shade | 1 | 12 | Shallow | JSON |
| spirit | 1 | 166 | Shallow | JSON |
| tangle | 1 | 12 | Shallow | JSON |
| theatre | 1 | 12 | Shallow | JSON |
| trinity | 1 | 12 | Shallow | JSON |
| winter | 1 | 12 | Shallow | JSON |
| zombies | 1 | 12 | Shallow | JSON |
| zork1 | 10 | 135 | Broad exploration | JSON |
| zork1-r2 | 10 | 331 | Broad exploration | JSON |
| zork2 | 1 | 12 | Shallow | JSON |
Verified solves (solutions/*_verified.json):
{
"game": "games/zcode/zork1.z3",
"walkthrough": "walkthroughs/zork1_verified_350.txt",
"solver": "replay+seed",
"rng_seed": 3,
"score": 350,
"max_score": 350,
"won": true,
"turns": 499,
"num_commands": 431,
"score_timeline": [ { "step": 3, "command": "enter window", "score": 10 }, ... ],
"commands": [ ... ]
}
Exploration runs (games/results/*_walkthrough.json):
{
"format_version": 1,
"commands": [ "north", "take lamp", ... ],
"rooms": { "1": { "name": "West of House", "exits": [...] }, ... },
"objects": { ... },
"stats": { "rooms_found": 8, "commands_tried": 126, ... }
}