Найти в Дзене

Затрону тему геймдизайна баланса, или то, чем еще приходится заниматься разработчикам игр

Затрону тему геймдизайна баланса, или то, чем еще приходится заниматься разработчикам игр В моем экспериментальном проекте, под рабочим названием LazyDungeon, я собираюсь делать имитацию боевки. Игра вообще про данжи, где надо захватывать "комнаты" данжа, отстраиваться там, прокачиваться и т.д. Т.к. я нищеброд, то на боевку я решил забить и сделать ее имитацию - таймер по истечению которого будут результаты "захвата" очередной комнаты. Технически - всё просто. Особенно, учитывая, что на результат кроме рандома влияет всего лишь один параметр: сила отряда. Ну, вернее два: сила отряда игрока и сила отряда врагов в комнате. И вот тут возникает вся магия математики в играх: как сделать так, чтобы результаты имитации боя были хотя бы отдаленно похожи на результат настоящего боя? Ключевой и стратегический момент в игре - игрок может нести потери. Если потерь нет - то это просто айдл механика, если потери есть - начинается стратегия. А стратегию нужно просчитывать, что и является тем лаком

Затрону тему геймдизайна баланса, или то, чем еще приходится заниматься разработчикам игр

В моем экспериментальном проекте, под рабочим названием LazyDungeon, я собираюсь делать имитацию боевки. Игра вообще про данжи, где надо захватывать "комнаты" данжа, отстраиваться там, прокачиваться и т.д. Т.к. я нищеброд, то на боевку я решил забить и сделать ее имитацию - таймер по истечению которого будут результаты "захвата" очередной комнаты.

Технически - всё просто. Особенно, учитывая, что на результат кроме рандома влияет всего лишь один параметр: сила отряда. Ну, вернее два: сила отряда игрока и сила отряда врагов в комнате. И вот тут возникает вся магия математики в играх: как сделать так, чтобы результаты имитации боя были хотя бы отдаленно похожи на результат настоящего боя?

Ключевой и стратегический момент в игре - игрок может нести потери. Если потерь нет - то это просто айдл механика, если потери есть - начинается стратегия. А стратегию нужно просчитывать, что и является тем лакомым кусочком игр данного жанра.

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

Поэтому я ввожу градацию сложности: в зависимости от соотношения сил, я выдаю шансы понести потери. Например, если у игрока отряд в два раза слабее вражеского - то он теряет до 80-90% отряда, и если у него кто-то остается, то захват комнаты проходит успешно. Таких градаций несколько, все сводится к тому, что чем меньше сил у игрока - тем больше потерь он понесет, но это еще не значит, что он проиграет. Если в отряде будет достаточно юнитов, что даже при потерях в 99.99% отряда, останется хотя бы один юнит - комната будет захвачена.

Я сделал в итоге 6 отрезков для определения потерь в отряде игрока, в зависимости от соотношения "сила отряда игрока / сила отряда врага". 0-0.5, 0.5-0.75, 0.75-1, 1-1.25, 1.25-1.5, 1.5-2. Минимальное соотношение будет всегда больше 0, т.к. как минимум 1 юнит то в отряде будет, шансы на победу при соотношении сил меньше 0.5 стремятся к 0, потому что потери стремятся к 100% (но никогда не будут 100%, пограничное значение 99.99%). И наоборот, если отряд игрока в 2 и более раз сильнее вражеского, то шансы на победу стремятся к 100%, потому что потери стремятся к 0.

Далее я определяю "корридоры сложности". Например: 0-20% потерь = ваще легко, 20-40% потерь - легко, 40-60% средне и т.д. Это и видит игрок и строит стратегию, готов ли он нести такие потери или нет.

В конце концов, имею две величины: количество потерь в битве, и получившуюся сложность (корридор потерь). Для имитации битвы вычисляю рандомное значение в пределах сложности, отбираю у игрока юнитов (тут еще предстоит додумать, как юнитов отбирать, т.к. они разные, с разной силой и т.д.). И получаю результат: если есть юниты - комната захвачена, если нет, то увы, игрок растерял весь отряд.

___

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