# Show HN: A 14M-param world model of 2D Minecraft you can play on your phone

> Source: <https://maharishiva.github.io/tinywmcraft/>
> Published: 2026-11-02 18:48:59+00:00

[GitHub](https://github.com/Maharishiva/tinywmcraft)

# Train a world model in under 10 minutes for $0.1 of compute, and play it!

Every frame below is generated by a 14M-parameter world model on your GPU, one action at a time. Train your own, [autoresearch style](#autoresearch), and beat ours.

now playing: [iteration 3](https://github.com/Maharishiva/tinywmcraft/blob/8538aa5/train.py) by [Maharishiva](https://github.com/Maharishiva)

## autoresearch you can play

Point your coding agent at tinywmcraft: it trains a world model in 10 minutes, scores it, and tries again. Push the score up, then play the model you made: walk around inside it, craft, fight, and see what it gets wrong.

Beat 0.562 and yours is iteration 4: the crown goes next to your GitHub login, and the player on this page switches to your model. Paste this into your coding agent:

The best so far, by the score: how close imagined play comes to the real game in looks, game logic and memory, and how well the model predicts rewards and deaths, from 0 for a trivial model to 1 for the real game.

1. 1[Maharishiva](https://github.com/Maharishiva) 0.562 ± 0.017[iteration 3](https://github.com/Maharishiva/tinywmcraft/blob/8538aa5/train.py) · train.py: shortcut loss, the heads' gradient into the trunk cut to a tenth in the second half, no hard-window mining, 1/8 game-start windows, two fused kernels, 349 lines
2. 2[Maharishiva](https://github.com/Maharishiva) 0.463 ± 0.023[iteration 2](https://github.com/Maharishiva/tinywmcraft/blob/80b1c34/train.py) · tile transformer tokenizer trained on clean, half-masked and noised frames, fused Pallas kernels, hard-window mining, half the windows from game starts, symlog two-hot reward head
3. 3[Maharishiva](https://github.com/Maharishiva) 0.287 ± 0.019[iteration 1](https://github.com/Maharishiva/tinywmcraft/blob/23e6515/train_tiny.py) · train_tiny.py: the whole model in 178 lines, no custom kernels

[the benchmark: score over time, every entry, rules, metrics](benchmark.html)

## 

**Get a diamond  inside the world model**, in the player above, in the fewest steps. The fastest run posted before 24 December 2026 (PST) wins a paper copy of Sutton & Barto's *Reinforcement Learning*. Press save clip, then post it in the [discussion](https://github.com/Maharishiva/tinywmcraft/discussions/9) and on X. Rules: [diamond_speedrun.md](https://github.com/Maharishiva/tinywmcraft/blob/main/diamond_speedrun.md). Found a funny glitch? Post it in the [glitch discussion](https://github.com/Maharishiva/tinywmcraft/discussions/10).

### the road to a diamond

## crafting recipe book

| make | needs | where | 
|---|---|---|
| table | 2 | on an open tile | 
| wood pickaxe | 1 | next to a table; mines stone and coal | 
| wood sword | 1 | next to a table | 
| stone pickaxe | 1 1 | next to a table; mines iron | 
| stone sword | 1 1 | next to a table | 
| furnace | 1 | on an open tile | 
| iron pickaxe | 1 1 1 1 | next to a table and a furnace; mines diamonds | 
| iron sword | 1 1 1 1 | next to a table and a furnace | 
| place stone | 1 | on grass, sand, path, water or lava | 
| plant | 1 | on grass | 

Wood comes from trees by hand, saplings from grass (1 hit in 10); stone and coal need a wood pickaxe, iron a stone pickaxe, diamonds an iron pickaxe. "Next to" is one of the 8 tiles around you. These are the real game's rules: the world model learned them from pixels and does not always keep them. In the real game, the first unlock of each of the 22 achievements is worth +1.

## how it works

tinywmcraft is a world model of [Craftax-Classic](https://github.com/MichaelTMatthews/Craftax), a 2D Minecraft, learned from scratch from pixels and actions alone. Given a history of frames and an action, it generates the next frame, the reward and whether the episode ends; feed its own frames back in and you can play inside it. Every world in the player starts from a first frame the model imagines from noise: nothing is replayed. **13.9M parameters** (5.2M tokenizer, 8.6M world model), trained cold in **under 10 minutes on one A100, about $0.1** of compute.

Colab Pro: $9.99 for 100 compute units, and a 40 GB A100 uses about 5.4 an hour (~$0.55/h). A full submission, three seeds with their evals, is under $0.5.

[inside the model: tokenizer, losses, optimizer, kernels, sampling](model.html)
