Several teleport-contest bugs fixed
thanks to careful reports from
@xeophon
(#5)
and @serteal
(#6):
the public session corpus is back in sync between contest
and judge (38 files re-recorded), seed0030's
seg-0 character mismatch is fixed, and the scorer now
requires the cursor to land in the recorded position for a
screen to count as matched. Pull the latest template and
re-run bash frozen/score.sh to pick up the
corrections.
The Teleport Coding Challenge
Port NetHack 5.0 from C to JavaScript. Bit-exact parity. Highest score wins.
NetHack is one of the most complex and longest-lived open source programs ever written. After 46 years of continuous development — tracing its lineage from Rogue (1980) to Hack (1982) to NetHack — v5.0 just shipped: the first major version bump since 3.0 in 1989. That’s 442,901 lines of C and Lua to port.
This contest asks: can a swarm of LLM coding assistants enable a single person to work with a program of this scale and complexity? Can agents create hundreds of thousands of lines of code that humans would actually want to own afterwards?
News
Older news
Contest updates: several improvements. Forks
now declare a category — agentic,
transpiled, or other — by running
set-category.sh once before it will be scored.
Animation-frame parity is scored as a supplemental metric,
supported by a new API. /play/<owner>/
now supports saving, loading, and an in-browser options editor
at /nethackrc/, and the persistence
API was simplified to a single opts.storage handle
so save/restore survives a browser reload. (serteal’s
port hasn’t regressed; their sessions just need a small
migration to fit the new API.) The corpus was re-recorded with
instrumentation fixes. Phase 2 is clarified as a test of
maintainability.
serteal has submitted the first transpiled solution — an Emscripten compilation of the C source into a JavaScript emulation of the C state machine, including a simulated C heap. Click serteal’s name to inspect the JavaScript, and Play to play the working game in the browser. It is not yet a readable JS port, and there is still plenty of time to write one! Can you build a port that beats the transpiler in Phase 2?
Leaderboard
| # | Team | Points / 22,670 | PRNG | Screen | Sessions / 88 | ||
|---|---|---|---|---|---|---|---|
Loading…
No contestants yet. Be the first →
Category is based on how the team plans to produce most (over 50%) of the code. Agentic codebases are mostly produced by generating code with an LLM and Transpiled codebases rely mostly on transpiling the C sources with tools. Points shown as public + held-out: matched 80×24 screens, one point per recorded step where the fork’s render matches C exactly. The 88 sessions split 44/44 across the public corpus and a held-out set kept private until contest end. PRNG is shown as advisory progress — it’s the structural prerequisite for screens to match. The Sessions column tallies sessions where every screen and PRNG call matched (public + held-out). Play opens the build in your browser; Tests opens the Session Viewer scoped to it.
Play it in your browser
Hit any Play button on the leaderboard above to open that contestant’s port directly in your browser — running entirely client-side, no install. Tests opens the Session Viewer scoped to that same fork: scrub through any of the 44 public sessions and see, frame by frame, where the JS port diverges from the official C trace.
Two phases
Phase 1 — Foundation
Standard parity contest against NetHack 5.0. Score against 88 sessions (44 public and 44 held-out). Top 10 teams qualify for Phase 2.
Phase 2 — Generalization
Judges pick a “5.1” target — selected changes to the baseline
codebase. Phase 2 score is parity against 5.1, divided by a penalty proportional
to how much you changed your js/ from your Phase 1 submission. Ports
with maintainable code win.
Best Method award
Throughout both phases, judges spotlight team writeups on the leaderboard. After Phase 2, a separate Best Method award is judged on the quality and reproducibility of the writeup — independent of where you placed in the parity ranking. The goal: capture and share the actual techniques that worked.