Руководство

Исходный код tower defense: волны, башни и баланс в TypeScript

Barricade Z хранит 30 волн, 12 уровней башен и экономику в трёх файлах данных. Разберём, что это значит для покупателя.

Арт Barricade Z: мультяшный зомби перепрыгивает деревянную баррикаду на закате, а жёлтая турель стреляет по орде позади него.

В исходном коде tower defense игровой дизайн живёт в данных: насколько сильна каждая башня, что присылает каждая волна, как быстро приходят монеты. Если эти данные разбросаны по коду отрисовки, перебалансировать одну волну означает читать весь проект. Barricade Z, наш шаблон tower defense со слиянием, хранит башни, волны и баланс в трёх файлах TypeScript. Это руководство показывает, где они находятся и как безопасно их менять.

В этом пакете два уровня изменений. Для заголовка страницы и имени сохранения достаточно текстового редактора. Всё остальное, от башен до волн зомби, проходит через исходник TypeScript и пересборку. Если заранее понимать, что к чему, не будет сюрпризов после покупки.

Имена файлов ниже взяты из иллюстрированного руководства покупателя, которое идёт с игрой и доступно на тех же 14 языках, что и интерфейс.

Что входит в исходный код tower defense

Barricade Z — игра-защита со слиянием. Игроки собирают турели в резерве, сводят две одинаковые по уровню вместе, чтобы получить следующий, до уровня 12, и ставят самые сильные на пять позиций баррикады. Кампания из 30 волн проходит через три среды, с боссами на волнах 10, 20 и 30. Гранаты открываются на волне 3, овердрайв — на волне 7, а мастерская продаёт улучшения. Ежедневные задания и бесконечный режим открываются по мере прохождения.

  • game/: готовая к загрузке игровая сборка с Phaser 3.90 в lib/phaser.js и шрифтами Bungee и Barlow Condensed.
  • game/barricade-z.config.js: две настройки, которые можно менять без пересборки.
  • source/: читаемый проект TypeScript, только для разработчиков.
  • documentation/index.html, а также DOCUMENTATION.html в корне: руководство покупателя, которое открывается офлайн.
  • THIRD-PARTY-LICENSES/: уведомления для движка и шрифтов.

Интерфейс доступен на 14 языках, с портретной и альбомной раскладками для касания и мыши. Голос диктора записан только на английском, и языковая настройка меняет текст интерфейса, но не голос.

Посмотреть Barricade Z: демо, руководство и цену

Три файла, в которых живёт игровой дизайн

Сначала откройте source/src/data/. Эти три файла — главная причина покупать издание с исходниками, потому что именно здесь на самом деле проектируется tower defense.

  • towers.ts: 12 уровней башен, их характеристики оружия и данные выстрела.
  • waves.ts: 30 волн кампании и места появления боссов.
  • balance.ts: экономика, здоровье, урон и настройка прогрессии.

Вокруг них в source/src/i18n/ лежат словари для 14 языков, в source/src/ui/ — меню, HUD, панель инструментов, панели и обучение, а source/src/audio/ отвечает за маршрутизацию звука и голос диктора. Собранный код в game/assets/ имеет хешированные имена файлов; не редактируйте их вручную, а пересоберите проект.

Что можно менять текстовым редактором

Откройте game/barricade-z.config.js, поменяйте значение, сохраните и перезагрузите страницу. Пересборка не нужна. Здесь живут только две настройки.

  • title: заголовок вкладки браузера. Он не заменяет иллюстрированный логотип.
  • storagePrefix: пространство имён для сохранённых данных. Смена даёт отдельное сохранение и оставляет старые ключи на месте. Используйте только буквы, цифры, точки, подчёркивания и дефисы, до 64 символов.

storagePrefix полезнее, чем кажется. Две копии игры на одном домене разделяют сохранения, даже если лежат в разных подпапках. Если агентство размещает по копии на клиента на одном домене, дайте каждой копии свой префикс, чтобы прогресс игроков не смешивался.

Всё, что выходит за эти два значения, включая логотип, иконки, графику, правила, башни, волны и текст, требует издания с исходниками и пересборки.

Пересборка после реальных изменений

Папка game/ уже содержит готовую к игре сборку, поэтому для размещения Node.js не нужен. Его ставят только для изменения самой игры.

  1. Установите Node.js 20.19 или новее.
  2. Внутри source/ выполните npm ci. Проверенные версии инструментов зафиксированы в package-lock.json.
  3. Внесите изменение, затем выполните npm run typecheck и npm test.
  4. Выполните npm run build. Результат попадёт в source/dist/.
  5. Загрузите содержимое source/dist/, чтобы заменить размещённую игру, так же как с game/.

Три необязательные команды помогают по пути: npm run dev запускает локальный сервер разработки, npm run preview отдаёт сборку для проверки, а npm run balance прогоняет полную симуляцию кампании из командной строки, что удобно после правок balance.ts.

Что покупатель обычно меняет первым

  1. Заголовок вкладки и префикс сохранения в файле конфигурации, чтобы копия была вашей с первой загрузки.
  2. Логотип и графика в исходниках. При замене визуалов сохраняйте прежние пропорции, как просит руководство.
  3. Текст интерфейса в словарях i18n на каждом языке, который вы планируете выпускать.
  4. Сложность: состав волн в waves.ts, затем поток монет в balance.ts.
  5. Башни в последнюю очередь, в towers.ts, потому что каждая волна была подобрана под них.

Если вы продаёте или ведёте несколько игр со слиянием, та же идея резерва и слияния есть ещё в двух наших шаблонах, каждый со своей темой и правилами.

Deepforge: сливайте кирки и отправляйте их в шахту с физикой

Plop: головоломка со слиянием фруктов и физикой, 11 ступеней

Хостинг, обновления и сохранения

Загрузите только содержимое game/ в пустую папку, например public_html/my-game/, и откройте адрес в актуальных Chrome, Edge, Firefox или Safari. npm, PHP, база данных или аккаунт не нужны, рекомендуется HTTPS. Двойной клик по index.html на компьютере не работает. Хостинг должен отдавать .js как JavaScript, .css как CSS, а шрифты и .mp3 — с обычными типами; на многих хостингах имена файлов чувствительны к регистру.

Сохранения живут в браузере игрока под именами barricadez.save (кампания и контрольные точки) и barricadez.settings (язык, звук, обучение, разблокировки, рекорды) с префиксом по умолчанию. Аккаунта и облачной синхронизации нет. Перезагрузка возвращает текущую волну к контрольной точке.

  • Чтобы обновить: сделайте резервную копию game/ и своего изменённого файла конфигурации, загрузите новую game/ поверх старой, оставьте storagePrefix без изменений и перезагрузите страницу.
  • Если показывается старая версия, очистите кэш изображений и файлов или нажмите Ctrl+F5. Не очищайте данные сайта: это удалит сохранение.
  • В игре есть manifest.webmanifest, но руководство ясно: она не упакована как устанавливаемое офлайн-приложение.

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

Что не входит и лицензия

В издании нет рекламного SDK, аналитики, платёжного провайдера, онлайн-мультиплеера, удалённой таблицы лидеров или облачных сохранений, а также нативных приложений, хостинга и индивидуальной разработки. Любое из этого — работа по разработке с вашими аккаунтами.

Barricade Z стоит $39 по обычной цене или $33,15 во время акции «Чёрная пятница», которая идёт до 30 ноября 2026 года; два и более шаблонов в одном заказе также дают скидку за комплект от 5% до 20%. Лицензия бессрочная и неэксклюзивная, на один конечный продукт — ваш или клиента. Можно менять код, графику и аудио, заменить наш бренд своим и предлагать игру бесплатно или с рекламой. Перепродавать шаблон или его код отдельно нельзя. Шесть месяцев поддержки входят, или двенадцать при продлении; новые функции и интеграции сначала оцениваются.

Прочитать условия маркетплейса

Часто задаваемые вопросы

Какой движок использует исходный код tower defense?

Phaser 3.90 с TypeScript. Движок встроен в game/lib/phaser.js под лицензией MIT, поэтому ничего не загружается с CDN.

Можно ли менять волны и башни без Node.js?

Нет. Файл конфигурации задаёт только заголовок вкладки и префикс сохранения. Волны, башни и баланс находятся в исходниках и требуют Node.js 20.19 или новее и пересборки.

Диктор переведён?

Нет. 14 языков относятся к интерфейсу. Записи диктора на английском, а на других языках озвучки нет.

Работает ли игра на телефонах?

Да. Портретная и альбомная раскладки работают с касанием и мышью. Производительность зависит от устройства, поэтому проверьте телефоны вашей аудитории.

Могут ли две копии на одном домене хранить отдельные сохранения?

Да, если у каждой копии свой storagePrefix в barricade-z.config.js. Одна лишь другая подпапка их не разделяет.

Кому подходит

Barricade Z подходит порталу, которому нужна готовая игра-защита с зомби, фрилансеру или студии, готовящим брендированную игру для одного клиента, и разработчику, который хочет понять, как tower defense на TypeScript и Phaser хранит дизайн в данных. Если нужно только разместить игру под своим названием, файл конфигурации и логотип покроют большую часть работы. Если планируете новую кампанию, три файла данных и npm run balance — то, где вы будете проводить время.

Попробовать демо Barricade Z и купить лицензию

Свои волны, рескин или заказ для агентства? Запросите расчёт