“a vehement journey to death”
IVAN models your body one part at a time. Parts come off. A severed part is food — so when you try to eat your own arm, the game stops and asks whether you are sure, because you may still be able to put it back.
Play in your browser
5 MB · nothing to install · no account
Chrome 85+, Firefox 79+ or Safari 15+
Your run lives in the tab. Closing it loses the game — saving to the browser is not wired up yet.
| StrengthModifier | 200 |
|---|---|
| Roundness | 70 |
The large hedgehog bites you in the head! You feel quite happy.
Every one of them is Category = FOOD and IsSadistWeapon = true.You gather bananas for a living. The viceroy of the colony needs a message carried to high priest Petrus in Attnam, and the only route is an underwater tunnel he describes as infested with monsters but probably fine.
This is the whole plot, and the game means all of it sincerely. What follows is the part where you lose an arm to a hedgehog.
You couldn’t possibly have guessed this day would differ from any other. It began just as always. You woke up at dawn and drove off the giant spider resting on your face. On your way to work you had serious trouble avoiding the lions and pythons roaming wild around the village.
After getting kicked by colony masters for being late you performed your twelve-hour routine of climbing trees, gathering bananas, climbing trees, gathering bananas, chasing monkeys that stole the first gathered bananas, carrying bananas to the village and trying to look happy when real food was distributed.
The game’s opening screen · Main/Source/game.cpp:790
Frame 594 of a recorded session, replayed to the same pixel every time.
The red HP is not a coincidence — the zombie is still there.
Everything in IVAN is made of something, and the something has opinions. These are counts out of the game’s own data files.
Each with a strength, a density, a colour and a patron god. A sword’s
material decides whether it bends. A banana peel has
Flexibility = 10, which is why you slip on it.
They have bodyparts too, and the same rules apply to theirs. This is why you can end a fight holding something that used to belong to the other party.
Tracked separately, damaged separately, lost separately. Losing a leg is not a number going down; it is a leg on the floor.
The soundtrack is adaptive: instruments fade in as your worst body part gets worse. At full health most of the notes are silent. Getting hurt is how you hear the rest of the song.
Move with the arrow or numpad keys. Press ? in the game for the full list — there are forty-odd commands and these are the ones you need in the first ten minutes.
| ←↑↓→ | move, or attack whatever is in the way |
| > | go down, or enter an area |
| < | go up |
| , | pick up item |
| i | inventory menu |
| E | equipment menu |
| e | eat |
| a | apply item |
| h | rest and heal |
| p | pray to gods |
| ? | show key layout |
| S | save and quit |
Main/Source/command.cpp:92
106,232 lines of C++ compiled to WebAssembly with Emscripten. The game logic is unchanged — the same code, on a different target.
Sound and music are the exception: those are played by the page rather than by the module, which keeps 60 MB of audio off the first load.
IVAN shipped with no tests. Before any of this, the fork grew a differential harness: record a session, replay it, hash every frame. Native and WebAssembly builds now produce byte-identical traces, screenshots and save files on both committed corpora.