Получение опыта

Материал из Клуб любителей рогаликов
Перейти к: навигация, поиск

Поскольку игроки часто не могут сразу достигнуть первичной цели, очень важными становятся второстепенные получаемые бонусы (или взятки (payoffs), или полезности).

Очень большое продвижения слишком быстро (убив кобольда - получить 35-ый уровень) обесценивает бонус, также как и слишком медленное продвижение (убить всё в целой игре и может быть пройти полпути ко 2-му уровню) означает, что никто даже не ощутит награды.

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

Рассмотрим случай довольно обобщенного подземелья, известной roguelike-игры.

Подземелье имеет шестнадцать уровней (ярусов), предопределенное количество монстров на ярус, и уникальных монстров. Нет 'произвольных' чудовищ. Мы назовем свою теоретическую roguelike-игру Jiavlo и реализуем ее на Java.

Опыт дается только когда мы убиваем монстра.

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

Нам нужно решить, сколько уровней мы хотим сделать достижимыми для игрока.

Так что же составляет хорошее количество уровней, которое может быть приобретено? Большинство аудитории будет по меньшей мере знакомо (в первом приближении) с семейством игр D&D, в которых Вы запускаетесь на уровне один, и прогресс - технически неограничен, но это менее значительно, раз уж Вы получили двузначное число опыта.

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

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

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

Полезно все же рассмотреть здесь линейный случай, поскольку он формирует основу, на которой Вы сможете построить экспоненциальную формулу, и если Вы так сделаете, Вы по всей вероятности получите хорошо сбалансированную игру. Но прежде, чем мы рассмотрим линейную модель, давайте изучим постоянную модель. Это даже хуже в аспекте бонусов, но вместе с тем, значительно проще, чтобы правильно сбалансироваться.

За каждое убитого Вами монстра Вы получаете 1 xp. На ярусе 50 монстров. (Умножая на 16 ярусов, получаем 800 xp) Теперь мы можем сказать что-то вроде того, что за каждые полученные Вами 40 xp, Вы получите level-up. (800 / 20). Заметим, что Вы начинаете на уровне 1, так что Вы получите 20-ый уровень после убийства 760 созданий, т.е. Вы максимизируете свои уровни незадолго до того, как убьете UberLintDaemon, который выбросит заканчивающий игру артефакт, так что у Вас есть время получить максимальное удовольствие от ярусов до того как игра закончится.

Если на более глубоких ярусах убивать монстров становится труднее, тогда для игроков логично попытаться полностью зачистить ярус перед переходом на следующий для того, чтобы сначала получить 'легчайшие' xp (минимизируя риск, максимизируя бонусы).

Заметьте, что мы не требуем от них убить 40 монстров для того, чтобы продвинуться на второй уровень. Это - слишком жестко, и у многих из начинающих игроков уйдет слишком много времени, чтобы получить его. Десять - более разумное число. И мы хотим, чтобы они могли дойти до, скажем, уровня 5 или 6 довольно быстро, прежде чем пробираться станет трудно. Так давайте сломаем его, сказав, что к концу 15 яруса подземелья они будут 20 уровня, и они приобретут уровень за ярус, который они зачищают, скажем, будучи игроком 10 уровня. Это означает, что мы должны построить зависимость xp от 0 (на уровне 1) до 250 (которые они имеют после зачистки 5 ярусов при уровне 10). Мы могли бы возвратиться и перезаписать свои предположения и заставить их запускаться с уровня 0, а затем приобретать уровень каждые 25 points. В математических терминах это становится для нас красиво и просто.

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

Давайте модифицируем, как игроки повышают уровни. Вот таблица (уровень, требуемые xp):

10
25
315
430
550
675
7105
8140
9180
10225
(и по 50 [xp] на каждый последующий). 

Так, после зачистки яруса 1 (50xp), они будут пятого уровня, зачистка 2 яруса дает им шестой уровень, граничащий с седьмым, и т.п. Это дает четкую последовательность: для того, чтобы получить level up, Вам нужно столько дополнительных xp, сколько было у Вас при последнем level up'е плюс пять, пока Вы не дойдете до требуемого завершающего 50-го уровня.

Несмотря на эту простую математику, у меня есть искушение повозиться с ней дальше, поскольку пятый уровень после зачистки монстров только на одном ярусе кажется 'слишком много'.

Но давайте возьмем эту 'постоянную' модель и посмотрим, что случится, когда мы сделаем её 'линейной'. Допустим, что все монстры на ярусе x подземелья 'монстры уровня x' и мы даем x point’ов за их убийство. Максимальная сумма опыта в игре теперь: 6800. Математика для работы этой [модели] начинает становиться более сложной, но формула: ((n2+n)/2) умножить на количество монстров на ярусе). Где n количество ярусов, а количество монстров на ярусе все еще 50.

Очевидно, мы не можем теперь просто умножать стоимость получения level up’а на 8.5 (6800 разделенное на 800), поскольку это должно означать, нам нужно 85 xp, чтобы получить второй уровень, Что означает всеобщую зачистку на ярусе 1, и треть яруса 2. Внезапно все становится намного сложнее! Один путь решения - попытаться засчитывать убитых монстров для приобретения уровня, допуская, что сначала должны быть убиты все монстры низкого уровня. Что легче, чем это звучит для уровней с 10 по 20, поскольку мы уже знаем, что мы хотим, чтобы игрок продвигался к средней точке уровню. И это не слишком трудно разработать (особенно с электронной таблицей).

для 10-го уровня и выше (уровень, требуемые xp):

10900
111225
121600
132025
142500
153025
163600
174225
184900
195625
206400

(Вот формула для этого: ((n2+n)/2)+(25*(n+1)), где n = требуемый уровень - 5. Минус пять, потому что уровней опыта у нас на 5 больше, мы получим при зачистке последнего яруса подземелий)

Теперь если мы хотим держать ту же последовательность, то есть, доходящую до пятого уровня после зачистки первого яруса подземелий (фу!) мы оставляем эту часть таблицы и вычисляем последовательность от 5-го до 10-го уровня. Или, мы можем выбрать другую формулу, чтобы управлять получением низших уровней, как например: (n*n)+(14*n)-1, где n - текущий уровень, что дает:

10
214
345
495
5166
6260
7379
8525
9700

Что является значительно более подходящим для низших уровней подземелья и как быстро они должны быть пройдены. К несчастью я заметил, что график xp с поразительным сходством накладывается на кривую Crawl. Какой стыд :-)

Но конечно никто не хочет получать 12 xp за убийство Дракона, так что нам нужно думать о том, сколько xp, мы давать за убийство монстров каждого уровня. Я предложил в начале статьи сделать это экспоненциально - вероятнее всего в соответствии с ожиданиями игроков. Скажем, что на первом ярусе Вы получаете 1 xp за убитого монстра, а на 16-ом ярусе Вы получаете 10,000 xp за монстра (так как на 16-ом ярусе есть полмиллиона xp за находящихся на нем монстров - достаточно впечатляющая сумма :-)

'Базовая' формула для этого может быть: (n((n-1)/(15/4)))

Что дает следующие результаты:

11
21.847849797
33.414548874
46.309573445
511.65914401
621.5443469
739.81071706
873.56422545
9135.9356391
10251.1886432
11464.1588834
12857.6958986
131584.893192
142928.644565
155411.695265
1610000

Далее Вам нужно вычислить, сколько xp необходимо для каждого уровня (используйте электронную таблицу!). Берите среднюю величину между уровнями, затем как-нибудь вычисляйте формулу для прохождения. Я пришел к (2n+n3)-(25*n). Которая вполне годится, но берется на то время, пока мы не найдем что-то лучшее. В частности, Я должен свести базовый номер мощности к чему-то в диапазоне 1.97 - 1.99 с тем, чтобы приблизится к 'идеальной' величине для этого последнего уровня (Вы должны дойти до 20-го уровня с тремя оставшимися на нем существами, в соответствии с формулой выше).

Некоторая информация к размышлению: делайте вознаграждения действительно соответствующими трудности. Например, если в действительности убить монстра 12-го уровня незначительно труднее, чем монстра 8-го уровня, почему за его убийство дается в десять раз больше xp?

Фактически, трудность балансировки даже ограниченного сценария, как подчеркнуто выше, означает, что для Вас значительно лучше иметь 'сложную функцию' для расчета опыта, чем стремиться к некоторой математически чистой функции.

Пример: Нападение * Защита является той же хорошей мерой боеспособности (игнорируя эффекты толпы (swarming), принимаем, что персонаж всегда может отступить, так чтобы одновременно он сражался только с одним монстром). Нападение – это средний наносимый им ущерб, (т.е. вероятность попадания умножить на средний урон и умножить на количество атак за ход), а защита – это какой средний урон он может получить (т.е. вероятность избежать урона умножить на hit point’ы).

Пример 1: крыса, которая наносит 1-2 pd (пунктов повреждения), имеет вероятность попадания от 1 до 3, не имеет шанса увернуться и 2 hp может оцениваться 1 xp. ((1.5*(1/ 3))*2)

Пример 2: балрог, который наносит 10-20 pd со 100% вероятностью попадания, делает три атаки за ход, отражает все, что угодно от 50% атак и имеет 100 hp может оцениваться (15*3)*((100/50)*100) или 9000 xp. В действительности и этого может оказаться недостаточно :-)

Вы можете увеличить распространение, поднимая xp из вышеуказанной формулы в степени несколько выше, чем 1, попробуйте 1.1 или 1.2. 9,0001.2=55,602, что должно осчастливить игроков. Поскольку 1 в любой степени всегда 1.

Другие факторы для рассмотрения: ярус подземелий, до которого дошел герой, какие сопротивляемости имеет монстр, атакует ли монстр на расстоянии (соответственно, Вы можете захотеть вознаградить игроков) и выбросил ли он после того как умер предметы, которые помогли игроку (которые ценны сами по себе или которые улучшили характеристики героя) Конечно, убить Старшего Дракона (Elder Dragon) и получить при этом уменьшение на 10% опыта, который он Вам дает, поскольку он выбросил +1 кинжал, будет полным отстоем.

С точки зрения опыта, при получении level up’ов, нужно как-то, избежать того, чтобы, для получения 2-го уровня после 1-го требовалось столько же xp, сколько и 3-го после 2-го. Это может случиться, когда Вы используете экспоненциальную кривую, которая на некотором протяжении удваивается. Вот только один дикий, полностью произвольный пример: возьмем бойца, которому нужно 2000xp, чтобы получить уровень 2, 4000xp, чтобы получить уровень 3, 8000 xp, чтобы получить уровень 4 и т.п. Теперь подумайте об том, что для того чтобы получить уровень 2, боец должен приобрести только 2000xp, но это является также тем количеством, которое нужно ему приобрести для того, чтобы дойти до следующего яруса, но теперь у него есть дополнительные уровни дающие hitpoint’ы, лучшую вероятность удара, и т.п., что облегчает получение 3-го уровня после 2-го по сравнению с 2-ым после 1-го. А игра не должна становиться легче по мере получения level up’ов.



Автор: Rick Carson.
Источник: Handing Out Experience.
Перевел: Дмитрий О. Бужинский, 05.09.2004.