Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Аркадная доставка пиццы по настоящей Москве (район вокруг Ленинской Слободы из OpenStreetMap): заказы от «умного трекера», трафик по полосам, светофоры, пешеходы, погода и сутки, соперники-курьеры, гараж и находки. three.js, крупный пиксель, звук синтезируется, картинок-файлов нет — всё рисуется кодом. Выросла из внутренней заготовки lab/delivery дайджеста (копия как была — в original/, в сборку не идёт). Что поменяли, чтобы игру можно было выпустить, — docs/CONTENT.md.README 전문 보기 ↗
Аркадная доставка пиццы: в Стиме — по закрытому городу Солнечному (КПП, забор, промзона; выдуманное имя, карта собрана из OpenStreetMap), на Яндексе — по настоящей Москве (район вокруг Ленинской Слободы из OpenStreetMap): заказы от «умного трекера», трафик по полосам, светофоры, пешеходы, погода и сутки, соперники-курьеры, гараж и находки. three.js, крупный пиксель, звук синтезируется, картинок-файлов нет — всё рисуется кодом.
Выросла из внутренней заготовки lab/delivery дайджеста (копия как была — в
original/, в сборку не идёт). Что поменяли, чтобы игру можно было выпустить, —
docs/CONTENT.md.
Куда идёт игра — цель, принципы, что добавлять, как проверять и почему не меняем движок — docs/DIRECTION.md. Проверка механик и планы редактора карты — docs/SANDBOX.md.
Одна игра, три бандла — отличаются только платформенным слоем (src/platform/).
Две версии контента: детская (Яндекс, всегда: без крови, алкоголя, табака) и
взрослая 18+ (Стим по умолчанию: кровь, пиво, курилка, биты; в настройках Стима
переключается). Флаг — ADULT в src/game/moscow.js, ?kids — детская для проверки.
| команда | что | куда |
|---|---|---|
npm run dev | локально, localStorage, реклама-заглушка | http://localhost:5190 |
npm run dev:yandex | как на Яндексе, с заглушкой SDK (src/platform/yandex-mock.js) | http://localhost:5191 |
npm run build:yandex | архив для консоли Яндекс Игр | release/yandex-<версия>.zip |
npm run electron | Стим-сборка в Электроне | окно |
npm run probe -- --js="return d.S.state" / npm run check | проверка из скрипта без окна (JSON, кадр по флагу) / общие проверки перед сдачей, ~1 мин | stdout, docs/AGENTS.md |
npm run dist:win / dist:deck / dist:mac | пакеты для SteamPipe | release/ |
| релиз: GitHub → Actions → «Релиз» → Run workflow | выбрать только patch / minor / major — номер (v0.0.8…) CI считает сам и пишет его в углу заставки | GitHub Releases (docs/STEAM.md) |
Сначала Яндекс Игры — docs/YANDEX.md (что сделать руками, чтобы залить)
и docs/YANDEX-AUDIT.md (сверка с требованиями). Что вписано в
карточку (тексты ru/en/es, категории, теги) — docs/STORE-LISTING.md,
скриншоты и видео одной командой npm run media — docs/MEDIA.md. Потом Стим —
docs/STEAM.md (Steamworks, депоты, геймпад, обновления для Deck).
Поставить. В десктоп-режиме открыть Konsole и вставить:
curl -fsSL https://raw.githubusercontent.com/ndrwbv/bird-delivery/main/tools/install-deck.sh | bash
Игра встанет в папку bird-pizza там, где запущена команда (Konsole открывается в домашней —
значит ~/bird-pizza). Появятся два ярлыка «Птица Пицца»: в меню приложений (раздел «Игры»,
или набрать «пицца» в поиске) и на рабочем столе. Запустить без ярлыка: ~/bird-pizza/bird-pizza.sh.
При самом первом запуске игра спросит язык; поменять потом — в настройках главного меню.
Обновить. Запустить игру ярлыком: через пару секунд выскочит «Вышла версия …» → «Обновить» —
игра закроется, скачает новую и запустится сама. Если окна нет — ещё раз вставить ту же команду
в Konsole, новая версия встанет поверх. Сохранения лежат отдельно (~/.config/BirdPizza),
обновление их не трогает. Само обновление предлагает только версия, поставленная этой командой:
если архив распаковали руками — поставить командой заново.
Играть из игрового режима (оверлей Steam, кнопки Steam и «…»). Добавить как стороннюю игру:
/home/deck/bird-pizza/bird-pizza.sh → Add Selected Programs.bird-pizza.sh).В игровом режиме она в Библиотеке на вкладке Non-Steam. Обновляться лучше в десктоп-режиме: окно «Вышла версия» в игровом может не показаться. После обновления ярлык в Steam заново добавлять не нужно — новая версия встаёт в ту же папку.
Поставить. Скачать установщик bird-pizza-setup.exe из
последнего релиза (прямая ссылка:
https://github.com/ndrwbv/bird-delivery/releases/latest/download/bird-pizza-setup.exe) и запустить.
Прав администратора не надо и вопросов он не задаёт: игра встанет в
%LOCALAPPDATA%\Programs\bird-pizza-delivery, появятся ярлыки «Птица Пицца» на рабочем столе
и в меню «Пуск», и игра сразу запустится.
Установщик не подписан, поэтому Windows может показать синее окно «Система Windows защитила ваш компьютер» — нажать Подробнее → Выполнить в любом случае. Браузер тоже может предупредить, что файл скачивают редко, — выбрать «Сохранить» («Всё равно сохранить»).
Обновить. Игра сама: через пару секунд после запуска выскочит «Вышла версия …» → «Обновить».
Новая версия скачается в фоне (полоска на значке в панели задач), потом игра закроется, на несколько
секунд появится окошко установки, и игра запустится снова. Если окна нет — скачать свежий
bird-pizza-setup.exe и запустить, он встанет поверх. Сохранения лежат отдельно
(%APPDATA%\BirdPizza), обновление и даже удаление игры их не трогает. Удалить игру — «Параметры →
Приложения → Птица Пицца → Удалить».
Без установки — распаковать bird-pizza-win.zip и запустить BirdPizza.exe (SmartScreen — так
же, «Подробнее» → «Выполнить в любом случае»). Такая папка сама не обновляется.
| путь | что |
|---|---|
src/main.js | вход: площадка → язык → игра |
src/game/moscow.js | вся игра |
src/game/city-data.js | город из OpenStreetMap (не править, не перегенерировать без нужды) |
src/game/people.js | генератор людей: внешность, лица, имена по языкам |
src/game/brands.js | пародийные вывески вместо чужих брендов |
src/game/mapcheck.js | проверка и починка карты при загрузке, ?mapcheck — отладка |
src/platform/ | web / yandex / steam: реклама, сохранения, таблица, пауза |
src/input/ | геймпад и навигация по меню с него |
src/i18n/ | переводы: ключ — русская строка, docs/I18N.md |
electron/ | оболочка для Стима и автообновление для Deck |
Отладка: window.__dlv — состояние игры; ?mute — без звука, ?nolb — не писать в
таблицу, ?lang=de — язык, ?mapcheck — отчёт о карте.
Данные карты — © участники OpenStreetMap, ODbL; рельеф — SRTM (NASA). Шрифты Press Start 2P —
SIL OFL (public/fonts/OFL.txt) и Rubik Mono One — SIL OFL (public/fonts/RubikMonoOne-OFL.txt).