Переписанный на Rust легендарный лабиринт: четыре режима — Pac-Man, Ms. Pac-Man, Cookie-Man и Crazy Otto, — честный ИИ четырёх призраков со сменой настроений, энергайзеры, фрукты и цепочки очков. Игровой цикл 60 Гц в WebAssembly, рендер Canvas2D. Открой ссылку — и играй.
Повадки оригинала воспроизведены по таблицам: у каждого призрака свой характер, у каждого уровня — свои скорости и тайминги.
Pac-Man, Ms. Pac-Man, Cookie-Man и Crazy Otto — выбор прямо в меню. Разные лабиринты, спрайты и характеры поведения в одном движке.
У каждого призрака своя цель: Blinky преследует, Pinky заходит наперерез, Inky комбинирует, Clyde стесняется. Всё по правилам оригинального автомата.
Призраки живут по таймерам: рассыпаются по углам, срываются в погоню, синеют от энергайзера и уходят домой на «регенерацию» — как в оригинале.
Съел энергайзер — охота открыта: 200, 400, 800, 1600 за подряд съеденных призраков. Плюс фрукты, бонусные жизни и переходы уровней.
Скорости пакмана и призраков, длительности режимов, очки за фрукты — всё задаётся таблицами уровней (tables.rs), как в документации к автомату.
Поворот можно нажать заранее — движок тайловый, и Pac-Man свернёт в ближайшем допустимом месте. Никаких «промахнулся мимо поворота».
Фиксированный шаг игрового цикла в WASM: детерминированная логика без сборщика мусора, плавность аркадного автомата в любом браузере.
Стилизация под автомат: пиксельный шрифт, неоновая рамка, оригинальные звуки через Web Audio — вплоть до сирены погони.
Multi-stage сборка Rust→WASM→nginx публикуется в свой Gitea-registry; сервер просто делает docker compose pull — и игра в бою.
Игра — один WASM-модуль; браузеру остаётся ввод, звук и requestAnimationFrame.
lib.rs: игровой цикл с фиксированным шагом, ИИ призраков со всеми режимами, тайловые коллизии, очки и жизни, рендер. tables.rs: конфигурация уровней и характеры призраков по таблицам оригинала.
Лёгкий bootstrap без фреймворков: main.js грузит WASM, гоняет requestAnimationFrame и пробрасывает клавиатуру; styles.css рисует аркадный кабинет; в assets — шрифты, спрайты и звуки.
Реальные экраны с боевого стенда pacman.dfv24.com.
Стартовый экран аркадного кабинета: неоновый логотип и меню из четырёх игр — Pac-Man, Ms. Pac-Man, Cookie-Man и Crazy Otto. Стрелки — выбор, Enter — старт.

Точки, энергайзеры по углам, дом призраков в центре и туннели по бокам — расстановка повторяет автомат. Сверху счёт и уровень, снизу жизни.

Blinky уже в лабиринте, остальные выходят из дома по таймерам. Индикатор режима в углу подсказывает, когда бежать, а когда — есть энергайзер и охотиться самому.

Каждый тик ядро читает буфер ввода, двигает Pac-Man по тайлам, даёт каждому призраку выбрать цель по его характеру и текущему режиму, считает коллизии и обновляет счёт. Браузер только рисует готовое состояние.
Ядро компилируется в wasm32, биндинги — wasm-bindgen.
Статика без сборщиков: HTML + main.js + спрайты и звуки.
Образ публикуется в Gitea; сервер делает compose pull.
make wasm + make serve — сборка ядра и локальный сервер. Версия wasm-bindgen-cli зафиксирована и проверяется Makefile.
make docker-push собирает multi-stage образ (Rust→WASM→nginx, ~23 МБ) и публикует в свой Gitea-registry с тегом версии и latest.
deploy/create-proxmox-lxc.sh создаёт LXC, ставит Docker и запускает игру из registry; обновление — повторный запуск install.sh.
Полный README: сборка, точные версии инструментов, релизный конвейер и деплой.
Четыре классических лабиринта и призраки с характером — прямо в браузере, без установки.
Играть ↗