7 сентября 2026 г.
Партия в NetHack становится виджетом: запись прохождения встраивается на страницу одним тегом
После смерти героя прогон не пропадает: запись партии встраивается на любую страницу одним тегом веб-компонента.

tobi lutke
@tobi
Теперь можно делиться реплеями своих прогонов после смерти: https://neohack.dev/dashboard?run=g-6a9de1c0-2a-0-0458649a А ещё есть вот такой веб-компонент https://neohack.dev/component, с ним можно повозиться. Например, писать ботов на javascript.
Мне всегда нравился nethack. Этому чуду 42 года, и это одна из самых глубоких приключенческих игр, которые вообще делали. Выглядит она при этом ужасно, по крайней мере из коробки. GPT6 Astra сделала мне headless-версию. Теперь её мозг можно использовать как библиотеку, как mcp или через javascript-библиотеку. Знакомьтесь: https://neohack.dev/
· 7,3 тыс. просмотров
Герой умер — партия не пропала. Ссылка на запись прохождения теперь открывается у любого, кому её дали.
Тоби Лютке собирает NeoHack как NetHack без терминала: движок на C с биндингами на TypeScript, WebAssembly и MCP. Реплей стал первым куском игры, который можно унести на чужой сайт.
Как встроить. Подключить модуль `<script type="module" src="https://neohack.dev/component/neohack.js"></script>` и поставить тег `<neohack-world src="https://neohack.dev/dashboard?run=RUN_ID" autoplay speed="4" controls></neohack-world>`. Скорость крутится от 0,5× до 5×, по умолчанию 4×, звук просыпается только после клика. На странице прогона есть кнопка, которая копирует готовый код вставки; публичны при этом только прогоны с записанными кадрами.
Тот же тег не только показывает, но и играет. `world.connect(transport, { writable: true })` открывает запись на запись, `api.create({ name: 'Ada', seed: 42 })` заводит новую партию, `game.move('north')` двигает героя, а каждый ход прилетает событием `frame`.
Боты на JavaScript. Мастерская Ascender на /bots работает прямо в браузере: `import { defineBot } from "neonethack"`, дальше обработчики `bot.on("turn", ...)` и `bot.on("enterLevel", ...)`. Потолок — 20 файлов с относительными импортами и точка входа main.js. Прогон гасится после 1000 вызовов API или 5 минут, каждый тест стартует со свежей игры, а свои скрипты сохраняются приватно после входа в аккаунт.
Раньше 42-летняя игра говорила только с терминалом и модальными окошками, и подцепить к ней программу означало парсить экран. Теперь движок отдаёт JSON, а живая игра на neohack.dev раздаёт инструменты через браузерный WebMCP: агент заводит партию, ходит по тому, что видит, и возвращается к сохранённому приключению.
Код лежит открытым со статусом alpha, последние коммиты в main датированы 6 сентября 2026 года.
Первоисточник