Дизайн и математика инкрементальных игр
Эта статья является переводом второй статьи (середина 2015) из цикла об айдлерах Александра Кинга, гейм-дизайнера и аналитика.
***
В предыдущей части мы взглянули на историю жанра и разобрались, что же делает эти игры уникальными. Но в сам дизайн мы особо не углублялись. Хоть инкрементальные игры и кажутся простыми, их дизайн не так прост и требует тщательного продумывания. Взглянув на некоторые успешные примеры можно лучше оценить основные особенности этих игр и лучше понять, как задизайнить свою.
Перед тем, как погрузиться в математику, я хотел бы отметить 3 важных момента в дизайне таких игр, о которых необходимо помнить: ощущения исследования, разница между «айдлом» и «кликером» и важность тематики и художественного стиля.
Радость от исследований
Один из самых важных «радостных» вещей в инкрементальной игре — это открытие нового. Многие игры начинаются очень просто, но комплексность растёт по спирали вместе с прогрессом игрока. Процесс раскрытия комплексности игры побуждает игрока и дальше исследовать игру для открытия новых и спрятанных игровых элементов. Например, Candy Box, можно воспринимать целиком как игру об исследовании самой себя, и повышение уровня является простым механизмом открытия дальнейшего контента в игре.
Поэтому большинство инкрементальных игр не делают полный доступ ко всему контенту с самого старта. Вместо этого они открывают к ним доступ через трату внутриигровой валюты. Масштаб контента может быть известным игроку с самого начала, как в Idling to Rule the Gods, где конкретные части игры специально оставлены пустыми, давая понять, как и когда они будут открыты. А может быть скрытым, когда игроку открыто не говорят о том, что те или иные элементы игры вообще присутствуют до тех пор, пока игрок не достигнет определённого уровня — например, почти весь контент в Cookie Clicker. Некоторые игры совмещают оба варианта: в AdVenture Capitalist игроку демонстрируют как много контента можно открыть, но в то же время в игре присутствует множество скрытых достижений, которые открываются в процессе игры.
Открытие нового является важным элементом, на который нужно обращать внимание в дизайне инкрементальной игры, так как он предполагает систему наград для игрока за исследование в процессе изучения основных механик игры. Вываливая всё на игрока сразу, вы не только поднимете порог входа и усложните изучение игры, но также и потеряете элемент радости от последовательного открытия нового в процессе ознакомления с игрой.
Айдлер или кликер?
Инкрементальные игры фокусируются на 2 основных перекрёстных механиках:
- Автономный прогресс, скорость которого постепенно увеличивает сам игрок.
- Активное вовлечение игрока, чья собственная продуктивность также постепенно растёт.
Игры, которые базируются на второй механике, либо буквально заставляют игрока «кликать» для того, чтобы зарабатывать, либо имеют другие способы активного вовлечения игрока, например, ограничения хранилищ, которые требуют частого внимания, чтобы прогресс не останавливался. Например, в CivClicker игрок в основном активно управляет поселением, лишь периодически оставляя ненадолго игру для пассивного заработка.
Те игры, что базируются в основном на первой механике (автономный прогресс), могут также включать и механику «кликанья», но зачастую эффективность кликов снижается в пользу автоматических заработков. В AdVenture Capitalist игрок должен поначалу активно кликать, но быстро открывает возможность автоматизировать процесс и сократить необходимость вмешиваться в процесс.
Выбор того или иного варианта — в целом вопрос предпочтений и влияния на цели игры. Игра, которая требует активного управления может больше вовлекать в течение короткого периода времени, но, если она будет слишком часто требовать много внимания от игрока, то она легко нарушит принципы этичного гейм-дизайна. Более автономная игра может требовать меньше вовлечения игрока в каждой сессии, но может вызвать большую привязанность. Отчасти это объясняет высокие показатели возврата у idle-игр на Kongregate. AdVenture Capitalist даже напоминает игроку, что же произошло в его отсутствие, и подчёркивает, что игра не требует постоянного внимания:
Художественный стиль и тематика
Часто нарратив, в который обёрнута основная механика игры, принесёт только пользу инкрементальной игры (хотя это и не очевидно, учитывая минимализм механик в таких играх).
Осмысленная тематика может задать контекст для просто растущих чисел. Понятно, что любым играм надо бы иметь хороший арт-стиль и хороший дизайн, и инкрементальные игры тут не исключение. Выдержанный стиль позволит игре произвести цельное впечатление, а лёгкий интерфейс позволяет игроку сконцентрироваться на самой игре, а не на попытках разобраться в кнопках.
AdVenture Capitalist — хороший тому пример. Сделана игра в тематике бизнес-менеджера с добавлением ноток капитализма (всё это отлично дополняет геймплей игры, где нужно увеличивать числа), а в качестве стиля выбрана Гуги-эстетика 50-х годов XX века. Всё это вперемешку с юмором очень цельно выдержано в игре, что только усиливает визуальную и нарративную составляющую игры.
Инкрементальным играм, если сравнивать с другими жанрами, нет так сильно нужны хорошая графика и проработанные тексты, но очень важно понимать, что «не так сильно нужны» — не то же самое, что «совсем не нужны».
Растущие числа
Определяющая жанр механика для инкрементальных игр — рост чисел. В предыдущей статье мы определили её так:
- Наличие как минимум одной валюты или числа.
- Это число растёт с определённой скоростью и не требует вмешательства игрока, либо требует незначительных действий с его стороны.
- Скорость, с которой число увеличивается, можно увеличить, чтобы число увеличивалось быстрее.
Именно третий пункт сильно влияет на ощущения от игры и самый сложный аспект дизайна. Возьмём самый простой пример из игры Тайлера Глайеля Number: в ней кроме всех трёх вышеупомянутых пункта ничего, собственно, и нет. Число растёт и можно это же число потратить, чтобы оно росло быстрее.
Когда игра начинается, скорость роста равна 0.1 единицам в секунду. Число накапливается, и его можно потратить на ускорение роста. Первые пять улучшений выглядят вот так:
Цена | Скорость роста |
1.0 | 0.2 |
1.2 | 0.4 |
1.4 | 0.7 |
1.7 | 1.2 |
2.2 | 1.8 |
Первая колонка отвечает за стоимость улучшения, а вторая — за рост числа в секунду.
Если даже бегло взглянуть на числа, мы сможем определить ключевые принципы дизайна инкрементальных игр. Один их них — нелинейный рост как цены, так и пользы от улучшения, но рост цены значительно выше относительно роста прибыли.
В перспективе такой рост имеет смысл: если бы соотношение цены и пользы не увеличивалось (например, за цену 1 всегда бы покупалось 0.2 скорости роста), то не было бы никакой вариативности дохода и скорость роста бы росла стабильно и предсказуемо относительно цены. Наскучило бы всё это очень быстро.
Но вместо это мы имеет вот такой график соотношения цены (синий) и скорости роста (оранжевый) на первых 20 улучшениях:
(Скачать данные для графиков можно в формате .xlsx с GitHub, либо посмотреть в Google Sheets)
На этом графике видно, что функции нелинейные (и даже вовсе игнорируют функцию при скачке цены на 12 шаге). И цена растёт быстро, обгоняя скорость дохода. Этот аспект очень важен, так как он позволяет с прогрессом в игре экспоненциально увеличить время ожидания следующего улучшения. Поначалу игрок продвигается достаточно бодро, но чем больше он делает улучшений, тем ниже скорость продвижения вперёд.
Большинство инкрементальных игр имеют несколько источников дохода, которые можно улучшать, в отличие от единственного в Number. Этот факт является элементом исследования и стратегии в инкрементальных играх, так как имеет несколько векторов развития, которые растут нелинейно, и открывают игроку простор для попыток оптимизировать свой доход. Если игрок решает потратить все свои деньги на улучшение одного источника дохода, то благодаря экспоненциальному росту он дойдёт до такого момента, когда последующие улучшения будут стоить слишком много относительно пользы, которую они будут приносить. Потому игроку предлагается несколько путей развития, но ему постоянно необходимо оценивать, какое улучшение выгоднее в данный момент времени.
Линейные улучшения при экспоненциальном росте цен
Экспоненциальный рост цены — хорошее решение для постоянно увеличивающегося ресурса и времени, которое он на себя требует. Но экспоненциальный рост дохода вряд ли можно увидеть в большинстве игр. Почему же нет?
Если взглянуть на последний график, то мы увидим, что именно разница между двумя линиями даёт нам постоянно растущее соотношение цены к доходу. Для достижения этого, экспоненциально повышать нужно только цену (оранжевая кривая), а скорость получения ресурса оставить расти линейно.
В Clicker Heroes первым источником растущих чисел является персонаж Древозверь, который изначально стоит 50 монет и даёт прирост 5 в секунду. Второй уровень стоит 53.5, а прирост остаётся +5. Первые 50 уровней выглядят вот так (синий — цена, оранжевый — доход):
Имейте ввиду, что для простоты объяснения я опускаю некоторые механики в Clicker Heroes.
Функция дохода — прямая линия, так как каждое улучшение увеличивает доход ровно на 5, так что формула очень простая: общая скорость дохода в секунду = количество улучшений * 5 (y = 5x).
Стоимость же растёт, как и каждый шаг прироста к стоимости. Шаг прироста к стоимости у каждого последующего улучшения поначалу небольшой — по графику видно, что расстояние между кривыми за первые 20 улучшений почти не увеличивается. Но после 20-го уровня разница начинает расти существенно, требуя больше и больше за каждое последующее улучшение. Подобная формула стоимости улучшения используются в множестве инкрементальных игр:
\(Price = BaseCost * Multiplier ^{Owned}\)
Для нашего примера с Древозверем базовая цена (BaseCost) — 50, множитель (Multiplier) — 1.07. Второй уровень будет стоить 50 × 1.07¹ = 53.50, третий уровень — 50 × 1.07² = 54.24, и так далее. Множитель определяет изгиб линии: чем выше значения, тем более крутой будет кривая цены (Значение 1 даст линейный рост).
В Clicker Heroes значение равно 1.07 и этот множитель увеличивается для всех 35 улучшаемых героев, а различные здания в игре имеют значения 1.15. Интересно отметить, что все 10 построек в AdVenture Capitalist используют разные модификаторы, но в диапазоне от 1.07 до 1.15. Частое появление именно таких множителей предполагает, что построенные на множителях в этом диапазоне кривые являются сбалансированными и вполне удовлетворяющими игрока.
Хотя некоторые игры всё же отходят от шаблона. Инкрементальная игра «Монстр» в Steam, которая являлась частью летней распродажи в 2015 году, использует такие высокие множители как 2.5.
Экспоненциальный рост стоимости имеет плюс при балансировке несколько путей улучшений, обеспечивая убывающую доходность на любом из путей. Такой подход закладывает механику тактической балансировки доходности в саму формулу, нежели во что-то, придуманное гейм-дизайнером «сверху». Даже если улучшение дохода того или иного ресурса кажется более выгодным в тот или иной момент, экспоненциальный рост обеспечит невозможность получать выгоду вечно.
Взглянем на список улучшаемых строений в Cookie Clicker в качестве примера:
Строение | Базовая цена | Базовый доход в секунду |
Курсор | 15 | 0.1 |
Бабуля | 100 | 0.5 |
Ферма | 500 | 4 |
Фабрика | 3,000 | 10 |
Шахта | 10,000 | 40 |
Космический корабль | 40,000 | 100 |
Алхимическая лаборатория | 200,000 | 400 |
Портал | 1,666,666 | 6,666 |
Машина времени | 123,456,789 | 98,765 |
Уплотнитель антиматерии | 3,999,999,999 | 999,999 |
Призма | 75,000,000,000 | 10,000,000 |
Можно извлечь несколько закономерностей из одной только этой таблицы.
Первое — базовая цена каждого последующего источника дохода почти в 5 раз выше, чем у предыдущего (кроме нескольких последних). Подобный рост даёт игроку достаточно времени, чтобы полностью насладиться каждым новым открытым ресурсом. Если прирост будет меньше, то игрок будет открывать новое слишком часто, а если больше, то есть риск, что игрок устанет добираться до открытия нового контента.
Тем временем скорость дохода возрастает в среднем на треть от каждого следующего источника дохода, а это значит, что чем выше числа у цен, тем менее и менее эффективным становится доход по отношению к цене.
Каждая постройка имеет примерно один и тот же шаблон, так как следует одной и той же формуле: Цена = Базовая цена × 1.15Сделано улучшений. График ниже отражает каждое из 11 зданий и первые 200 улучшений для каждого из них. По оси y отображается цена, по x — доход. (Так как функции экспоненциальные, логарифмическая шкала лучше отражает похожесть кривых, чем линейная).
Даже несмотря на то, что все строения выглядят совершенно разными, каждое последующее стоит и производит больше, чем предыдущее. Экспонента в формировании цены создаёт такие похожие кривые, оставляя игроку возможность оптимизировать систему.
Объясняя эффективность
В целом, в инкрементальных играх нужно заставлять числа расти. Но именно достижение наивысшей скорости их повышения и обеспечивает глубину игры. Всегда есть несколько путей улучшения и игрок вынужден постоянно оценивать эффективность этих улучшений: стоит ли покупать более дешёвое улучшение прямо сейчас или подкопить ещё, чтобы купить более крутое?
Так как в конце концов игрок хочет все улучшения, самый эффективный подход заключается в оценке самого оптимального порядка. Представьте ситуацию: в данный момент мы производим 5 единиц чего-то в секунду (nps = 5), и у нас есть выбор из 2 улучшений. Первый стоит 20 (costa = 20) и увеличит прирост на 1 (ratea = 1), а другой стоит 100 (costb = 100) и увеличит прирост на 10 (rateb = 10). Первый, конечно, дешевле, но и эффективность у него соответствующая.
Допустим, что мы предпочитаем более дешёвый вариант:
- Мы ждём и копим ресурсы в течение 20/5 = 4 секунды и покупаем первый вариант.
- Дальше мы ждём 100/(5+1) = 16.67 секунд, чтобы купить второй вариант.
- У нас теперь прирост стал nps = 16 и заняло это у нас 20.67 секунд.
А теперь рассмотрим обратный вариант:
- Копим и ждём в течение 100/5 = 20 секунд и покупаем второй вариант.
- Теперь ждём 20/(5+10) = 1.33 секунды и покупаем первый вариант.
- У нас теперь прирост стал nps = 16, а заняло это 21.33 секунду.
Что явно говорит нам о первом варианте как более приоритетном: .
\(\frac{20}{5} + \frac{100}{(5 + 1)} < \frac{100}{5} + \frac{20}{(5 + 10)}\)
Упростив все формулы, мы получаем одну:
\(\frac{cost _{a}}{nps} + \frac{cost _{b}}{(nps+rate _{a})} < \frac{cost _{b}}{nps} + \frac{cost _{a}}{(nps+rate _{b})}\)
Но это лишь сравнение 2 возможных улучшений и не особо помогает, когда выбора много. Упростив формулу до одного апгрейда:
\(\frac{cost _{a}}{nps} + \frac{cost _{a}}{(nps+rate _{a})}\)
Теперь формулу можно применить к любому апгрейду, а самый низкий результат подскажет, что улучшать следующим. Таким образом можно определить самый эффективный путь оптимизации.
Для игрока это отличная информация, но и дизайнеру она тоже полезна. Зная самые эффективные пути использования различных игровых элементов, можно найти незапланированные скачки в требованиях по времени, а также убедиться, что оптимальная скорость прогресса соответствует задуманной.
Определение оптимальных сценариев развития позволяет сравнивать даже разные инкрементальные игры, так как все переменные можно свести к времени, которое требуется для достижения определённой скорости чисел. На графике ниже можно увидеть сколько времени требуется для достижения того или иного уровня в AdVenture Capitalist (зелёный) и Cookie Clicker (коричневый), если играть в них максимально эффективно (игнорируя все аспекты игры, кроме возведения построек):
Поразительно, как похожи две игры: оба графика быстро растут в первые 8-10 часов игры (порядка 500 минут), и сильно замедляются после этого. В конце концов они почти перестают расти, как только все здания построены. В результате этого большинство инкрементальных игр имеют другие покупаемые ресурсы помимо основных улучшаемых зданий — к примеру, одним из самых важных источников таких ресурсов является возможность сбросить прогресс и начать заново.
Из-за такой «спиральности» улучшений в инкрементальных играх проектирование такой игры может показаться пугающей перспективой. Но гейм-дизайнеру не нужно точно просчитывать каждый элемент. Вся красота комплексных нелинейных систем в том, что растущие апгрейды требуют высокоуровневой балансировки. Попытки найти самый оптимальный путь развития всей системы являются одновременно и сложностью, и радостью. Гейм-дизайнеру же просто необходимо удостовериться, что такая комплексная система есть.
«Сброс прогресса» и другие механики
Сброс прогресса позволяет игроку сбросить весь текущий прогресс в обмен на достаточно продолжительный бонус. Все покупки, улучшения и ресурсы приравниваются к нулю, но появляется множитель, который увеличивает глобально скорость прогресса новой игры.
Никакие формулы в игре не меняются. Игрок просто достигнет «плато» на графиках быстрее и быстрее. Т.е. по сути такая возможность позволяет игроку расширить свой геймплей за счёт уменьшения времени, необходимого для достижения более высоких уровней. Но бесконечно это длиться не может, так что в конце концов игроки-таки достигнут своеобразного энд-гейма.
Другая распространённая механика удлинения игры — повышение комплексности улучшаемых строений. До этого мы рассматривали только экспоненциальный рост цены, но существуют и другие способы улучшения, которые единоразово увеличивают общий прирост чисел или изменяют доход игрока каким-либо образом.
Например, в Clicker Heroes существуют улучшения, которые как увеличивают базовый прирост числа для каждого героя, так и увеличивают этот прирост сразу для всех героев. Хотя эти механики и не изменяют фундаментальных принципов инкрементальных игр, они могут расширить потенциальные возможности для исследования, усложняя задачу оптимизации развития игры. Также, помимо механики «Сброс прогресса» общее число улучшения может удлинить путь игрока до «плато».
Дерзай и наращивай
Несмотря на то, что мы не провели прямо уж глубокого анализа гейм-дизайна инкрементальных игр, у нас получился достаточно неплохой экскурс в их фундаментальные особенности. В качестве заключения подведу итоги для гейм-дизайнеров и разработчиков:
- Необходимо иметь и поддерживать в игре ощущение открытия нового.
- Стоит иметь и активный, и пассивный геймплей (в идеале оба).
- Не игнорируйте цельную тематику и художественный стиль игры.
- Делайте экспоненциальный рост цены по формуле Цена = Базовая цена * МножительСделано улучшений с множителями от 1.07 до 1.15.
- Обеспечьте игроку несколько путей оптимизации прогресса.
- Расширяйте игру через постоянное использование сброса прогресса и увеличение комплексности улучшений.
Если вы заинтересованы в дальнейшем изучении инкрементальных игр, то на Reddit есть отличное сообщество дизайнеров и разработчиков, которое даст советы и подкинет идей. Если вам хочется углубиться и попробовать применить свои идеи, то разработчик Cookie Clicker специально для этого создал инструмент, при помощи которого можно создавать подобные игры. Такой инструмент — отличная возможность поэкспериментировать со своими идеями. Если же вам нужно что-то более продвинутое, то у создателя CivClicker есть замечательная статья с примерами кода для HTML и JavaScript.
Надеюсь, что данная статья послужит вдохновения для дальнейших исследований инкрементальных игр. В конце концов ещё столько нетронутых идей витает в воздухе:
P.S. все Excel-файлы с графиками из статьи можно скачать из репозитория на GitHub или посмотреть в Google Spreadsheets.
Один комментарий
Dmitry Kuratnik
Спасибо, не затягивайте с переводом следующей статьи из цикла пожалуйста