Защищайте орла на бескрайних травянистых, заснеженных и промышленных полях сражений или на 35 классических картах. Соберите десять припасов и уничтожьте тяжёлые вражеские танки, для уничтожения которых требуется четыре попадания.
Отправная точка на основе публичного проекта автора, а не дословный оригинальный промпт. Ваш результат может отличаться.
Спецификация реконструкции, подготовленная на основе локально созданного проекта Three.js на runtime-коммите 670383f86f56c61e29e10d12424addf6f8defbe9 и проверенного публичного игрового процесса. Независимый фанатский трибьют Battle City (1985, Namco). Данные классических карт и волн: gunnerson/battlecity (MIT); собранные аудиоматериалы: JustoSenka/BattleCity (репозиторий MIT). Семнадцать моделей сгенерированы с помощью Tripo P2. Это спецификация, созданная на основе проекта, а не дословный оригинальный промпт для генерации.
Battle City3D-танковая играThree.jsTripoтанковая оборонапроцедурные карты
Промпт
1. Цель проекта
Создать Battle City 3D — браузерную игру про защиту от танков, вдохновлённую классикой для Famicom 1985 года. Игрок управляет танком, уничтожает волну из 20 противников, собирает припасы и защищает штаб с орлом. Воссоздать текущую перспективную 3D-версию, показанную в референсных материалах, включая бесконечную кампанию с фиксируемым seed и 35 доступных классических карт. Сохранить понятные аркадные правила, добавив танкам, стенам и окружению настоящую глубину.
2. Визуальный стиль
Использовать в Three.js PerspectiveCamera с углом обзора 60 градусов. Камера по умолчанию располагается позади и выше игрока — примерно в 13 мировых единицах от него, на высоте 0,43 радиана. Плавно следить за позицией танка и точкой перед ним; не поворачивать камеру автоматически при развороте танка. Предусмотреть более высокий тактический ракурс, ручное вращение перетаскиванием и масштабирование колёсиком. Для движения и стрельбы использовать четыре основные оси карты. После вращения камеры сопоставлять клавиши направления с ближайшим кардинальным направлением относительно камеры; никогда не преобразовывать клавиатурный ввод в диагональное движение. Сразу выставлять направление корпуса в соответствии с направлением выстрела и калибровать высоту снаряда и вспышки у дульного среза по фактической пушке каждой модели.
Использовать приземлённые гусеничные танки, металлические башни, терракотовые кирпичи, тёмные стальные блоки, синюю воду, низкую растительность и отражающий лёд. Продолжить землю за пределами игровой зоны деревьями, разрушенными зданиями и дымкой. Использовать тёплый направленный свет, мягкие тени, заполняющий окружающий свет, тональное отображение ACES и сдержанные эффекты вспышек, отдачи, искр и отскакивающих обломков. На снежных уровнях менять палитру земли и деревьев; на промышленных этапах отдавать предпочтение стали и разрушенным зданиям.
Оформить игру в тёмно-оливковом стиле командного интерфейса, используя тёплый жёлтый цвет для основных действий, а также отображая счёт, общий запас жизней, значки оставшихся противников, название этапа и радар. Разместить над полем боя крупный переключатель моделей Tripo 3D / Three.js, показывающий выбранный режим и вращающийся предпросмотр танка. Добавить локализованную иллюстрированную памятку по припасам и индикаторы временных эффектов. На узких экранах сохранять видимыми игровое поле и основные сенсорные элементы управления.
3. Мир и сцены
Представить поле боя в виде сетки 26 × 26 тайлов, используя половину ширины танка для коллизий, равную 0,72. Разместить орла в точке (13,25), окружив его разрушаемой кирпичной обороной U-образной формы. Точки появления игроков: (9,25) и (17,25); ворота противников: (1,1), (13,1) и (25,1).
Предусмотреть две кампании: все 35 классических карт с таблицами волн по 20 противников и бесконечный генератор на основе seed, циклически переключающий биомы — луга, снег и промышленную зону. Генерировать связанные коридоры, достаточно широкие для полного корпуса танка, с проходимыми соединениями между точками появления игроков, воротами противников и местами появления припасов. Добавить смещённые центральные стальные укрытия, чтобы исключить прямую линию огня от точки появления к орлу, сохранив при этом проходы между улицами. Разрешить выбирать начальный биом или классический этап и заново генерировать случайную карту. Переносить seed прохождения, счёт, жизни и улучшения выживших игроков на следующий этап.
Кирпичи должны разрушаться; стальные блоки останавливают обычные снаряды и танки; вода блокирует танки, но пропускает снаряды; растительность скрывает модели противников; лёд снижает сцепление. Дальний фон должен оставаться декоративным и не участвовать в игровых коллизиях.
4. Каталог ассетов
Использовать следующие стабильные слоты 3D-моделей, которые можно заменять независимо друг от друга. В первую очередь подготовить модели игрока, противника, тяжёлого танка и орла, затем все десять моделей припасов. Устанавливать каждый ассет на землю по самой нижней точке и нормализовать его ориентацию, центр и масштаб. Вместо загрузки отдельной модели для каждого противника использовать шаблоны.
- player: горчично-жёлтый гусеничный танк с хорошо читаемой башней и пушкой, направленной вперёд; используется для танков игроков, при этом для второго игрока применяется отдельный цвет кольца.
- enemy: компактный гусеничный танк противника, переиспользуемый с разными оттенками для обычного, быстрого и мощного вариантов.
- heavy: заметно более тяжёлый бронированный танк, отдельная от стандартного противника сетка, с четырьмя видимыми сегментами брони над корпусом.
- eagle: металлическая золотая статуя орла на постаменте штаба.
- pickup-star: золотая пятиконечная звезда улучшения.
- pickup-helmet: защитная военная каска для временного щита.
- pickup-clock: хорошо читаемые часы для остановки движения противников.
- pickup-shovel: лопата для укрепления штаба.
- pickup-life: миниатюрный танк, обозначающий одну дополнительную жизнь.
- pickup-grenade: ручная граната для уничтожения активных противников.
- pickup-ammo: ящик с боеприпасами для скорострельности.
- pickup-repair: ремонтный ящик для восстановления брони.
- pickup-magnet: подковообразный магнит для сбора припасов на расстоянии.
- pickup-boost: энергетическая батарея для временного ускорения.
- environment-building: обветшавший разрушенный многоквартирный дом, Tripo P2.0, целевой бюджет — 1 800 треугольников.
- environment-tree: неровная сосна с видимым стволом, Tripo P2.0, целевой бюджет — 1 100 треугольников.
- environment-bush: низкий лиственный куст с пучками травы, Tripo P2.0, целевой бюджет — 650 треугольников.
Отображать припасы как вращающиеся парящие модели для подбора, с цветными кольцами и соответствующими миниатюрами в памятке. Для повторяющихся зданий, деревьев и кустов использовать общие экземпляры геометрии и материалов. Прижать корни здания и дерева к земле; слегка заглубить основание куста, чтобы он естественно сливался с ландшафтом. На снежных этапах добавить снег на поверхностях, обращённых вверх. Стены тайлов, воду, лёд, меши снарядов, UI, источники света, частицы и прокси коллизий создавать процедурно. Анимировать воду волнами, текущими в мировом пространстве, с меняющимися нормалями и небольшим смещением поверхности, непрерывным на соседних тайлах. Версия Tripo использует 17 сгенерированных моделей; в сравнительной версии и танки, и окружение заменяются геометрией, созданной кодом, при сохранении тех же правил и коллизий. Обе версии рендерятся с помощью Three.js.
5. Игровой процесс и обратная связь
Поддержать одиночную игру и локальный кооператив для двух игроков с общим запасом из трёх жизней. В одиночном режиме использовать WASD или клавиши со стрелками, а для стрельбы — Space/J. В кооперативе первый игрок использует WASD и Space/J, второй — клавиши со стрелками и Enter/Numpad 0. Клавиша P/Escape ставит игру на паузу; C меняет камеру; 1/2 выбирает режим моделей. На сенсорных экранах разрешить одновременно удерживать крестовину и кнопку стрельбы, снимать ввод при отмене указателя и предоставлять действия паузы, продолжения, перехода на следующий этап и повтора без прокрутки страницы.
Скорость игрока — 4,2 единицы в секунду или 6,3 с ускорением. Противники бывают обычными, быстрыми, мощными и тяжёлыми; у тяжёлых танков четыре единицы здоровья, и они переживают первые три попадания без щита. За уничтожение противника каждого типа начислять 100, 200, 300 или 400 очков; за любой подобранный припас — 500 очков. Этап завершается после уничтожения 20 противников. Поражение наступает при уничтожении орла или исчерпании общего запаса жизней, если ни одного игрока не осталось в живых. Предусмотреть немедленный повтор, явный переход на следующий этап и локальное сохранение лучшего результата.
Реализовать все десять припасов: звезда повышает уровень до третьего (более быстрые снаряды, два снаряда одновременно, затем снаряды, разрушающие сталь); каска создаёт щит на 12 секунд; часы останавливают противников на 9 секунд; лопата укрепляет базу на 16 секунд; мини-танк добавляет одну жизнь; граната уничтожает активных противников; боеприпасы дают 14 секунд скорострельности, максимум до четырёх активных снарядов; ремонт добавляет две единицы здоровья, но не более трёх; магнит в течение 20 секунд собирает видимые припасы в радиусе пяти единиц; ускорение длится 12 секунд. Модели припасов существуют 25 секунд и появляются в достижимых местах; перемешиваемая колода меняет их типы. Магнит не должен собирать припасы через твёрдые препятствия.
Использовать собранные сэмплы в стиле NES для вступления этапа длительностью 4,333 секунды, выстрелов, движения и простоя, ударов по кирпичу и стали, взрывов противников и игроков, появления и подбора припасов, дополнительной жизни, попадания по броне, льда, паузы и окончания игры. В текущем проекте используются 15 OGG-треков из JustoSenka/BattleCity, commit 3a07004ba8e53baea74ff70d2ecc22b017eb9b20. Сохранить указание авторства и уведомление о лицензии репозитория; описывать их как собранные аудиоматериалы для ремейка, не утверждая, что это побитовая запись оригинального оборудования. Разблокировать звук жестом пользователя, откалибровать громкость сэмплов, добавить регулировку громкости и отключение звука, а также синхронизировать звуки с событиями. Не добавлять постороннюю непрерывную боевую музыку.
6. Техническая реализация
Использовать TypeScript, Three.js 0.180.0 и Vite 7, с изолированными package.json и lockfile. Отделить симуляцию от рендеринга и выполнять её с частотой 120 Гц. Использовать AABB корпусов, разделённое по осям движение, обработку границ и разведение танков, а также непрерывную проверку ближайшего контакта при движении снарядов, включая коллизию между встречными снарядами с учётом относительного движения. Снаряды должны начинать движение от корпуса и проверять путь вперёд, чтобы предотвратить прохождение сквозь стены при стрельбе в упор. Добавить ускорение и торможение на льду, а также гравитацию с затухающими отскоками обломков. Это аркадная физика наземного движения, а не симулятор подвески.
Загружать GLB-ассеты одного источника через GLTFLoader. Прокси коллизий должны быть независимы от геометрии ассетов. Текущий рантайм использует квантизированные атрибуты и текстуры WebP (1024 px для техники и базы; 512 px для припасов и окружения), без упрощения геометрии и WASM-декодера. Ограничить загрузку четырьмя воркерами, использовать URL с версией на основе хеша и диапазоны по 256 KiB с тайм-аутом 20 секунд и максимум тремя попытками для каждого диапазона. Разрешать начало игры после готовности четырёх основных моделей и аудио; припасы и ассеты окружения загружать в фоне и создавать только те типы припасов, чьи модели уже готовы. Переключение режима моделей должно сохранять состояние игры.
Предусмотреть UI на английском, упрощённом китайском, японском и корейском языках. Выбирать язык по умолчанию на основе языка устройства, кроме zh-TW, zh-HK, zh-MO и zh-Hant, для которых по умолчанию используется английский; явно выбранный язык сохранять. Поддержать клавиатуру, указатель на компьютере и мультитач, а при потере фокуса ставить игру на паузу. Хранить все ассеты, сведения об авторстве и воспроизводимые скрипты локально в исходном проекте и поставлять статическую директорию dist без приватных учётных данных и зависимости от серверной части во время выполнения.
7. Критерии готовности
Поставить редактируемый исходный код, сведения о происхождении ассетов и уведомления о лицензиях, рабочий процесс npm для разработки и сборки, а также доступный для игры статический предпросмотр. Проверить сцену Tripo по умолчанию, сравнение моделей, все биомы, тяжёлый танк, выдерживающий четыре попадания, каждый эффект припасов, паузу и продолжение, поражение и повтор, а также переход между этапами. Протестировать 1 000 карт с фиксированным seed на связность с учётом ширины корпуса и безопасные точки появления, а также все классические карты, прохождение сквозь стены, диагональные выстрелы, разведение танков, инерцию на льду, ввод относительно камеры при нескольких значениях рыскания и переключение режимов с сохранением состояния. Проверить локализованный UI и управление двумя пальцами на узких экранах, не заявляя о тестировании на физических устройствах, если использовалась только эмуляция. Сопоставить реальные стартовые и боевые кадры с референсными изображениями и видео; убедиться, что все 17 моделей и 15 аудиотреков загружаются. Опубликовать проект через существующий рабочий процесс CMS Web Page и проверить итоговую публичную страницу, а не считать сохранённую запись CMS завершённым развёртыванием.
Как использовать этот промпт
01
Начните с подходящего инструмента
Откройте привычного помощника для программирования или 3D-инструмент. Попробуйте модель, указанную в примере, и изучите инструкции по настройке в связанных проектах.
02
Выберите одно изменение
Замените объект, художественный стиль или окружение. Чётко опишите камеру и взаимодействие. Сначала создайте небольшую версию, затем улучшайте по одной детали.
03
Добавьте собственные объекты в сцену
Для своего персонажа или реквизита создайте 3D-модель по короткому описанию предмета или референсу, затем импортируйте её в проект.
Права на превью принадлежат соответствующим авторам. Перед повторным использованием кода или материалов проверьте первоисточник и лицензию проекта.