mypassword

На Пикабу
Дата рождения: 11 ноября
148 рейтинг 0 подписчиков 2 подписки 3 поста 0 в горячем
Награды:
5 лет на Пикабу
16

Добавил в игру бесконечную арену для альфа-тестирования. Рассказываю зачем и как это устроено

Делаю изометрический 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 моба.

Изменил баланс - увеличил урон у оружия, и добавил немного брони другим предметам

Арена с 2 противниками - маги против орка :)

Арена с 2 противниками - маги против орка :)

Страница игры в Steam: Null Zone : No Way Back

Показать полностью 2
11

Делаю изометрический extraction looter на Godot в одиночку. Рассказываю про две механики, которые определяют всю игру

Около двух месяцев назад я начал делать игру, которую сам хотел бы найти в Steam — изометрический extraction looter ARPG, что-то на пересечении Escape from Tarkov и Ultima Online. Хардкорный PvP, где умереть можно от кого угодно вне зависимости от разницы в уровнях, а после смерти теряешь всё, что было при себе. Движок — Godot 4.5.

Хочу рассказать про две механики, которые сильно повлияли на архитектуру и на ощущение от игры.

Навыки привязаны к предметам, а не к персонажу

В игре нет классов. Вообще. Ты — это то, что на тебе надето.

Экипировал огненный меч — получил "Cone Slash" и "Flame Wave". Подобрал ледяной посох — теперь у тебя "Ice Bolt" и "Frost Nova". Нашёл ботинки с навыком "Roll" — можешь делать уклонение, но у ботинок есть прочность, и через несколько перекатов они сломаются, и навык пропадёт.

Каждый слот экипировки (оружие, шлем, нагрудник, перчатки, ботинки, щит) может давать один-два активных скилла. Панель навыков заполняется динамически: надел новый предмет — скилл-бар обновился.

Технически это работает через фабрику скиллов. Каждый предмет хранит массив ID скиллов в JSON, при экипировке фабрика создаёт инстансы нужных классов, и они прокидываются в скилл-бар игрока. Все параметры — урон, кулдаун, тип — хранятся в отдельных файлах скиллов, а базовый урон атакующих скиллов берётся из характеристик оружия, а не захардкожен в самом скилле. Поэтому один и тот же "Cone Slash" на ржавом мече и на легендарном клинке бьёт совершенно по-разному.

Мобы работают по той же системе. У каждого моба есть своя экипировка, и свои скиллы от этой экипировки. Когда моб умирает, его шмот выпадает — и это тот же самый шмот, который он использовал в бою. Если гоблин кидал в тебя фаерболы из посоха, ты можешь подобрать этот посох и кидать такие же.

Что это даёт для геймплея: в каждом рейде билд может быть разным. Зашёл с мечом и щитом, потерял щит в бою, подобрал лук с мёртвого моба — и вот ты уже совсем другой персонаж. Нет привязки к одной роли, нет прокачки скиллов за опыт. Только то, что сумел добыть и донести до экстракции.

Прочность снаряжения зависит от типа получаемого урона

Вторая механика, которой я доволен — это система прочности. Каждый предмет изнашивается, но не просто «минус один за удар», а с привязкой к типу урона.

Физическая атака по тебе? Прочность теряет та броня, у которой выше показатель физической защиты. Магическая атака? Страдает броня с магической защитой. Логика в том, что именно та часть экипировки, которая реально «принимает» урон на себя, и изнашивается быстрее.

Оружие теряет прочность только когда удар реально попадает по врагу. Промахнулся или враг увернулся — оружие не страдает. Ботинки с навыком уклонения теряют прочность при каждом использовании перекатов. Это касается и мобов — их экипировка тоже изнашивается в бою, так что с сильного моба может выпасть потрёпанный нагрудник с 3/40 прочности.

На убийство 2 мобов потрачено 16 из 50 прочности, но у мобов есть еще меч :)

На убийство 2 мобов потрачено 16 из 50 прочности, но у мобов есть еще меч :)

Починка стоит золото, причём пропорционально стоимости предмета и степени износа. Дорогая легендарка с 1 прочностью из 50 обойдётся в серьёзную сумму. Это создаёт постоянный денежный сток и делает решение «чинить или искать новую» нетривиальным.

В сочетании с системой размеров брони (персонаж размера M не может надеть броню размера XL — а размер определяется расой при создании персонажа) это формирует постоянный цикл: даже если ты нашёл идеальный предмет, рано или поздно он износится, и тебе снова нужно лезть в опасную зону за новым.

Что дальше

Сейчас игра вышла в Steam Playtest. Основные системы работают: бой, мобы с тактическим AI (фланкируют, рейнджеры прячутся за мили), fog of war с конусом зрения, инвентарь с весом, экстракция через портальные камни, зоны с автоматическим ресетом. Работаю над UI-полишем и контентом.

Страница игры в Steam: https://store.steampowered.com/app/4369800/Null_Zone_No_Way_...

UPD: добавил немного геймплея, где видно еще одна интересная фича для реализации - "туман войны"

Показать полностью 2 1
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества