Хочу ответить именно на этот фрагмент:
Даже примерно не представляю, как сбалансировать подобное.
Думаю, это не плохой повод поразмышлять о том, как балансируются открытые миры.
Задача
Как и при любом балансе, сначала надо понять, что мы вообще балансируем. А балансируем мы прогрессию персонажа, мира и активностей во времени. А также, сами активности по принципу сложность-награда. Прогрессия также включает в себя экономику.
Прогрессия
Задача баланса прогрессии - сделать так, чтобы не смотря на прокачку героя, получение нового эквипа и увеличивающейся доступности расходников, сложность игры росла соразмерно росту навыков игрока.
Так как у игрока есть множество способов пройти игру - сбалансировать сложность для них всех будет не возможно. Поэтому, нужно выделить ограниченное количество наиболее вероятных путей прохождения: прокачки, лута, маршрутов движения, последовательности выполнения квестов и т. д. Расписать последовательность всех событий в игре для каждого из путей.
Для каждого пути прохождения создаётся таблица. По вертикали располагаются единицы времени (в нашем случае, это игровые события), а по горизонтали - параметры персонажа и ожидаемая сложность событий.
Сложность событий в данном случае можно измерить средним количеством попыток для успешного прохождения.
У таких событий, как прокачка или покупка, сложности не будет. Поэтому для удобства, можно продублировать события, имеющие сложность, в отдельную таблицу.
Всё, что влияет на параметры персонажа, должно находиться в отдельных таблицах. Таких как баланс предметов, абилок, перков, врагов (лута с них, и XP за убийство) и т. д. Настраиваются они по ощущениям, и исходя из нарратива игры. Главное - обеспечить прогрессию, где персонаж со временем становится только сильнее.
Баланс экономики
По горизонтали ресурсы, по вертикали вертикали время (у нас это события). События, разумеется, будут разными для каждого из путей прохождения. Более того, события прямо взяты из путей прохождения.
Каждое событие в таблице экономики сопровождается получением или потерей ресурсов:
- Облутал мобов, убитых во время квеста, и продал лут торговцу - получил денег. Купил новый убер-меч или затарился зельями - потерял деньги.
- Получил за квест и убийства опыт, произошёл левел-ап, получил очко навыков. Потом потратил это очко на абилку в одной из веток.
- Сковал 10 мечей - потратил золото. В виде расходников, которые купил или мог бы продать. Но зато, получил +1 уровень кузнечного дела. Потом эти мечи ещё и продал.
Будет проще, если свести все ресурсы к необходимому минимуму. Например, все расходники свести к их стоимости в золоте.
Нужно сделать так, чтобы доходы были равны расходам.
Баланс активностей
Из таблиц с путями прохождения берём рекомендованную прокачку персонажа (для каждого отдельного пути прохождения) и ожидаемую сложность.
Создаём в движке персонажей с этой прокачкой. И там же вручную пилим активности. В процессе проверяем их на соответствие ожидаемой сложности.
Награды за эти активности берём из таблицы с экономикой. Не забываем про лут на локации, или выпадающий из мобов.
Некоторые активности (например, данжи) могут создаваться не вручную, а процедурно. В этом случае, нужно создать алгоритм, который создаёт активности исходя из рекомендованного уровня прокачки тех или иных навыков. Это отдельная большая задача. Её можно немного упростить, если алгоритм не будет учитывать ожидаемую сложность (в таблицах она будет константой).
Плейтесты
Плейтесты - это самое сложное и самое главное. Здесь задействуются и геймдизайнеры и тестировщики и фокус-группы и аналитика.
Геймдизайнеры пишут спеки для тестировщиков. Часть этих спеков уже написана в виде диздока. Но нужно отдельно пройтись по описанным в балансе путям прохождения, и проверить: соответствуют ли расчёты реальному геймплею. Если нет, то в чём ошибка: в коде игры, или в расчётах.
Далее пускаем фокус-группы, и смотрим: идут ли они по нашим задуманным путям? Если нет, то почему? Вносим изменения в сценарий, арт, GUI и лвл-дизайн, чтобы мотивировать игроков играть как задумано. Либо исправляем задуманные пути прохождения так, чтобы они были похожи на реальные. Позже к этому подключается аналитика.
Также, находим моменты, когда геймдизайнеры не удачно выбрали именно ожидаемую сложность. То есть, сложность соответствует ожидаемой, но игрокам всё равно слишком легко или слишком сложно. Методы поиска зависят от стадии разработки: сначала геймдизайнеры самостоятельно проверяют; позже опрашивают игроков из фокус-группы; а когда игра уже вышла (например, в ОБТ) - исходя из внутриигровой аналитики.
После каждого исправления, проводим все тесты заново. И так, пока игру не придётся выпустить в релиз.