Санкт-Петербургский государственный университет
Кафедра технологии программирования
Зарипов Булат Илдарович
Выпускная квалификационная работа бакалавра
Методы достижения баланса боевых характеристик
юнитов в кооперативных стратегических
компьютерных играх
Направление 010300.62
Фундаментальная информатика и информационные технологии
Научный руководитель
ст. преподаватель
Севрюков С.Ю.
Санкт-Петербург
2016
Содержание
Необходимые термины и определения………………..........................................3
Введение…………………………………………………………...........................6
Постановка задачи……………………………………….......................................8
Глава 1. Вывод функции силы юнита………………………………..................10
1.1. Простейший случай………………………………………..................10
1.2. Урон в минуту………………………………………………...............11
1.3. Шанс увернуться……………………………………………..............11
1.4. Критический урон................................................................................12
1.5. Оглушение………………………………………………….................13
1.6. Физическая броня…………………………………………….............14
1.7. Удельные DPM и HP……………………………………….................15
Глава 2. Влияние тактических параметров юнита на функцию силы…..........16
2.1. Скорость перемещения и дальность атаки…………………............16
2.2. Маскировка и обзор……………………………………….................18
Глава 3. Зависимость стоимости юнита от значения функции силы................21
Заключение………….……………........................................................................24
Список литературы………………........................................................................25
2
Необходимые термины и определения
Игра — вид осмысленной непродуктивной деятельности, где мотив
лежит как в её результате, так и в самом процессе.
Компьютерная игра — компьютерная программа, служащая для
организации игрового процесса (геймплея), связи с партнёрами по игре, или
сама выступающая в качестве партнёра.
Геймплей (англ. gameplay), гейм-плей — игровой процесс с точки
зрения игрока. Геймплей включает в себя разные содержательные аспекты
компьютерной игры, в том числе технические, такие как внутриигровая
механика, совокупность определенных методов взаимодействия игры с
игроком и др. Само понятие геймплея крайне обобщено и обычно
используется для выражения полученных ощущений в ходе прохождения
игры, под влиянием таких факторов, как графика, звук и сюжет.
Стратегическая игра — популярный жанр компьютерных игр, в
котором
залогом
достижения
победы
является
планирование
и
стратегическое мышление.
Смысл таких игр заключается в управлении определёнными ресурсами,
которые необходимо преобразовать в преимущество над противником при
помощи оперативного плана, разрабатываемого с учётом меняющейся
обстановки. Обычными ресурсами в военных стратегиях являются войска
(отдельные персонажи, подразделения или армии) и позиция, которые
следует развивать и использовать для достижения преимущества и победы. В
экономических стратегиях акцент ставится на развитие экономической
инфраструктуры
подконтрольной
игроку
стороны.
Современные
стратегические игры, как правило, соединяют в себе как военные, так и
экономические признаки. В большинстве стратегий существуют как
экономическая составляющая, заключающаяся в сборе ресурсов, подготовке
войск, менеджменте базы, так и военная составляющая, проявляющаяся в
3
решении задач обороны или атаки стратегических точек, логистики,
разведки.
Различают пошаговые стратегические игры (англ. Turn-Based Strategy,
TBS), где игроки поочерёдно делают ходы, и каждому игроку отводится
неограниченное или ограниченное (в зависимости от типа и сложности игры)
время на свой ход, и стратегические игры в реальном времени (англ. Real
Time Strategy, RTS), в которых все игроки выполняют свои действия
одновременно, и ход времени не прерывается.
Многопользовательская игра — тип компьютерных игр, при котором
одновременно играет несколько человек. По внутриигровым правилам
делятся на 5 классов:
1. По одной «жизни». Этот режим применялся в некоторых играх для
первых ПК (например, ZX Spectrum). В этом режиме игроки совсем не
взаимодействуют друг с другом, каждый ведёт свою игру; когда игрок теряет
«жизнь», управление передаётся напарнику.
2. Кооперативная игра. Цель игроков общая: вместе победить
компьютерных соперников. Этот тип игры появился намного раньше сетевых
игр.
3. Личные соревновательные игры. Интересы игроков пересекаются, и
каждый игрок старается победить остальных.
4. Командные соревновательные игры. Игроки объединяются в
команды, соревнующиеся друг с другом.
5. Игры с полной свободой. Объединение в команды и война друг с
другом полностью лежат на совести игроков. Разумеется, предательства не
возбраняются.
Юнит — название боевой или рабочей единицы, предполагающей
возможность управления в компьютерных играх жанра «Стратегия» и «RPG».
Часто под юнитом подразумевается любая «живая единица», которая может
самостоятельно перемещаться, вступать в бой, собирать ресурсы, строить
4
здания и т. д.
Также в компьютерных играх выделяют два больших класса боевых
механик: боевые механики с target системой и non-target системой.
Ключевым отличием боевых механик с target системой и с non-target
системой
является
выбор
направления
атаки.
Non-target
система
подразумевает, что игрок собственноручно выполняет прицеливание и
управляет как направлением, так и темпом атаки. В target системе, напротив,
игрок задает атакующему юниту атакуемую цель, называемую target, и
вероятность поражения цели зависит от параметров атакуемого юнита,
атакующего юнита и тактических свойств местности.
5
Введение
При создании современной многопользовательской компьютерной игры
особое значение имеет баланс сил. Действительно, одна из аксиом геймдизайна гласит: игрок идет по пути наименьшего сопротивления. Если в
многопользовательской компьютерной игре силы противоборствующих
сторон не сбалансированы, это вызывает негативные эмоции у тех, кто играет
за более слабую сторону. Тем же, кто играет за более сильную сторону
конфликта, быстро становится скучно и пропадает вызов, поставленный
перед игроком. Несбалансированность сторон также может негативно
отразится на экономике игры. Так как основное большинство игроков будет
выбирать более сильную сторону, предполагаемые изначально равными в
удельном количестве игроков стороны окажутся в этом показателе
перекошенными. Как следствие, возникнет дефицит товаров, производимых
слабой стороной конфликта, и переизбыток товаров, производимых сильной
стороной.
Примером такой ситуации может служить игра Men of War: Assault
Squad 2 (В тылу врага: Штурм 2). В данной игре «Япония», будучи одной из
сторон конфликта, значительно уступает «СССР», «США», «Британии» и
«Германии». По этой причине достижения, полученные при игре за
«Японию» особенно ценны, так как демонстрируют высокий уровень
навыков игрока. Но в рейтинговых играх «Японию» практически не
используют, и многие отказываются играть в союзе с игроком, выбравшем эту
сторону.
Достижение качественного баланса сил в играх с большим количеством
сторон и юнитов требует или большого количества времени (статистические
методы), или большого количества ресурсов (итеративные методы), или
высококвалифицированных кадров (экспертные системы). Метод зеркальной
балансировки негативно влияет на вариативность геймплея и, как следствие,
6
уменьшает
интерес
к
игре.
Предлагаемый
математический
способ
достижения баланса сил требует меньшего количества ресурсов и времени, и
теоретически это не должно приводить к потере качества. Он может быть
полезен в настройке характеристик юнитов на ранней стадии разработки, с
последующим
применением,
например,
статистических
методов
для
калибровки. Также полученные силы юнитов можно использовать при
назначении цены покупки юнита.
7
Постановка задачи
Очень
важным
компьютерных
игр
аспектом
многопользовательских
является
баланс
сил
—
стратегических
равенство
шансов
противоборствующих сторон на победу. Важно, чтобы исход противостояния
зависел в большей степени от умений игроков и в меньшей — от удачи или
стартового положения.
Леннарт Нэке, преподаватель геймдизайна, дает такое определение
баланса сил:
а) Игра предполагает осознанный выбор. Несколько разных стратегий
могут принести победу, нет доминирующей.
б) Случай не играет такую роль, что умение игрока неважно. Умелый
игрок должен быть успешнее слабого.
в) Уровень сложности игры должен быть стабильным. Все сложности
игры должны быть в пределах способностей играющего.
По поводу многопользовательских игр Нэке добавляет:
г) Игроки воспринимают игру как честную.
д) Тот, кто отстаёт в начале игры, получает шанс нагнать ближе к концу.
е) Игра редко заходит в тупик, когда играют люди разного уровня.
Существует несколько общеизвестных способов достижения баланса
сил в боевой системе:
1. Зеркальный баланс. Все боевые юниты обоих сторон соответственно
идентичны в смысле боевых характеристик. Таким образом, различия между
соответствующими юнитами ограничивается внешним видом. Пример: Total
war:
Napoleonic
wars.
Пехотинец
Российской
империи
по
боевым
характеристикам идентичен пехотинцу армии Наполеона. Аналогично между
собой не имеют различий артиллерийские орудия и конница обоих сторон.
2. Итеративный процесс балансировки. Изначально все юниты
8
зеркально
равны.
С
каждой
итерацией
некоторые
характеристики,
определенные гейм-дизайнером, уточняются. Увеличение одних боевых
характеристик
компенсируется
уменьшением
других,
что
позволяет
сохранить баланс сил.
3. Статистический. Изначально характеристики боевых юнитов либо
берутся из реальной жизни (например, схема бронирования танка) либо
выводятся итеративно. В последствии собирается статистика побед и частоты
использования определенного юнита. Исходя из этой статистики принимается
решение об ослаблении или усилении юнита и внесении соответствующих
изменений в игру.
4. С использованием экспертных систем. Наименее распространенный
способ, так как создание экспертной системы требует большого количества
ресурсов и времени.
Данное исследование заключается в выводе математического способа
достижения баланса сил в боевой системе. Для корректного баланса
необходима метрика. Такой метрикой может стать коэффициент «силы»
юнита. Возможности, предоставляемые метрикой не ограничиваются
сравнением двух юнитов. Метрика силы юнита также дает возможность
оценить численно разницу в силах двух и более юнитов и оперировать это
разницей при построении баланса всей игры.
Задача: вывести функцию P(Unit), принимающую на входе параметры
юнита, и выдающую «силу» юнита, такую что:
Для любых двух неравных юнитов A и B выполняется:
P(A) < P(B) <=> Юнит А проиграет в дуэли юниту B при прочих
равных.
P(A) = P(B) <=> Шансы на победу равны, и исход зависит от других
параметров.
9
Глава 1. Вывод функции силы юнита
1.1. Простейший случай
Рассмотрим простейший случай: дуэль двух юнитов. То есть два юнита,
находясь в равных условиях, сражаются между собой до победы одного из
них. У каждого из юнитов есть очки жизни: HP (англ. Heat Points). В случае,
когда HP юнита меньше или равно нулю, этот юнит погибает. В таком случае
победа засчитывается оставшемуся в живых юниту. Также у каждого из
юнитов имеется показатель урона в минуту - DPM (англ. Damage per minutes)
– представляющий из себя удельное количество урона, наносимого
атакуемому юниту, в единицу времени - в минуту. DPM выводится из
характеристик персонажа, которые мы рассмотрим далее.
Для удобства пронумеруем юнитов:
первый юнит, с характеристиками HP1 и DPM1
второй юнит, с характеристиками HP2 и DPM2
Не умаляя общности можем считать, что первый юнит побеждает в
дуэли. В противном случае меняем их местами, считая победителя первым, и
проигравшего — вторым.
В таком случае, время жизни в минутах первого и второго юнита
соответственно равно:
Time1=T 1=
HP 1
DPM 2
(1)
Time 2=T 2=
HP 2
DPM 1
(2)
Так как первый юнит побеждает, из этого следует, что время жизни
первого юнита больше времени жизни второго юнита. Получаем:
Time1=T 1=
Отсюда
получаем
HP 1
HP 2
>
=T 2=Time 2
DPM 2 DPM 1
функцию
Power
соответствующую изначальным условиям:
10
для
некоторого
(3)
юнита
А,
Power=P ( A)= HP A×DPM A
(4)
Действительно, если значение функции Power(Unit) для юнита A больше
значения этой функции для юнита B, т.е.:
Power ( A)=P ( A)= HP A×DPM A> HP B×DPM B=P ( B)= Power ( B)
(5)
получаем:
Time1=T 1=
HP 1
HP 2
>
=T 2=Time 2
DPM 2 DPM 1
(6)
Таким образом, выполняется изначальное условие на искомую функцию.
1.2. Урон в минуту
Раскроем определение урона юнита в минуту.
Пусть имеются параметры:
- Damage – урон от одного успешного удара;
- AS (англ. Attack Speed) – скорость атаки, кол-во ударов в минуту.
Тогда DPM юнита будет вычисляться как:
DPM A=Damage A× AS A
(7)
Получаем:
Time1=
HP 1
HP 2
>
=Time 2
AS 2∗Damage 2 AS 1∗Damage 1
(8)
Получаем формулу Power, соответствующую изначальному условию:
Power=P ( A)= HP A× AS A×Damage A
(9)
1.3. Шанс увернуться
Шанс увернуться от атаки (англ. Evasion, E) - вероятность того, что атака
юнита соперника не достигнет своей цели, и произойдет промах.
Рассмотрим параметр:
- E (Evasion) – Шанс увернуться от удара.
11
Для данного параметра допустимый диапазон значений: от 0 до 1
включительно. Например, если юнит A имеет 35% шанс увернуться от атаки
по нему, то параметр Evasion примет значение 0.35.
Получаем неравенство вида:
HP 1
HP 2
>
AS 2 ×Damage 2×(1−E 1 ) AS 1×Damage 1×(1 — E 2)
(10)
Тогда искомая формула силы Power(Unit) примет вид:
Power=P ( A)=
HP A ×AS A× Damage A
(1−E A )
(11)
1.4. Критический урон
Критический урон (англ. Critical Strike, CS) - пассивная способность
юнита, позволяющая периодически наносить критический урон в случае
успешной атаки.
Пусть у юнита есть вероятность нанести критический урон. Рассмотрим
параметры, на это влияющие:
- CSD (Critical Strike Damage) – коэффициент критического урона.
Область допустимых значений: (1, +∞)
Например, если базовый урон юнита Damage = 100HP, а CSD = 2.5, то
критический урон будет составлять:
Damage Critical =Damage A×CSD A=250HP.
(12)
- CSP (Critical Strike Probability) – шанс критического урона.
Область допустимых значений: [0, 1)
Например, если у некоторого юнита параметр CSP равен 0.1, то каждый
удар этого юнита будет критическим (т.е. нанесет критический урон) с
шансом 10%.
12
Отсюда, имеем:
HP 1
>...
( AS 2×D 2+ CSP 2×(CSD 2−1)×D 2)×(1−E 1)
...>
HP 2
(AS 1×D 1 +CSP 1×(CSD1−1)× D 1)×(1−E 2)
(13)
Примечание: в данном случае Damage1 заменено на D1.
Тогда искомая формула примет вид:
Power=P ( A)=
HP A ×( Damage A×(AS A+CSP A×(CSD A−1)))
(1−E A )
(14)
1.5. Оглушение
Оглушение (англ. Stun, Bash) - пассивная способность юнита,
позволяющая в результате успешной атаки оглушить юнит противника.
Пусть у юнита есть вероятность при атаке оглушить противника на
короткий промежуток времени.
Рассмотрим параметры, на это влияющие:
- SP (Stun Probability) – вероятность того, что удар оглушит
атакуемый юнит противника;
- SD (Stun Duration) – длительность оглушения(в минутах).
С точки зрения игровой механики, оглушение юнита соперника
продлевает время жизни юнита, который произвел оглушение.
Очевидно, что SP * AS – ожидаемое количество оглушений в минуту. Из
этого следует, что ожидаемое время нахождения юнита соперника с
оглушенном состоянии в минуту составляет:
AS ×SP×SD
Пример. Пусть характеристики юнита таковы:
AS = 100;
SP = 0.05 (5%);
13
(15)
SD = 1/60 (1 sec).
Тогда ожидаемое время оглушения в минуту: AS*SP*SD = 5/60 = 5 sec. То
есть вражеский юнит за минуту боя нанесет урона как за 55 секунд,
суммарный DPM уменьшится на 5/60. Отсюда получаем ожидаемое время
жизни юнита:
Time1=
HP 1
(AS 2×D2 +CSP 2×(CSD 2−1)×D2 )×(1−E 1 )×(1−AS 1×SP 1×SD1 )
(16)
Тогда искомая функция силы примет вид:
Power=P ( A)=
HP A ×( Damage A×(AS A+CSP A×(CSD A−1)))
(1−E A)×(1−AS A×SP A×SD A)
(17)
1.6. Физическая броня
Физическая броня (англ. Physical Armor, PA) - коэффициент, на который
уменьшается весь получаемый юнитом урон.
Характеристика юнита:
- PA(Physical Armor) – показатель брони юнита.
Пример: если коэффициент брони атакуемого юнита PA равен 0.05, то он
получит только 95% от исходного урона. То есть, показатель Physical Armor
уменьшает DPM противника в целом, так как действует и на критические
удары юнита соперника, и когда первый юнит оглушен. Получаем:
Time1=
HP 1
(( AS 2× D2 +CSP 2 ×(CSD 2−1)× D2)×(1−E 1)×(1−AS 1×SP 1×SD1))×PA1
(18)
Тогда искомая функция силы примет вид:
Power=P ( A)=
HP A×PA A×( Damage A×( AS A+CSP A×(CSD A−1)))
(1−E A)×(1−AS A×SP A ×SD A )
14
(19)
1.7. Удельные DPM и HP
Введем понятия удельный урон в минуту и удельные очки жизни:
Удельный урон в минуту DPMtotal (англ. Total Damage Per Minute) - урон в
минуту юнита со всеми модификаторами, на этот параметр влияющими:
DPM total=Damage×( AS+ CSP×(CSD−1))
(20)
Удельные очки жизни HPtotal (англ. Total Heat Points) - очки жизни юнита
со всеми модификаторами, на этот параметр влияющими:
HP total =
HP× PA
(1−E)×(1−AS×SP×SD)
(21)
Таким образом, можем записать функцию силы в виде:
total
total
Power (Unit )=P (Unit )= DPM Unit ×HP Unit
15
(22)
Глава 2. Влияние тактических параметров юнита на
функцию силы
В стратегических играх тактический аспект имеет очень важное
значение. Именно умелое использование тактических свойств местности и
тактических параметров юнита позволяет добиться преимущества над
соперником. Обычно эти понятия разделяют. Так, баланс на карте
достигается методами “дизайна уровней” (англ. level-design), позволяющими
игроку реализовать сильные и нивелировать слабые стороны юнитов. Но
немаловажен и баланс тактических параметров юнита, что мы и рассмотрим
в этой главе.
2.1. Скорость перемещения и дальность атаки
Скорость перемещения (англ. Speed, S) - тактический параметр юнита.
Отвечает на вопрос: “Какое количество условных единиц внутриигровой
дистанции преодолеет юнит за заданное время?”. Для удобства условимся
обозначать Speed как количество внутриигровых метров, пройденных
юнитом за минуту времени.
Дальность атаки юнита (англ. Attack Range, AR) - тактический параметр
юнита, характеризующий максимальную дистанцию атаки, выраженную в
единицах внутриигровой дистанции. Для удобства условимся обозначать
Attack Range как расстояние во внутриигровых метрах, на котором юнит
может вести успешную атаку.
Рассмотрим ситуацию боевого столкновения двух юнитов A и B
враждующих сторон. Пусть юниты имеют тактические параметры:
SA = 120 m/m;
ARA = 500 m;
SB = 100 m/m;
ARB = 300 m;
16
Заметим, что параметр дальность атаки юнита A больше, чем
аналогичный параметр юнита B. В следствии этого, после встречи данных
юнитов, первым начнет атаку юнит A. Количество урона Damage0, которое
безответно нанесет юнит A, в то время как юнит B сокращает дистанцию,
можно оценить как:
Damage 0=
AR A−AR B
total
× DPM A
SB
(23)
Значит, количество очков прочности HPB0 юнита B к тому моменту, когда
оба юнита будут атаковать друг друга, уменьшится на значение Damage0.
Отсюда получаем:
T A=
HP total
HP total
AR A−AR B
A
B
>
−
=T B
total
total
SB
DPM B
DPM A
(24)
Что эквивалентно:
total
total
DPM A ×HP A +
AR A−AR B
total
total
total
total
(25)
×DPM A ×DPM B > HP B ×DPM B
SB
Введем переменную ARAvg (англ. Average Attack Range) - среднее значение
дистанции атаки для всех юнитов. Методом определения среднего, в
зависимости от конкретной механики боевой системы, может быть среднее
арифметическое, среднее квадратичное, среднее геометрическое и т.п. Тогда
верно следующее:
AR A− AR B AR A−AR Avg AR B−AR Avg
=
−
SB
SB
SB
(26)
Отсюда получим неравенство:
total
DPM total
A ×(HP A +
AR A− AR Avg
×DPM total
B )>...
SB
total
...> DPM total
B ×( HP B +
AR B−AR Avg
× DPM total
A )
SB
(27)
Введем переменные:
Средняя скорость SAvg (англ. Average Speed) - средняя арифметическая
скорости всех юнитов игры.
Средний удельный урон в минуту DPM total
(англ. Average Total Damage
Avg
17
Per Minute) - среднее арифметическое значения DPMtotal для всех юнитов
игры.
Получим формулу силы юнита, учитывающую такие тактические
параметры юнита, как скорость перемещения S и дальность атаки AR:
total
Power ( A)=DPM total
A ×( HP A +
AR A−AR Avg
×DPM total
Avg )
S Avg
(28)
2.2. Маскировка и обзор
Дальность видимости (англ. Visibility Range, VR) - тактический параметр
юнита, характеризующий радиус круга, в пределах которого все объекты,
кроме вражеских юнитов, помечаются как видимые. Внутри данного круга
все статичные объекты явно принимают свое состояние, например, здание,
разрушенное в ходе боевых действий, для игрока выглядит как абсолютно
целое и не тронутое до тех пор, пока круг обзора хотя бы одного из его
юнитов не коснется данного здания. Как только это произошло - здание
принимает свой настоящий вид, и игрок понимает, что оно было разрушено, и
делает из этого соответствующие стратегические выводы.
Маскировка (англ. mask) - вещественное число, большее нуля и меньшее
единицы, характеризующее модификатор на расстояние, с которого данный
юнит будет замечен вражеским юнитом.
Рассмотрим взаимодействие маскировки и дальности видимости на
примере. Пусть имеются два юнита A и B враждующих сторон со
следующими значениями маскировки и дальности видимости:
VRA = 400m;
maskA = 0.05;
VRB = 350m;
maskB = 0.03.
Рассмотрим ситуацию, когда юнит B находится неподвижно на ровной
18
местности. В его направлении движется юнит A. Тогда юнит A обнаружит
вражеского юнита B на расстоянии:
DistanceA-B = VRA * (1 - maskB) = 380m
(29)
Пусть юнит A после обнаружения противника продолжит движение в его
направлении. Тогда он будет обнаружен неподвижным юнитом B с
расстояния:
DistanceB-A = VRB * (1 - maskA) = 332.5m
(30)
Данные расстояния безусловного обнаружения юнитов имеют очень
важное значение для стратегической составляющей игры. Но мы также
можем посчитать их влияние на боевую механику и отразить это в функции
силы юнита.
Для иллюстрации данного влияния рассмотрим показательный пример
противостояния “снайпера” (юнит A) и “солдата-призывника” (юнит B).
Пусть “снайпер” обладает характеристиками:
ARA = 400m;
VRA = 400m;
maskA = 0.5;
Пусть “солдат-призывник” обладает характеристиками:
ARB = 200m;
VRB = 300m;
maskB = 0.05;
SB = 120 m/m.
Тогда юнит B будет обнаружен “снайпером” с расстояния:
DistanceA-B = VRA * (1 - maskB) = 380m
(31)
Этой дистанции достаточно, чтобы начать вести прицельный огонь, так
как она больше дистанции атаки “снайпера”. “Солдат-призывник”, видя
направление, но не видя самого источника огня, движется по прямой в
направлении юнита A. Юнит A будет обнаружен с расстояния:
DistanceB-A = VRB * (1 - maskA) = 150m
19
(32)
Только приблизившись на такое расстояние юнит B сможет обнаружить
“снайпера” и начать вести ответный огонь. Следственно, пройденный
юнитом A путь будет составлять:
D = DistanceA-B - DistanceB-A = 230m.
(33)
Такую дистанцию “солдат-призывник” преодолеет за:
T Free=
D
=1.91(6)≈1.92m
SB
(34)
Количество урона, безответно полученного юнитом B, будет составлять:
total
Damage Free =T Free ×DPM A
(35)
Отразим это в неравенстве времени жизни юнитов:
Time A=
HP total
VR A×(1−mask B )−VR B (1−mask A ) HP total
A
B
+
>
=Time B
total
S
DPM B
DPM total
B
A
(36)
Определим VRAvg как среднее значение дальности видимости для всех
юнитов игры, а maskAvg как среднее значение маскировки для всех юнитов
игры. Тогда искомая формула силы юнита примет вид:
P (Unit)=DPM
total
×(HP
total
+
VR ×(1−mask Avg )−VR Avg ×(1−mask )
total
× DPM Avg )
S Avg
20
(37)
Глава 3. Зависимость стоимости юнита от значения
функции силы.
Пусть имеется юнит A со следующими удельными характеристиками:
- удельные очки здоровья юнита А: HP total
,
A
- удельный урон в минуту юнита A: DPM total
.
A
Пусть имеется юнит B со следующими удельными характеристиками:
- удельные очки здоровья юнита B: HP total
,
B
- удельный урон в минуту юнита B: DPM total
,
B
такими, что:
Power(A) = n * Power(B),
(38)
где n — некоторая константа.
Пусть имеется стационарный юнит X, имеющий бесконечное здоровье
и удельный урон в минуту DPM total
.
X
Сравним боевую эффективность юнита A и отряда из n экземпляров
юнита B. Для этого рассмотрим боевую ситуацию, в которой юнит A
сражается с юнитом X до тех пор, пока очки жизни юнита A не станут равны
нулю. Измерим суммарный нанесенный юнитом A урон. Повторим
эксперимент для отряда из n юнитов B.
Из (38) получаем:
total
total
total
total
P ( A)=HP A ×DPM A =n×P( B)=n×HP B ×DPM B
(39)
Пусть TA - время жизни в минутах юнита A. Тогда:
total
T A=
HP A
total
DPM X
(40)
Пусть TB - время жизни в минутах юнита B. Тогда:
total
T B=
HP B
total
DPM X
(41)
Тогда суммарны нанесенный юнитом A урон можем оценить как:
total
total
Damage A = DPM A ×T A
21
(42)
Суммарный нанесенный отрядом из n юнитов B урон равен:
total
Damage total
B = DPM B ×
n+( n−1)+...+1
n+1
×T B=DPM total
B ×T B ×
n
2
(43)
Учитывая (39), (40) и (41), получаем:
T A×DPM total
A =
total
total
P ( A)
n×P (B) n×HP B × DPM B
=
=
=n× DPM total
B ×T B (44)
total
total
total
DPM X
DPM X
DPM X
Отсюда имеем:
total
T A DPM B ×n
=
total
TB
DPM A
(45)
Из (42), (43) и (45) получаем:
Damagetotal
DPM total
2×n
A
A ×T A
=
=
total
n+1 n+1
Damage B
DPM total
B ×T B ×
2
(46)
Определим, какова будет разница между одним сильным юнитом и
отрядом численностью n юнитов в нанесенном уроне при
n →∞ , если их
силы равны:
lim
n→∞
(
)
2×n
2
=lim 2+
=2
n+1 n →∞
n+1
(47)
Отсюда получаем, что при росте количества юнитов без потери в
суммарной силе отряда, его боевая эффективность падает, и в пределе
стремится к половине исходной эффективности. Объясняется это тем, что
юнит A на протяжении всего боевого столкновения наносит фиксированный
урон, и его DPM total
никак не меняется. Отряд из n юнитов B имеет в начале
A
столкновения удельный суммарный урон в минуту
total
n×DPM B
. Но в
течении боя юниты отряда умирают по одному, что сказывается на
суммарном удельном уроне всего отряда.
Из полученных данных получаем зависимость стоимости найма юнита
от его значения значения функции силы:
• юнит UnitWeak с самым низким показателем силы имеет цену:
Cost (Unit Weak )=const×P (Unit Weak )
22
(48)
• юнит UnitStrong с самым высоким показателем силы имеет цену:
Cost(Unit Strong )=const×2×P (Unit Strong )
• цена остальных юнитов рассчитывается по формуле:
(
Cost (Unit)=const×
)
P(Unit )−P (Unit Weak )
+1 ×P(Unit )
P( Unit Strong ) P (Unit Weak )
23
(49)
Заключение
В данной работе был разработан подход к численному измерению силы
юнита. Введение данной метрики позволяет достичь баланса боевых и
тактических характеристик боевые и тактические характеристики юнита без
необходимости попарного сравнения со всеми остальными.
Развитие
данного
метода
достижения
баланса
сил
в
многопользовательских стратегических компьютерных играх имеет свои
преимущества. Этот способ подразумевает оперирование с числами и не
требует уже готовой реализации игры, он может быть полезен на ранних
этапах создания продукта. Если же такая информация, как характеристики
юнитов, находится в структурированном виде, например, в таблицах Excel, в
файлах XML, JSON, возможна их автоматическая проверка и сравнение. То
есть специалист, занимающийся балансом боевых характеристик, может
моментально получать предварительную информацию о балансе в удобном
ему виде.
Также численное значение силы юнита можно использовать как
важнейший параметр при определении стоимости найма и содержания
данного юнита во внутриигровой валюте.
Важным преимуществом является также и относительно низкая
стоимость и высокая скорость такого рода математических вычислений.
24
Список литературы
1. Lennart Nacke, Chance and Skill in Game Design,
http://gamecareerguide.com/features/1370/chance_and_skill_in_game_.php
2. Game Balance concepts. https://gamebalanceconcepts.wordpress.com/
3. Game Design Concepts. http://aushestov.ru/шрайбер/
4. Искусственный интеллект и ЭС.
http://expro.ksu.ru/materials/ii_i_es/book.html
5. Jesse Schell. The Art of Game Design: A book of lenses.
6. Raph Koster. A Theory of Fun for Game Design.
7. Scott Rogers. Level Up!: The Guide to Great Video Game Design.
8. Подкаст #Как делают игры №129. http://galyonkin.com/podcast/
25
Отзывы:
Авторизуйтесь, чтобы оставить отзыв