Книга: Игровой баланс. Точная наука геймдизайна (Электронная)
Назад: 3. С чего начать? Системы
Дальше: 5. Выявление якоря

4. Компоненты прогрессии. Кривые

В этой главе

• Важность числовых зависимостей.

• Типы числовых зависимостей.

• Типы кривых, используемых в играх.

• Все хорошо в меру.

Важность числовых зависимостей

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

Разработчик сюжетов с двухлетним опытом

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

Допустим, игрок может нанести врагу 250 очков урона. Хотя это считается вполне приличным ударом во многих играх, на поздних этапах данная цифра будет выглядеть уже не так впечатляюще. В играх числа, включая ноль, несут смысл и пользу лишь во взаимосвязи с другими числами. Если вы наносите 250 очков урона в поединке с монстром, у которого 25 000 очков здоровья, то, вероятно, он убьет вас раньше, чем вы его. И точно так же если вы наносите одним ударом 250 очков урона, в то время как ваш меч может наносить 2 500 очков урона, то, очевидно, вы пока находитесь на нижней границе потенциально доступного диапазона.

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

А что можно сказать насчет игр, в которых персонажи не переходят с уровня на уровень, как, например, в большинстве шутеров от первого лица? В них прогрессия определяется развитием навыков игрока, а не персонажа. В противовес росту навыков игрока игровой процесс постепенно усложняется, что выражается в изменении таких количественных показателей, как количество монстров, количество у них очков здоровья, сложность рельефа местности, количество пуль и аптечек. Хотя игрок может найти новое оружие и тем самым обеспечить себе определенные тактические преимущества, во многих шутерах от первого лица он не получает более мощное оружие со временем, и решающим фактором становится не мощность имеющегося оружия, а умение эффективно его использовать. Вот еще один пример: в командных киберспортивных играх, таких как Rocket League или Overwatch, подбирается сбалансированный состав команд, что позволяет соотносить показатели игроков, даже если они не успевают перейти на новый уровень в течение матча.

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

Типы числовых зависимостей

В этой главе рассмотрим два основных типа числовых зависимостей, присутствующих в играх.

• В компромиссных зависимостях игрок получает то, что ему нужно, в обмен на что-то другое.

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

Баланс определяется не чисто математически, а на основе того, как эти зависимости воспринимаются игроком. Не покажется ли ему, что этот меч стоит слишком дорого для того урона, который он может наносить? Не покажется ли игроку, что он слишком долго не переходил на новый уровень? Выглядит ли этот монстр слишком мощным по сравнению с другими, которых можно встретить в этой области? Именно так обстоит дело с числами, которые задействуются в играх. Они не используются в вакууме, а соотносятся с другими числами — в данном случае с теми ожиданиями, которые сложились у игрока на основе накопленного игрового опыта. Балансировка игры не сводится к простому изменению чисел или балансировке определенной экономической системы, а требует четкого понимания зависимостей между этими числами и внесения изменений с их учетом.

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

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

Компромиссные зависимости

В каждой игре присутствует как минимум один ресурс — время игрока. Конечно, в большинстве игр дело не ограничивается лишь им — в них есть также определенная разновидность валюты, различные предметы, очки здоровья и маны. Каждый из этих ресурсов, включая время игрока, имеет определенную относительную стоимость. Насколько она приемлема, зависит от того, как она соотносится с другими числами. На самом деле самые интересные решения в играх требуют определенного компромисса. Сколько золота готов потратить игрок на определенный предмет? Сколько маны расходуется на это заклинание? Сколько реальных денег должен отдавать игрок за ускоренное создание определенного юнита в бесплатной онлайн-игре? Сколько времени в день нужно тратить на игру, чтобы достичь профессионального уровня конкурентоспособности?

В качестве примера рассмотрим простой поединок между персонажем игрока и монстром. Каждая атака игрока наносит монстру 50 очков урона. Чтобы определить, насколько сбалансированной является эта цифра, необходимо принять во внимание целый ряд факторов.

• Насколько объем урона соответствует его месту в игре согласно ее экономическим макросам?

• Сколько очков урона нужно нанести монстру, чтобы уничтожить его?

• Каков диапазон мощности оружия персонажа?

• Какими доспехами или иными средствами защиты обладает монстр?

• Как расположен монстр по отношению к персонажу игрока (выпущенная игроком пуля не нанесет большого урона, если она лишь коснется тела врага перед тем, как он упадет на землю).

• Насколько длинным хочет разработчик сделать поединок (какое количество ударов должны нанести соперники)?

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

Рассмотрим еще один пример: допустим, вы хотите купить Меч абсолютной крутизны, который стоит 250 единиц золота. Много это или мало? Это зависит от того, часто ли игрок находит золото, сколько его единиц он находит каждый раз и насколько сложно его заработать. Если вы решите удвоить стоимость этого меча, сделав ее равной 500 единицам золота, но при этом удвоите все те суммы золота, которые может получить игрок, то для приобретения этого более дорогого меча потребуются точно такие же затраты времени и усилий, как и прежде.

Прогрессивные зависимости

В играх все от начала до конца имеет характер прогрессии — вы проходите путь от пункта A до пункта B, от первого до последнего квеста, от новичка до профессионала, от 1-го до 100-го уровня. Игроки постепенно улучшают свои мечи и навыки и набирают очки статистики. Они продвигаются вперед по сюжетной линии, уничтожают всех врагов или совершают какие-либо иные действия, которые ведут к завершению игрового процесса. По сути, прогрессия представляет собой компромисс между двумя ресурсами, при котором игрок отказывается от чего-либо, например от своего времени, в обмен на прогресс в игровом процессе. Разработчики игр выделяют четыре основные категории прогрессии.

Прогрессия персонажей — действия игрока ведут к определенному развитию игрового персонажа.

• Прогрессия навыков игрока — игрок развивает свои навыки, многократно повторяя игровые действия.

• Прогрессия повествования — сюжет игры развивается по мере протекания времени или выполнения игроком различных действий.

Прогрессия механическая — чем больше геймер играет, тем больше механизмов задействует, что делает игру более содержательной и сложной.

В одной игре может присутствовать один или несколько видов прогрессии или ни одного в зависимости от того, что это за игра.

Будучи не всегда очевидными для игрока, зависимости между двумя вещами (персонажем и временем, навыками игрока и временем, повествованием и временем, механикой и временем) все же создают узнаваемые паттерны, временные рамки которых могут ощущать игроки («Я уже слишком долго не переходил на новый уровень!») и которые становятся глубоко укоренившимися представлениями о том, что характерно для того или иного игрового жанра.

С точки зрения игрока, прогрессия часто представляет собой повод для торжества. Однако для нас, разработчиков, это одно из проектных решений. Как быстро прогрессируют игроки? На каком этапе они упираются в потолок? Ответ на каждый из этих вопросов представляет собой кривую. Наиболее распространенными примерами, о которых, возможно, вы уже слышали, являются кривые очков опыта, кривые стоимости и кривые сложности. Так, кривая опыта в RPG-играх часто изначально представляет собой экспоненциальную прогрессию, которая с течением времени упирается в потолок или стабилизируется на определенном уровне. Рассмотрим наиболее распространенные типы кривых.

Типы кривых, используемых в играх

В сфере разработки игр слово «кривая» употребляется в математическом, а не в эстетическом смысле: кривая показывает, как изменяется один игровой ресурс по мере увеличения другого. Так, например, кривая опыта (иногда ее называют кривой уровня) показывает, сколько очков опыта требуется для перехода на новый уровень в зависимости от текущего уровня персонажа. Разработчики игр иногда используют в этом же смысле слово «рампа».

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

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

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

Кривая тождественности

Кривая тождественности представляет простейший тип зависимости между двумя числами — равенство двух чисел. Если одно число увеличивается на 5, второе число тоже увеличивается на 5. Кривая, представляющая тождественность двух ресурсов, выглядит как график уравнения y = x (рис. 4.1).

Рис. 4.1

Эта кривая использовалась в одной из версий классического космического симулятора Spacewar! и представляет собой зависимость между количеством единиц энергии и единиц мощности защитного поля космического корабля. Каждый игрок изначально получает полный запас энергии (он уменьшается при использовании оружия против других кораблей) и полную мощность защитного поля (уменьшается при поражении корабля вражеским огнем). Чтобы победить в поединке, игрок должен нанести урон кораблю противника после того, как мощность его защитного поля упадет до нуля. В любой момент игрок может преобразовать любое количество энергии в такое же количество мощности защиты и наоборот. Тактика игрового процесса здесь отчасти сводилась к правильному решению вопроса о том, когда лучше сделать более мощным защитное поле, а когда лучше потратить энергию на нанесение сокрушительного удара по противнику.

Рассмотрим еще один пример, уже из жанра RPG. Допустим, чтобы не умереть от голода, члены экспедиции должны регулярно употреблять пищу, а 1 единица пищи в городе стоит 1 единицу золота. Игроки могут купить себе любое количество пищи: 10 единиц пищи за 10 единиц золота, 100 единиц пищи за 100 единиц золота и т.д. Пока экспедиция стоит прямо возле продуктовой лавки, еда обменивается на золото примерно в соотношении 1:1, то есть они связаны отношением тождественности.

Здесь вы можете спросить: если два ресурса обладают совершенно одинаковым значением, зачем использовать оба? Может быть, в таком случае лучше обойтись одним ресурсом?

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

• Если игроки могут покупать еду только в городах и не могут делать это во время исследования подземелий, то еда становится ограниченным ресурсом во время таких вылазок и отношение тождественности устанавливается лишь в отдельных случаях. В подземельях 1 единица пищи может стоить, скажем, 30 единиц золота. Если бы ресурсы можно было без труда преобразовывать друг в друга, например, с помощью волшебного заклинания, легко превращающего еду в золото и наоборот, то было бы целесообразнее задействовать лишь один ресурс, объясняя использование еды в качестве валюты применением алхимии.

• С точки зрения логики поедание членами экспедиции золота или использование еды в качестве валюты возможно лишь в очень странном игровом мире.

• Если еду можно только купить, но не продать, то золото является более универсальным ресурсом, с помощью которого можно приобрести и другие вещи. При этом игрок должен следить за тем, чтобы закупалось достаточное для выживания количество еды без чрезмерного расходования золота. Еще одно различие состоит в том, что члены экспедиции еду потребляют регулярно, а золото — нет. Таким образом, эти два ресурса ведут себя совершенно по-разному и воспринимаются как отдельные вещи, что дает основания для включения в игру их обоих.

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

Линейная кривая

Линейная кривая соответствует случаю, когда одно число увеличивается (или уменьшается) кратно другому числу (рис. 4.2). Например, в RPG-играх зависимость между очками здоровья и очками магии/маны часто носит линейный характер. Так, если исцеляющее заклинание стоит 5 очков магии и восполняет 25 очков здоровья, то это линейная зависимость с соотношением 1:5. В простейшем случае, когда в игре применяется только одно исцеляющее заклинание и это единственный способ использования очков магии, вы можете определить фактический запас очков здоровья еще до того, как найдете другие методы исцеления или способы восполнения очков магии, просто прибавив к текущему количеству очков здоровья пятикратное количество очков магии.

Рис. 4.2

Еще одним распространенным примером линейной зависимости в играх является зависимость между количеством наносимого урона и стоимостью предмета. Чем бóльший урон может наносить определенный предмет, тем дороже он стоит. За каждое очко наносимого урона приходится платить, скажем, 100 единиц золота. Разработчики обычно указывают для каждого свойства предмета стоимость одного очка урона, и определяемая этим параметром зависимость всегда носит линейный характер. Так, свойство, увеличивающее количество наносимого урона в два раза, может увеличивать стоимость предмета на 1000 единиц.

Следует отметить, что отношение тождественности 1:1 представляет собой линейную зависимость, множитель которой равен 1. Линейная зависимость описывается уравнением y = mx, где m — константа (множитель), а y и x — первый и второй ресурсы, например: очки здоровья = 10 × очки магии (то есть 1 очко магии дает 10 очков здоровья).

Экспоненциальная кривая

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

5 = 5;

5 × 5 = 25;

5 × 5 × 5 = 125;

5 × 5 × 5 × 5 = 625;

5 × 5 × 5 × 5 × 5 = 3 125;

5 × 5 × 5 × 5 × 5 × 5 = 15 625;

5 × 5 × 5 × 5 × 5 × 5 × 5 = 78 125;

5 × 5 × 5 × 5 × 5 × 5 × 5 × 5 = 390 625;

5 × 5 × 5 × 5 × 5 × 5 × 5 × 5 × 5 = 1 953 125;

5 × 5 × 5 × 5 × 5 × 5 × 5 × 5 × 5 × 5 = 9 765 625.

При записи степеней обычно используется так называемая экспоненциальная нотация: сначала записывается основание степени, а за ним — показатель степени в виде надстрочного индекса (небольшого числа, расположенного выше и правее основания). Данную прогрессию можно записать так: 52 = 25, 53 = 125, 54 = 625 и далее до 510 = 9 765 625.

В экспоненциальных кривых часто имеется некий постоянный множитель. Так, в случае кривой опыта, где количество очков опыта удваивается с каждым следующим уровнем, для перехода на первый уровень может потребоваться 100 очков опыта, для перехода на второй — 200, на третий — 400 и т.д., а не 1, 2 и 4 очка соответственно (рис. 4.3). В математическом виде это можно представить как 100 × 2уровень, где уровень — это текущий уровень игрока.

Экспоненциальная прогрессия часто используется для управления уровнем персонажа на начальном этапе игры, где количество очков опыта, необходимых для перехода на следующий уровень, с каждым разом удваивается (прогрессия с основанием 2). Однако в силу характера экспоненциальной прогрессии в определенный момент игроки перестают прогрессировать из-за того, что достижение следующего уровня начинает занимать слишком много времени. Так, в приведенном ранее примере для перехода с 9-го уровня на 10-й потребовалось бы набрать около 8 млн очков опыта! Большинство игр не позволяет дойти до этой точки, вводя верхний предел уровня.

Рис. 4.3

С помощью степеней также получают динамические и поражающие воображение результаты. Возьмем в качестве примера игру Hearthstone. Для некоторых существ/карт в этой игре величина наносимого урона удваивается с каждым ударом по ним или проведением против них атаки. Сначала это может не оказывать большого эффекта, особенно если исходный урон — всего 2 очка. Но, поскольку значение удваивается с каждым ударом или каждой атакой, существо очень быстро становится невероятно мощным. Из-за этого игроки часто специально атакуют такие карты для получения этого эффекта.

Поскольку значения экспоненциальной кривой вначале растут медленно, а затем быстро становятся чрезвычайно большими, во многих системах экспоненциальный эффект может вносить большой дисбаланс или, если это кривая уровня, заставлять игру тянуться бесконечно, что тоже является своего рода дисбалансом. Поэтому в стратегических и коллекционных карточных играх эффект, увеличивающий силу карты или юнита в два раза, используется довольно редко, особенно когда он становится сильнее со временем или когда его усиливают другие множители. На такие экспоненциально усиливающиеся эффекты часто накладывается некое резкое ограничение, например ограничение длительности, применение отрицательного эффекта в противовес положительному или установление высокой стоимости задействования в игре. Например, в первом издании игры Magic: the Gathering лишь одна карта из всего набора — Berserk («Берсерк») — удваивала силу атаки существа за один ход, и ее долго было запрещено использовать на турнирах. В игре Hearthstone довольно много карт, которые удваивают тот или иной параметр участвующей в розыгрыше карты. Они не вносят большого дисбаланса по одной причине: участвующие в розыгрыше карты очень уязвимы — как правило, их можно удалить различными способами и даже сравнительно сильная карта обычно не используется больше нескольких ходов. Это исключает вероятность того, что последовательное удвоение сделает какой-либо параметр слишком большим.

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

Правило двух

Разработчики часто используют правило двух, автором которого считается известный создатель игр Сид Мейер (Sid Meier): если вам нужно изменить число и вы не знаете, насколько большим должно быть это изменение, увеличьте или уменьшите его в два раза. Это позволит ясно увидеть, какой эффект производит это значение в игре. Как показывает практика, такой подход гораздо эффективнее по сравнению с тем, чтобы уменьшать значение на 10 %, потом еще на 10 % и т.д. На первый взгляд может показаться, что этот метод противоречит здравому смыслу, поскольку увеличение или уменьшение значения в два раза — это очень значительное изменение и используемые вами числа не нуждаются в столь больших поправках. Однако не спешите делать окончательный вывод. Вы можете удивиться тому, насколько хорошо работает этот подход.

Логарифмическая кривая

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

Ранее мы уже выяснили, что кривая опыта имеет экспоненциальный характер, соответственно, кривая уровня, как правило, носит логарифмический характер (рис. 4.4). Опыт связан с уровнями отношением «многие к одному», а уровни с опытом — отношением «один ко многим».

Рис. 4.4

Эта кривая описывается уравнением y = logb x (или x = by), где b — фиксированное число. Таким образом:

новый уровень = текущие очки опыта × 2.

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

Треугольная кривая

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

Рис. 4.5

Треугольные числа можно увидеть во многих настольных играх, включая Hare and Tortoise («Заяц и черепаха») и Ticket to Ride («Билет на поезд»). Это, пожалуй, наиболее широко используемая формула возрастающей отдачи в сфере разработки игр, что объясняется тем, что она обеспечивает не столь быстрый рост, как в случае экспоненциальной зависимости, и знакома практически каждому. Кроме того, эта зависимость не представляет никаких сложностей для игроков. Так, кривая опыта в игре Baldur’s Gate: Dark Alliance является треугольной кривой в чистом виде. Если вы начнете специально выискивать в играх треугольные прогрессии, то будете удивлены тому, насколько часто их применяют.

Если вам нужна кривая посередине между линейной и экспоненциальной кривыми, сначала попробуйте взять треугольную кривую, а затем внесите в нее необходимые поправки. В математическом виде треугольные числа можно представить с помощью функции y = (x2x) / 2.

Пользовательские кривые, формулы и результаты

Иногда разработчиков не устраивает ни один из стандартных типов кривой, и вместо экспоненциальной или логарифмической зависимости они предпочитают использовать прогрессивную или компромиссную зависимость, специально созданную ими для конкретного случая. Это может быть уникальная формула заклинания (например, на первых трех уровнях заклинание может стоить 150 единиц маны, а на четвертом — 300) или выбранный разработчиком набор чисел, который не укладывается ни в одну известную математическую закономерность (например, вероятность получения добычи может не превышать 0,01 при очень большом количестве наносимого оружием урона).

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

Взгляните на представленную далее таблицу и обратите внимание на то, как начинает различаться количество очков опыта с 13-го уровня. Слева здесь представлена экспоненциальная прогрессия с основанием 2 в ее чистом виде. Справа эта прогрессия на 13-м уровне превращается в прогрессию с основанием 1,5. Подумайте о том, насколько меньше времени при этом будет тратить игрок на достижение каждого следующего уровня.

Необходимое общее количество очков опыта

Уровень опыта

Необходимое общее количество очков опыта

Уровень опыта

100

2

100

2

200

3

200

3

400

4

400

4

800

5

800

5

1600

6

1600

6

3200

7

3200

7

6400

8

6400

8

12 800

9

12 800

9

25 600

10

25 600

10

51 200

11

51 200

11

102 400

12

102 400

12

204 800

13

153 600

13

409 600

14

230 400

14

819 200

15

345 600

15

1 638 400

16

518 400

16

3 276 800

17

777 600

17

6 553 600

18

1 166 400

18

13 107 200

19

1 749 600

19

26 214 400

20

2 624 400

20

Пример: стоимость оружия и количество наносимого им урона. В качестве еще одного примера пользовательской кривой рассмотрим ситуацию, связанную со стоимостью оружия и наносимым им уроном. Допустим, что в вашей игре большинство врагов имеет по 4 очка здоровья. При этом для уничтожения одного врага нужно четыре раза провести атаку, наносящую 1 очко урона. Атаку, наносящую 2 очка урона, нужно провести только дважды, то есть она в два раза мощнее по сравнению с нанесением 1 очка урона. Однако атаку, наносящую 3 очка урона, по-прежнему нужно проводить дважды, то есть она ничем не лучше, чем нанесение 2 очков урона! Хотя она, возможно, чуть эффективнее в том плане, что при нанесении 3 очков урона вам не помешает компенсация урона размером 1 очко и сильно поможет бонус урона размером 1 очко, но это определенно не трехкратное увеличение мощности атаки по сравнению с нанесением 1 очка урона. Атака, наносящая 4 очка урона, позволяет уничтожить одного врага за один раз и поэтому по умолчанию в два раза мощнее по сравнению с нанесением 3 очков урона. Далее нанесение 5 очков урона и более почти не дает преимуществ по сравнению с 4 очками. Все это можно представить в виде следующей зависимости между наносимым уроном и его реальной мощностью, в соответствии с которой должна выбираться его стоимость.

Урон

Стоимость

1

1,0

2

2,0

3

2,5

4

4,0

5

4,5

5 + n (за каждые дополнительные n очков после 5)

4,5 + (n / 2)

Как видите, это почти линейная зависимость с неожиданным спадом на участке от 2 до 3, резким возрастанием на участке от 3 до 4 и очень медленным возрастанием после этого.

Пример: игра Roll through the Ages. В качестве еще одного, последнего примера рассмотрим игру Roll through the Ages, в которой игроки должны выбрасывать несколько кубиков. Один из возможных результатов для каждого кубика — выпадение грани с изображением черепа. Если при выбрасывании кубиков выпадает только один череп или не выпадает ни одного, игрок не теряет и не получает очки. При выпадении двух черепов игрок теряет 2 очка, что, очевидно, расценивается как плохой результат. При выпадении трех черепов все соперники игрока теряют по 3 очка, что является очень хорошим результатом. При выпадении четырех черепов игрок теряет 4 очка, что очень плохо. А в случае выпадения 5 черепов и более он теряет некоторые другие ресурсы, фактически теряет ход, а иногда и дополнительные очки, что оказывается худшим из возможных результатов. Зависимость между количеством черепов и очков можно представить следующим образом (рис. 4.6).

Рис. 4.6

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

Кривая обфускации стоимости

Разработчики бесплатных онлайн-игр часто скрывают или, иначе говоря, подвергают обфускации стоимость внутриигровой валюты в реальных деньгах. Так, числовая зависимость изначально может выглядеть следующим образом: 2 доллара = 15 единиц внутриигровой валюты. Эта зависимость масштабируется, часто весьма запутанным образом. Так, например, лишь очень немногие игроки смогут запомнить, что одна единица внутриигровой валюты стоит 13,3 цента. Еще меньшее их количество сможет подсчитать, сколько при этом стоят 9 единиц валюты, или выполнить расчеты с учетом оптовой стоимости или особых внутриигровых скидок. Хотя эти расчеты, в принципе, можно сделать более простыми, например установив стоимость единицы внутриигровой валюты равной 10 центам, их усложнение ведет к тому, что игроки реже задаются вопросом, сколько в действительности стоит то, что они покупают, и в результате тратят больше денег. Как показывает представленная далее таблица, иногда оптовая стоимость может быть даже выше обычной (обратите внимание на то, что стоимость единицы при покупке 3500 единиц выше, чем при покупке 500 единиц). В данном случае разработчики вероломно пользуются тем, что игроки по своей доверчивости думают, что, приобретая большее количество единиц, они экономят деньги.

Количество единиц

Стоимость единицы

Общая стоимость

15

0,133

2

30

0,133

4

50

0,133

7

100

0,120

12

250

0,120

30

500

0,120

60

1000

0,140

140

3500

0,160

560

Иногда разработчики заходят еще дальше в обфускации соотношения между реальными деньгами и внутриигровой валютой. Так, для наведения еще большего тумана в отношении реальной стоимости различных вещей в некоторых мобильных играх используются две «гриндовые» валюты, например монеты и золото. Конечно, применение двух валют не является чем-то новым в играх, при этом одна обычно используется теми игроками, которых вам удалось вовлечь в «гринд», а вторая представляет собой приобретаемые за реальные деньги донаты. Однако в таких бесплатных онлайн-играх оба вида валюты являются одновременно и «гриндовыми», и донатными. То есть обе можно и покупать, и получать путем «гриндования», несмотря на то что одна из них встречается гораздо реже другой. Хотя на первый взгляд кажется, что выгоднее награждать пользователя тем, что он воспринимает как донаты, обычно игрок чувствует себя заинтригованным, когда за определенный предмет можно заплатить обои­ми видами валюты. Если за что-то можно заплатить 500 монет или 3 единицы золота, сколько на самом деле я потрачу в первом и втором случае? Если я могу и покупать, и зарабатывать монеты и золото, то какая часть необходимого количества уже заработана, а какую нужно докупить? Заработал ли я уже достаточно для того, чтобы можно было пополнить количество валюты путем ее покупки? Тот факт, что обе валюты можно получить и покупкой, и «гриндованием», усложняет задачу определения стоимости. Поэтому если игрок располагает деньгами и хочет что-то приобрести, то он с большей вероятностью потратит деньги вместо того, чтобы долго высчитывать, сколько средств или времени ему нужно в действительности потратить.

Сводный перечень кривых

Несмотря на то что нет универсального правила, сводный перечень кривых, используемых в различных экономических системах, обычно выглядит следующим образом:

очки опыта — экспоненциальная кривая;

• уровни опыта — логарифмическая кривая;

• стоимость предметов — линейная зависимость от количества наносимого урона, которая может быть ограничена специально подобранными значениями с учетом того, насколько предмет редок и полезен для игрока;

• деревья навыков и очки статистики — кривая тождественности (одно бонусное очко дает одно очко статистики);

• очки здоровья — линейная кривая с произвольным разбросом значений в пределах определенного диапазона. То есть уровню 5 могут соответствовать 25 очков здоровья ±10 %;

• сила монстров — линейная кривая;

остающаяся от врагов добыча — линейная зависимость от силы врагов с произвольным разбросом значений в пределах определенного диапазона.

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

Все хорошо в меру

Любая кривая или формула может представлять проблему для разработчиков и игроков, если ее задействовать в доведенном до крайности виде. Как уже упоминалось, экспоненциальные и логарифмические кривые обычно ограничивают сверху или превращают в пользовательские кривые. Распространенной проблемой игр, сбалансированных по определенной математической формуле, является то, что даже при использовании в целом удачной и сбалансированной математики она может давать сбой в предельных случаях. Если ваша формула хорошо работает в большинстве случаев, но дает сбой в предельных ситуациях, то, возможно, вам не стоит менять общую формулу. Обычно в таком случае возможны два решения:

• использовать специальные формулы для обработки экстремальных случаев;

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

Вопросы для обсуждения

1. Объясните, что в играх понимается под прогрессией. Выберите для рассмотрения игру и определите, какие типы прогрессии в ней имеются.

2. Что представляет собой отношение тождественности?

3. По какой причине отношение тождественности может превратиться в линейную зависимость?

4. Что представляет собой экспоненциальная кривая?

5. Почему использование экспоненциальных кривых может представлять проблему для разработчиков игр?

6. Что представляют собой треугольные числа?

7. Приведите пример наличия в одной игре двух систем и определите, какие ресурсы задействуются в обеих.

8. Приведите пример пользовательской кривой и объясните, с какой целью разработчик может ее использовать.

9. Выберите для рассмотрения мобильную игру и проанализируйте применяемую в ней структуру монетизации.

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

Побочные квесты

В этой главе вы узнали, как различные числа соотносятся друг с другом.

Побочный квест 4.1. Кривая уровня

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

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

Побочный квест 4.2. Подгонка кривой уровня

Как и в побочном квесте 4.1, выберите для рассмотрения любую компьютерную игру, в которой требуется набирать очки опыта и переходить на следующий уровень, и найдите таблицу, в которой указано, сколько очков опыта требуется для перехода на каждый следующий уровень. В редакторе электронных таблиц занесите уровни в один столбец, необходимое количество очков опыта — в другой и отобразите соответствующую гистограмму. Затем добавьте на график линию тренда с отображением значения достоверности аппроксимации (R2). Попробуйте применить разные типы линии тренда: как минимум линейную, полиномиальную (со степенью 2 и 3) и экспоненциальную. Какой из этих типов обеспечивает наилучшую подгонку значения достоверности аппроксимации (R2)? Если кривая состоит из нескольких участков с разным поведением, попробуйте разбить график на эти участки и отобразить линию тренда для каждого из них в отдельности.

Побочный квест 4.3. Machinations

Полезным при разработке игр инструментом, созданным в научной среде, является инструмент Machinations (http://machinations.io), изначально разработанный Йорисом Дормансом (Joris Dormans) в диссертации. Machinations — это язык для визуализации данных в виде диаграмм, позволяющий моделировать движение ресурсов в игре. Этот инструмент запускается в браузере и поддерживает сохранение и загрузку определенной вами функциональности, что позволяет обмениваться своими диаграммами с другими людьми. Он также предлагает ряд функций для анимации диаграмм, что позволяет наблюдать происходящий процесс в режиме реального времени.

Зайдите на сайт инструмента Machinations, пройдите бесплатную регистрацию и ознакомьтесь с этим языком, изучив документацию, обучающие материалы и примеры. После этого выберите игру, еще не рассмотренную ни в одном из примеров, и составьте для нее диаграмму движения ресурсов.

Обратите внимание на то, что инструмент Machinations может работать на любом уровне абстракции. Например, в настольной игре Catan можно смоделировать каждый из пяти отдельных ресурсов, карты развития и т.д. вплоть до микроуровня торговли. В принципе, вы даже можете создать полную рабочую версию игры, хотя диаграмма получится очень большой и сложной. В то же время все это можно представить в виде ресурсов (одного ресурса, объединяющего все пять карт ресурсов), генераторов ресурсов (поселений и городов) и определенного универсального способа расходования ресурсов на создание генераторов ресурсов. Вы можете выбрать тот уровень абстракции, который подходит вам лучше других.

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

Побочный квест 4.4. Оптимизация игрового процесса в игре-кликере

В играх-кликерах, популярность которым принесла игра Cookie Clicker, игроки могут получать как активный доход (обычно за счет выполнения щелчков), так и пассивный (за счет ожидания). Полученный доход они тратят на повышение скорости его получения. Хотя игрок в любом случае не может перестать прогрессировать, он может использовать разные стратегии в том, какие вещи следует улучшать в первую очередь. Стоит ли вам повысить доход, сразу применив самый дешевый апгрейд? Или лучше повременить и затем провести более дорогой апгрейд с лучшим соотношением стоимости и получаемой выгоды? Однако в этом случае вам придется дольше оставаться на низком уровне дохода.

Вот как может выглядеть простейший дизайн игры-кликера.

• В начале игры игрок получает единицу золота в секунду.

• Он может повысить скорость получения дохода, купив:

• небольшие золотые шахты. Каждая из них повышает скорость получения дохода на 1 единицу золота в секунду. Базовая стоимость — 15 единиц золота;

• средние золотые шахты. Каждая из них повышает скорость получения дохода на 5 единиц золота в секунду. Базовая стоимость — 100 единиц золота;

• большие золотые шахты. Каждая из них повышает скорость получения дохода на 20 единиц золота в секунду. Базовая стоимость — 300 единиц золота;

• огромные золотые шахты. Каждая из них повышает скорость получения дохода на 100 единиц золота в секунду. Базовая стоимость — 2000 единиц золота;

• гигантские золотые шахты. Каждая из них повышает скорость получения дохода на 700 единиц золота в секунду. Базовая стоимость — 15 000 единиц золота;

• алхимические золотые шахты. Каждая из них повышает скорость получения дохода на 10 000 единиц золота в секунду. Базовая стоимость — 250 000 единиц золота.

• Стоимость каждой шахты определяется умножением базовой стоимости на 1,1N, где N — количество уже имеющихся шахт этого типа, с округлением вверх до целого числа. Так, например, первая небольшая золотая шахта будет стоить 15 единиц золота, вторая — 15 × 1,1 = 16,5, что после округления составляет 17, третья — 15 × 1,12 = 18,15, что после округления составляет 19, и т.д.

Затем создайте модель этой игры, используя электронную таблицу.

• В столбце A укажите прошедшее время в секундах. Начните с нуля в первой строке и добавляйте по 1 секунде в каждой следующей строке.

• В столбце B укажите текущее количество имеющегося у игрока золота. Первая строка при этом будет содержать ноль, а каждая следующая строка — количество золота, указанное в предыдущей строке, плюс текущий доход (базовый доход в 1 единицу золота плюс доход от всех шахт) и минус количество всех затрат на покупку шахт.

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

• В столбце I укажите текущую скорость получения дохода: 1 единица золота в секунду плюс доход от шахт, указанных в столбцах C — H (умножьте количество шахт каждого типа на соответствующую скорость получения дохода).

• В столбцах J — O укажите стоимость покупки одной дополнительной шахты каждого из шести типов, рассчитанную по приведенной ранее формуле, исходя из текущего количества шахт каждого типа, указанного в столбцах C — H.

• В столбцах P — U следует указать количество шахт каждого типа, покупаемых на данном шаге. Вы можете «играть» в эту игру, вручную вводя цифры в таблицу. Для целей нашего исследования предположим, что игрок может купить любое количество шахт каждого типа по цене, указанной в столбцах J — O.

После заполнения первой и второй строк (а также при желании строки заголовка) заполните с помощью функции автозаполнения строки со 2-й по 900-ю. Если каждая строка будет представлять 1 секунду, это будет соответствовать первым 15 минутам игрового процесса. В некоторых выборочных строках введите значения в столбцах P — U и убедитесь в том, что это влияет на количество золота и доход.

Основная задача. Вместо того чтобы оставлять столбцы P — U пустыми или заполненными тестовыми данными, попробуйте заполнить их так, чтобы получить максимальный доход в последней, 900-й строке. Это можно сделать, либо подобрав значения вручную, либо применив ряд формул в этих столбцах и, возможно, в дополнительных столбцах, которые вы можете добавить справа. Как ни удивительно, тем самым вы создадите реализацию ИИ для этой игры, использующую исключительно значения электронной таблицы и формулы и ни капли кода!

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

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

Побочный квест 4.5. Распутывание обфускации в бесплатной онлайн-игре

В мобильной/планшетной игре Gordon Ramsay Dash игрок может покупать золото (донатную валюту этой игры) по курсам, приведенным в таблице.

Количество золота

Стоимость, доллар США

10

0,99

35

2,99

125 (самый популярный вариант)

9,99

300

19,99

1000

49,99

2500

99,99

Помимо прочего, приобретенное золото можно использовать для покупки продуктов по следующим курсам.

Количество продуктов

Стоимость, единица золота

50

10

115

20

250

40

Допустим, игроку требуется купить 500 единиц продуктов — ни больше ни меньше — и он не собирается покупать в игре что-либо еще. Для этого ему сначала нужно приобрести золото за реальные деньги, а затем — продукты за это золото. Как должен действовать игрок, чтобы купить нужные ему 500 единиц продуктов, потратив наименьшее количество денег?

Более объемная задача. Предположим, что в игре имеется некоторое особое событие, например субботняя распродажа продуктов, где все продукты продаются с 20%-ной скидкой и при каждой покупке вы получаете 20 % продуктов в качестве бонуса (то есть при покупке минимального количества получите 60 единиц продуктов за 8 единиц золота). Как в таком случае можно купить 500 единиц продуктов, потратив наименьшее количество денег?

Основная задача. Во многих бесплатных онлайн-играх стоимость подвергается обфускации. Какие изменения можно было бы внести в представленные ранее курсы покупки, чтобы напустить туману в отношении реальной стоимости? Увеличьте стоимость покупки, 500 единиц продуктов (без распродажи), таким образом, чтобы это не было заметно на первый взгляд. Объясните, почему вы решили использовать те или иные методы и почему думаете, что они сработают.

Основной квест Плута, часть 3. Идентификация ключевых ресурсов

Продолжение. Часть 2 см. в главе 2.

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

Также определите, как эти ресурсы связаны между собой. Можно ли преобразовать одни ресурсы в другие либо посредством базовой механики игры, либо с помощью особых правил определенного игрового объекта?

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

Часть 4 см. в главе 8.

Назад: 3. С чего начать? Системы
Дальше: 5. Выявление якоря