Добавил в игру бесконечную арену для альфа-тестирования. Рассказываю зачем и как это устроено
Делаю изометрический extraction looter на Godot в одиночку. Недавно понял, что для Steam Playtest мне критически нужен способ протестировать баланс боёвки и привлечь первых игроков — но основной режим для этого слишком сложен. Extraction-геймплей требует понимания карты, механики экстракции, управления инвентарём. Новый игрок просто не доживёт до момента, когда сможет оценить бой.
Решение — отдельный режим «Арена», который можно запустить за 10 секунд и сразу драться.
Что такое арена
Это бесконечный волновой режим. Игрок появляется в центре небольшой карты, и на него накатывают волны по 5 случайных мобов. Убил всех — 30 секунд передышки, потом следующая волна. Умер — игра окончена, показывается достигнутая волна и личный рекорд.
Ключевые отличия от основной игры:
Уровень мобов растёт с каждой волной. На первой волне — мобы 1-го уровня, на десятой — 10-го. Это значит больше HP, сильнее урон, лучше экипировка. Кривая сложности идёт вверх до тех пор, пока игрок не сломается.
Банка здоровья восстанавливается между волнами. В основной игре зелья — ограниченный ресурс, который нужно экономить. На арене я хочу видеть, как игроки используют лечение под давлением, а не как они умирают потому что забыли купить расходники.
Лут падает, но исчезает между волнами. Можно подобрать оружие или броню с убитого моба и тут же использовать — система навыков привязана к экипировке, так что новый меч = новые скиллы. Но тащить ничего не нужно, инвентарь не забивается мусором.
Зачем мне это как разработчику
Арена решает три задачи:
1. Тестирование баланса. В основном режиме слишком много переменных: какую зону выбрал игрок, какой лут нашёл, сколько мобов решил обойти. На арене условия стандартизированы — все начинают одинаково, сложность растёт линейно. Если игроки стабильно умирают на 3-й волне или наоборот доходят до 50-й не напрягаясь, это чёткий сигнал что-то подкрутить.
2. Низкий порог входа для тестеров. Extraction-режим требует времени на изучение. Арена — нет. Нажал кнопку, выбрал персонажа, дерёшься. За 5 минут можно получить полное впечатление о боевой системе: как работают атаки, как уклоняться, как переключаться между оружием.
3. Контент для демонстрации. Короткие сессии на арене проще записывать и показывать. GIF с боем на 15-й волне выглядит понятнее, чем 10-минутное видео блуждания по лесу.
Как это сделано технически
Арена — отдельная сцена, которая переиспользует 90% существующего кода. Тот же игрок, те же мобы и AI, тот же UI. Различается только логика управления — вместо ZoneManager работает ArenaManager.
ArenaManager — синглтон (autoload), который:
Хранит текущую волну и счётчик живых мобов
Спавнит мобов
Слушает сигнал died от каждого моба
Запускает интермиссию когда mobs_alive == 0
Обновляет UI
Карта арены — обычная для игры карта 30×30 тайлов с заранее расставленными точками спавна по периметру. Никаких порталов, гейтов, зонных переходов. Мобы при спавне получают случайный тип из пула (гоблин, орк, человек, эльф) — те же четыре расы, что доступны игроку.
Смерть игрока отключает арену и показывает результат. Кнопка в UI позволяет выйти в меню в любой момент — даже посреди волны.
Что показал первый прогон
Интермиссия в 30 секунд — много. 15-20 достаточно чтобы подобрать лут и отдышаться, 30 — уже скучно.
Пять мобов за волну при текущем уровне сложности — многовато. Сейчас оставил только 2 моба.
Изменил баланс - увеличил урон у оружия, и добавил немного брони другим предметам
Страница игры в Steam: Null Zone : No Way Back




