Manual
The rules
Every number that decides the game, from the engine itself. Nothing here is set by hand per run.
How it works
$CONTROLLER is a pump.fun coin. One open engine reads every buy and sell of it from Solana (the pump.fun curve, then PumpSwap after migration), groups the trades into 2-second beats, and turns each beat into moves of one knight in one endless dungeon.
The engine computes the world once and sends the moves to every browser. Your browser runs the same engine file on the same moves at the same ticks (10 per second), so every viewer sees the same frame. A hash of the state is compared every five seconds; a screen that drifts resyncs itself.
There are no prizes and no payouts. The game is a picture of the chart.
Controls
Buy = A. The knight strikes the foe in front of him; with nobody in front he walks into the next room. Sell = B. Foes crawl out of the dark and join the pack in front of him (at most 5). Every move, each foe counts down and hits back every 5 moves. Silence never hurts him.
Size sets power on a log scale: power = 1 + floor(log2(SOL / 0.03)), capped at 8. From power 5 a buy also cleaves the next foe for half.
| Power | SOL from | Buy hits | Cleave | Sell sends |
|---|
Filters
Some trades move only the price, so nobody can steer the knight with spam:
| Rule | What happens |
|---|---|
| Dust | Under 0.03 SOL: price only. |
| Wash | The same wallet on the other side within 30 s: price only. |
| Beat budget | Over 12 power points per side in one beat: the rest is an echo, price only. |
| Cooldown | The same wallet again within 15 s: a jab of power 1. |
| Excluded | The engine's own infrastructure wallet never moves him. |
The dungeon
A floor has 8 rooms. Rooms 1 to 6 are drawn from the run's seed: a foe (40%), a trap (15%), a chest that heals 20% (15%), a shrine that adds a point of shield (10%), or nothing (20%). The last room is a door, and every 3rd floor the door is a boss: golem on floor 3, warden on 6, a wyrm on every third floor after.
The gate. The door of floor L opens only when the price is at least 3% per floor above the run's starting price. Until then a buy pounds a sealed door. A flat chart never goes deep; a rising one does.
The knight starts with 240 HP, gains 12 per floor and heals a quarter on each new floor.
Quiet and dumps
Sleep. After 180 s without a move he lies down. The next move wakes him. After 10 min of sleep a waking buy strikes twice; a waking sell lets the first foe hit twice. While he sleeps the screen replays real moments of earlier runs.
The dark water. When the price is more than 12% under the run high, dark water creeps toward him from behind, faster the deeper the drawdown. A recovery pushes it back. It is frozen while he sleeps. If it reaches him, the run ends.
Death. The run ends, its record goes into the hall, and the next run's seed is drawn from a Solana blockhash a few seconds later.
Verify a run
The seed of run n is sha256("CTRL1|" + mint + "|" + n + "|" + blockhash), the blockhash taken 32 slots after the last move of the previous run. Every run's start, seed, slot and complete input list are public:
GET /api/run/<n> returns the start and every input; replaying them with the open engine gives the recorded end hash. GET /api/rules returns every number on this page.
The engine is a single JavaScript file with no dependencies. This site loads exactly that file: /js/sim.js. Rules version -.
Fees
The pump.fun creator fee of $CONTROLLER is split on chain by pump.fun fee sharing: 80% to the team, 20% to the infrastructure that runs the engine (servers, Solana RPC). The split is locked at launch and cannot be changed by anyone. Nobody is paid for playing and nothing is given away.