[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "create", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } } ] { "gtm": "GTM-NDH47H" }
{ "author_name": "Глеб Диденко", "author_type": "self", "tags": ["\u0433\u0435\u0439\u043c\u0434\u0438\u0437\u0430\u0439\u043d"], "comments": 1, "likes": 19, "favorites": 8, "is_advertisement": false, "section": "pro" }
984
Gamedev

Формула клика: ресурсы в инкрементальных играх

Математика, приёмы и графики роста.

Поделиться

В избранное

В избранном

За кажущейся простотой idle-игр и кликеров часто скрывается продуманный геймдизайн. Геймдизайнер и участник коллективного блога «Манжеты ГД» Илья Осташко перевёл вторую статью из цикла аналитика Александра Кинга, посвящённого этому жанру. DTF уже публиковал первую часть материала.

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

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

Это, по сути, и есть «инкрементальная» игра.

Перед тем, как погрузиться в математику, я хотел бы отметить три важных момента в дизайне инкрементальных проектов, о которых необходимо помнить: ощущения исследования, разница между «айдлером» и «кликером», важность темы и художественного стиля.

Радость от исследований

Один из самых важных «радостных» элементов в инкрементальной игре — это открытие нового. Многие из них начинаются очень просто, но комплексность растёт по спирали вместе с прогрессом игрока. Процесс раскрытия комплексности игры побуждает игрока и дальше исследовать её, открывая новые и спрятанные игровые элементы. Например, Candy Box можно воспринимать целиком как игру об исследовании самой себя, и повышение уровня — это просто механизм открытия дальнейшего контента.

Поэтому в большинстве инкрементальных игр весь контент сразу не доступен, а открывается путём траты внутриигровой валюты. Масштаб контента может быть известен игроку с самого начала, как в Idling to Rule the Gods, где конкретные части игры специально оставлены пустыми, давая понять, как и когда они будут открыты. А может быть скрытым, когда пользователю не сообщают, что те или иные элементы существуют, пока он не достигнет определённого уровня (например, почти весь контент в Cookie Clicker). Некоторые игры совмещают оба варианта: в AdVenture Capitalist игроку демонстрируют, как много контента можно открыть, но в то же время есть много скрытых достижений.

Да уж, путь предстоит неблизкий.

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

Айдлер или кликер?

Инкрементальные игры сконцентрированы на двух пересекающихся, но разных механиках:

  • Автономный прогресс, скорость которого постепенно увеличивается игроком;
  • Активное, с постоянно растущей продуктивностью, вовлечение пользователя.

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

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

Выбор того или иного варианта — в целом вопрос предпочтений и влияния на цели игры. Игра, которая требует активного управления, может больше вовлекать в течение короткого периода времени, но, если она будет слишком часто требовать много внимания от игрока, то легко нарушит принципы этичного геймдизайна. Более автономная игра может требовать меньше вовлечения игрока в каждой сессии, но может вызвать большую привязанность. Отчасти это объясняет высокие показатели возврата у idle-игр на Kongregate. AdVenture Capitalist даже напоминает игроку, что же произошло в его отсутствие, и подчёркивает, что игра не требует постоянного внимания:

Художественный стиль и тематика

Часто нарратив, в который обёрнута основная механика, принесёт только пользу инкрементальной игре (хотя это и не очевидно, учитывая минимализм механик в таких играх).

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

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

По сравнению с другими жанрами, инкрементальным играм не так нужны хорошая графика и проработанные тексты. Но очень важно понимать, что это не то же самое, что «совсем не нужны».

Растущие числа

Определяющая жанр механика для инкрементальных игр — рост чисел. В предыдущей статье мы определили её так:

  • наличие как минимум одной валюты или числа;

  • это число растёт с определённой скоростью и не требует вмешательства игрока, либо требует незначительных действий с его стороны;

  • можно увеличить скорость, с которой растёт число.

Именно третий пункт сильно влияет на ощущения от игры, это самый сложный аспект дизайна. Возьмём самый простой пример из проекта Тайлера Глайеля (Tyler Glaiel) Number: в нём нет ничего кроме трёх вышеупомянутых пунктов. Число-ресурс растёт, и можно его тратить, чтобы он рос быстрее.

Когда игра начинается, скорость роста равна 0,1 единицы в секунду. Число накапливается, и его можно потратить на ускорение роста. Первые пять улучшений выглядят так:

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

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

В перспективе такой рост имеет смысл: если бы соотношение цены и пользы не увеличивалось (например, за цену 1 всегда бы покупалось 0,2 скорости роста), то не было бы никакой вариативности дохода, и скорость росла бы стабильно и предсказуемо относительно цены. Это бы очень быстро наскучило.

Но вместо этого мы имеет вот такой график соотношения цены (синий) и скорости роста (оранжевый) для первых 20 улучшений:

Синий: цена улучшения. Оранжевый: скорость роста в секунду при определённом количестве улучшений. К примеру, 10-е улучшение стоит 7 единиц, а даёт уже 7.6 единиц в секунду.

Скачать данные для графиков можно в формате .xlsx с GitHub, либо посмотреть в Google Sheets).

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

Большинство инкрементальных игр имеют несколько источников дохода, которые можно улучшать (в отличие от единственного в Number). Это элемент исследования и стратегии: есть несколько векторов развития, растущих нелинейно и открывающих игроку простор для попыток оптимизировать доход. Если пользователь решает потратить все свои деньги на улучшение одного источника дохода, то благодаря экспоненциальному росту он дойдёт до такого момента, когда последующие улучшения будут стоить слишком много относительно пользы, которую они будут приносить. Потому игроку предлагается несколько путей развития, но ему постоянно необходимо оценивать, какое улучшение выгоднее в каждый момент времени.

Линейные улучшения при экспоненциальном росте цен

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

Если взглянуть на последний график, можно заметить, что именно разница между двумя линиями даёт постоянно растущее соотношение цены к доходу. Для достижения этого, экспоненциально повышать нужно только цену (оранжевая кривая), а скорость получения ресурса оставить расти линейно.

В Clicker Heroes первым источником растущих чисел является персонаж Древозверь, который изначально стоит 50 монет и даёт прирост 5 монет в секунду. Второй уровень стоит 53,5, а прирост остаётся 5. Первые 50 уровней выглядят вот так (синий — цена, оранжевый — доход):

Имейте ввиду, что для простоты объяснения я опускаю некоторые механики в Clicker Heroes.

Функция дохода — прямая линия, так как каждое улучшение увеличивает доход ровно на 5, так что формула очень простая: общая скорость дохода в секунду = количество улучшений × 5 (y = 5x).

Стоимость же растёт, как и каждый шаг прироста к стоимости. Шаг прироста к стоимости у каждого последующего улучшения поначалу небольшой — по графику видно, что расстояние между кривыми за первые 20 улучшений почти не увеличивается. Но после 20-го уровня разница начинает расти существенно, требуя больше и больше за каждое последующее улучшение. Подобная формула используются во множестве инкрементальных игр:

Для нашего примера с Древозверем базовая цена (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. Можно предположить, что построенные на множителях в этом диапазоне кривые сбалансированы и вполне удовлетворяют игроков.

Хотя некоторые проекты всё же отходят от шаблона. Инкрементальная «Чудовищная игра» (Monster Game), бывшая частью летней распродажи в Steam 2015 года, использовала высокие множители (около 2,5).

Экспоненциальный рост стоимости имеет плюс при балансировке несколько путей улучшений: он обеспечивает убывающую доходность на любом из них. Такой подход закладывает механику тактической балансировки доходности в саму формулу, а не в элементы, добавляемые геймдизайнером «сверху». Даже если ускорение получения того или иного ресурса кажется более выгодным в конкретный момент, экспоненциальный рост на даёт получать выгоду вечно.

В качестве примера, взглянем на список улучшаемых строений в Cookie Clicker:

Из одной этой таблицы можно вывести несколько закономерностей.

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

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

Каждая постройка имеет примерно один и тот же шаблон, так как следует одной и той же формуле:

График ниже отражает каждое из 11 зданий и первые 200 улучшений для каждого из них. По оси «y» отображается цена, по «x» — доход (так как функции экспоненциальные, логарифмическая шкала лучше отражает похожесть кривых, чем линейная).

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

Объясняя эффективность

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

Так как в конце концов игрок хочет получить все апгрейды, эффективный подход заключается в оценке самого оптимального порядка. Представьте ситуацию: в данный момент мы производим пять единиц чего-то в секунду (nps = 5), и у нас есть выбор из двух улучшений. Первое стоит 20 (costA = 20) и увеличит прирост на один (rateA = 1), а другое — 100 (costB = 100) и увеличит прирост на 10 (rateB = 10). Первый апгрейд, конечно, дешевле, но и эффективность у него соответствующая.

Допустим, что мы предпочитаем более дешёвый вариант:

  • Ждём и копим ресурсы в течение 20:5 = 4 секунд и покупаем первый вариант.
  • Дальше ждём 100:(5+1) = 16,67 секунд, чтобы купить второй вариант.
  • ​Прирост достиг 16-ти, что заняло у нас 20,67 секунд.

А теперь рассмотрим обратный вариант:

  • Копим и ждём в течение 100:5 = 20 секунд и покупаем второй вариант. ​
  • Теперь ждём 20:(5+10) = 1,33 секунды и покупаем первый вариант.
  • Прирост достиг 16-ти, а заняло это 21,33 секунды.

Что явно говорит нам о первом варианте как более приоритетном:

Упростив все формулы, мы получаем одну:

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

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

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

Определение оптимальных сценариев развития позволяет сравнивать даже разные инкрементальные игры, так как все переменные можно свести к времени, которое требуется для достижения определённой скорости чисел. На графике ниже можно увидеть сколько времени требуется для достижения того или иного уровня в AdVenture Capitalist (зелёный) и Cookie Clicker (коричневый), если играть в них максимально эффективно (игнорируя все аспекты игры, кроме возведения построек):

Поразительно, как похожи две игры: оба графика быстро растут в первые 8-10 часов игры (около 500 минут), и сильно замедляются после этого. Они почти останавливаются, как только построены все здания. В большинстве инкрементальных игр есть другие ресурсы помимо основных улучшаемых зданий — к примеру, одним из самых важных источников таких ресурсов является возможность сбросить прогресс и начать заново.

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

«Сброс прогресса» и другие механики

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

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

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

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

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

Дерзай и наращивай

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

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

Если вы заинтересованы в дальнейшем изучении инкрементальных игр, то на Reddit есть отличное сообщество дизайнеров и разработчиков, которое даст советы и подкинет идей. Если вам хочется углубиться и попробовать применить свои идеи, разработчик Cookie Clicker специально для этого создал инструмент, при помощи которого можно делать подобные игры. Это отличная возможность поэкспериментировать со своими идеями. Если же вам нужно что-то более продвинутое, у создателя CivClicker есть замечательная статья с примерами кода для HTML и JavaScript.

Все Excel-файлы с графиками из статьи можно скачать из репозитория на GitHub или посмотреть в Google Spreadsheets.

#геймдизайн

Популярные материалы
Показать еще
{ "is_needs_advanced_access": false }

Комментарии Комм.

Популярные

По порядку

Прямой эфир

Узнавайте первым важные новости

Подписаться