Порт классической танковой аркады: 35 уровней, два игрока за одной клавиатурой, умный ИИ врагов, бонусы и звуки оригинала. Вся игровая логика написана на Rust и скомпилирована в WebAssembly, рендер — Canvas2D со спрайт-атласом. Никаких установок: открой ссылку и играй, на телефоне — тач-джойстик.
Механика и повадки оригинала — на современном стеке: быстрый Rust-движок в WASM и лёгкая React-обёртка.
Кирпич, сталь, вода, лес и лёд — полный набор тайлов с честным поведением: кирпич крошится посегментно, сталь держит удар, в лесу танки прячутся.
В окне выбора карты — уровень сложности: 5 — «боевая» (исходные параметры), ниже — враги медленнее, стреляют и спавнятся реже. Выбор сохраняется между уровнями.
Кооператив на одном экране: P1 — стрелки + Space, P2 — WASD + свой огонь. Общая база, общий счёт — как на приставке.
Scoring-ИИ поверх правил оригинала: враги выбирают цель (игрок, орёл), обходят препятствия, «расталкиваются» на спавне и не толпятся у одной стены.
Обычный, быстрый, скорострельный и бронированный — с растущей бронёй на поздних уровнях. Каждый двадцатый несёт бонус, как в оригинале.
Звезда (апгрейд пушки), каска, лопата (стальная крепость орла), граната, часы-заморозка и жизнь — с теми же эффектами и таймингами.
Оригинальные звуковые дорожки через Web Audio: выстрелы, взрывы, бонусы, гул мотора. Кнопка mute — в один клик.
На телефоне появляется тач-D-pad и кнопка огня. Canvas масштабируется под экран, никакого горизонтального скролла.
Физика, ИИ, коллизии и FSM игры — в одном WASM-модуле без сборщика мусора. React только грузит модуль и пробрасывает ввод.
Чистая игровая модель отделена от браузера: её можно тестировать без DOM и рендера.
Вся логика игры: FSM фаз (Starting → Playing → GameOver/StageEnding → Scores), мир с танками, пулями, бонусами и орлом, ИИ врагов и спавнер. Наружу — компактный wasm-bindgen API.
cargo testЛёгкий shell в эстетике DFWebOS: меню, выбор уровня и сложности, игровой экран и таблица очков. WASM-модуль грузится лениво, страницы — через React Router.
Реальные экраны с боевого стенда tanks.dfv24.com — меню, выбор уровня и сложность, бой.
Главное меню как на приставке: логотип из кирпичных тайлов, выбор «1 игрок / 2 игрока» жёлтым танком-курсором, управление стрелками и Enter.

Стрелками ←/→ листается уровень, ↑/↓ — сложность: от «слабой» до «боевой». На пятёрке враги в исходной силе, ниже — медленнее, стреляют и появляются реже.

HUD справа: сколько врагов осталось в волне, жизни и номер уровня. Кирпич разбирается посегментно, сталь пробивается только прокачанной пушкой, орла нельзя отдавать.

С каждым уровнем меняется рисунок стен и состав волны: больше быстрых и бронированных врагов. Клавиши N/B переключают уровни, Enter — пауза.

Каждый кадр браузер зовёт tick(now) в WASM: ядро читает ввод, даёт врагам
принять решение, двигает танки и пули, считает коллизии и складывает звуковые события.
Затем render() рисует мир по спрайт-атласу на Canvas2D.
Игровая логика компилируется в wasm32 и оборачивается wasm-bindgen.
Shell грузит WASM, вешает ввод и рисует меню; vite build собирает статику.
Multi-stage образ: build внутри, наружу — лёгкий nginx со статикой.
make dev — соберёт WASM и поднимет Vite dev-server с горячей перезагрузкой UI. Для ядра — обычный cargo test.
deploy/create-proxmox-lxc.sh создаёт LXC на Proxmox, ставит Docker и разворачивает игру; либо вручную: docker compose up -d --build.
Откройте адрес сервера в браузере — на десктопе клавиатура, на телефоне тач. Хайскор хранится локально у игрока.
Полные README: сборка, архитектура ядра, формат стейджей и деплой.
35 уровней, пять сложностей и напарник за той же клавиатурой. Открывается мгновенно — прямо в браузере.
Играть ↗