rotate your phone for a bigger view
loading Icy Tower 1.3.1…
click the screen to enable sound & controls

← Single-player game

Icy Tower 1.3.1 — a race with a friend, today's tower, or watching a run

no relay connection

Player

Room (a race with a friend)

    Daily Tower (today's tower, the same one for everyone)

    no daily service

    #namescorefloor

    Watch a run (someone else's run, from today's board)

    no run watched — pick one from the board above

    Result

    Standings (the server's table)

    #namescore / floorstate

    The relay is a separate process: node relay.mjs in icytower-mp (default ws://127.0.0.1:8919/ws; MP_HOST=0.0.0.0 for the LAN). The seed and every score come from that process — this page never chooses a seed and never shows its own score as a result. Press R while racing to see this card again, and Watch the race to go back. One player per browser profile: two tabs in one profile share the rejoin token for a room code.

    The Daily Tower is a second process, and needs no relay: node bin/dailytower.js serve in icytower-mp (port 8787, leaderboard in its data/). It hands out today's seed, this page plays it, and the number that comes back is that server's own re-simulation of the run — the same rule as a race's verdict. Today's board is the table above the Result card.

    Watching a run is the third mode, and it uses no relay either: pick an entry from today's board and press Watch this run, and this page fetches that run's stored .itr and replays it through the same engine and the same drawing the game uses. The number on the panel is the board's verified record, never a fresh computation, and a replay that does not reproduce the record is refused before a frame is played. The controls are the port's own: SPACE play/pause, hold → for ×4, hold ↑ for ×32 (the 1.3.1 transport, docs/presentation.md §3.3), ESC to stop, and Restart on the card — the original had no restart key, so it is a button here.