«Защита замка» — небольшой tower defense, который открывается по ссылке и сразу играется: ничего не нужно скачивать и устанавливать. Волны врагов идут по тропе сверху вниз, вы ставите башни вдоль пути и прокачиваете их за монеты.
Почему без движка
Соблазн взять готовый движок был, но задача этого не требовала. Tower defense — это сетка, ломаная пути, список врагов, список башен и цикл, который всё это двигает. Такой объём кода помещается в голове целиком, а результат весит десятки килобайт и грузится мгновенно даже на слабом телефоне.
Всё рисование — обычный Canvas 2D. Никакой сборки, никаких зависимостей:
файл открывается в браузере и работает.
Баланс отдельно от логики
Единственная архитектурная вещь, о которой я всерьёз подумал заранее — разделение
контента и кода. Весь баланс живёт в отдельном config.js: уровни, ломаные пути,
препятствия, характеристики башен по уровням прокачки, типы врагов и состав волн.
Выглядит это примерно так: уровень — это имя, сложность, стартовое золото, здоровье замка и массив точек, по которым идёт тропа. Башня — название, описание и три ступени прокачки, у каждой своя цена, урон, радиус и скорость.
Правило простое: чтобы поменять сложность игры, не нужно открывать игровую логику. Крутить баланс становится приятно — а значит, это вообще происходит.
Вертикальное поле — под телефон
Поле сделано портретным, 9 на 16 клеток. Причина не эстетическая: в такую игру играют с телефона одной рукой, и горизонтальная раскладка сразу отрезала бы половину аудитории. На десктопе игра просто центрируется в колонке — это честнее, чем растягивать интерфейс, рассчитанный на палец.
Слой платформы
Отдельно от игры лежит platform.js — тонкая прослойка между игрой и площадкой,
где она размещена. Игра не знает, кто её запустил: она просто говорит «уровень пройден»
или «покажи рекламу», а прослойка переводит это на язык конкретной платформы.
Так один и тот же код может жить в разных местах без правок в самой игре.
Зачем это в портфолио разработчика бизнес-сервисов
Игра — противоположность SaaS почти во всём: здесь нет базы, нет ролей и нет чужих денег, зато есть жёсткий бюджет кадра и мгновенная обратная связь от игрока. Полезно время от времени решать задачу, где «работает» означает «интересно играть», а не «сходится с бухгалтерией».
Попробовать: pcalc.pro/game.
Все записи