Гайды / За кадром

Как спроектировать idle-игру: формулы и уроки четырёх наших игр

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

Снаружи idle-игра выглядит просто: числа растут. Внутри это несколько кривых, которые обгоняют друг друга, часы и сброс. Мы выпустили четыре игры на этом движке - Idle Ronin, Idle Summoner, Idle AI Factory и уровни Мозгика в Block Brain - и исправили баги, которые проявляются только после сотен часов игры. Вот что мы сказали бы себе в первый день, с настоящими формулами из нашего кода.

Основной цикл: заработать, потратить, зарабатывать быстрее

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

Кривые цен: экспоненциальные, но не вечно одинаковые

Цены улучшений в idle-играх растут экспоненциально: каждый уровень стоит на фиксированный множитель больше предыдущего. В Idle Ronin цена уровня юнита растёт на 14% за уровень до 300-го уровня, потом на 12,5% до 1000-го и на 11,5% дальше, так что кривая немного смягчается, чем дольше кто-то играет. Idle AI Factory просит в 1,8 раза больше монет за каждый уровень завода, а в Idle Summoner каждая ступень цепочки призывов стоит примерно в 1,87 раза больше предыдущей: 56, 105, 196, 367 золота и так далее.

Одни только экспоненциальные цены делают все улучшения одинаковыми. Эту монотонность ломают два инструмента:

  • Рубежи. Idle AI Factory удваивает производство этажа на уровнях этажа 10, 25, 50, 75 и 100, так что этаж 100-го уровня производит в 32 раза больше, чем на 9-м. У игрока всегда есть видимая цель.
  • Заметные скачки. Каждый монстр в Idle Summoner бьёт примерно в 1,7 раза сильнее предыдущего, так что новый монстр ощущается как скачок, а не как +3%.

Наша статья о прогрессе в idle-играх сравнивает эти кривые с другими играми.

Стены: кривая, которая давит в ответ

Сила игрока растёт с улучшениями, а сложность игры - с этапами. Разрыв между двумя кривыми и есть твой темп. В Idle Ronin здоровье врагов сначала растёт на 40–57% за этап, потом на 14,5% за этап после 140-го этапа, на 15,5% после 500-го и на 15% после 1000-го. У босса в конце каждого этапа в 6 раз больше обычного здоровья, а начиная с 14-го этапа на этапах, номер которых заканчивается на 4 или 9, - в 10 раз, так что каждый пятый этап - маленькая стена.

У стен игроки решают, улучшаться, делать сброс или отложить телефон, так что ставь их туда, где есть ясный ответ. В Idle Ronin ответ всегда под рукой: на босса даётся 30 секунд, а неудачная попытка отправляет игрока обратно фармить, а не в самое начало.

Готовься к большим числам с первого дня

Кривая здоровья врагов Idle Ronin в сравнении с самыми большими float и double
Кривая здоровья врагов Idle Ronin в сравнении с самыми большими float и double

Числа idle-игр перерастают обычные числовые типы. 32-битный float доходит максимум примерно до 3,4 x 10^38. Здоровье врагов в Idle Ronin превышает 10^28 примерно к 140-му этапу, а старый код считал кривую во float, который переполнялся до бесконечности на 316-м этапе. На следующих этапах здоровье обваливалось до нуля, а ещё выше расчёт давал NaN, и прогресс замирал примерно на 1000-м этапе.

Решением стало считать всю кривую в double, а выше 1000-го этапа переходить на наш собственный тип для больших чисел. Он хранит значение и отдельную экспоненту и возводит числа в степень в логарифмическом пространстве, так что 1,15^9000 обходится так же дёшево, как 1,15^2. Double доходит примерно до 1,8 x 10^308, и эта кривая превысила бы его только около 4 750-го этапа, но собственный тип закрывает вопрос навсегда.

Урок: до релиза выбери числовой тип, в который помещается вся твоя кривая, и тестируй на 1000-м этапе, а не на 50-м. Как показывать эти числа - отдельная задача дизайна, о ней наше руководство по записи чисел в idle-играх.

Офлайн-прогресс: измерить, ограничить, зажать

Офлайн-доход - главное обещание жанра, и его форму задают три решения:

  • Правильно измеряй время. Исходный код Idle AI Factory читал время отсутствия из поля, которое заполнялось только при возврате приложения из фона. После настоящего перезапуска он насчитывал 1 секунду, и игроки, полностью закрывшие игру, почти ничего не получали. Теперь время при каждом запуске отсчитывается от сохранённого времени выхода.
  • Ограничь его сверху. Idle Ronin считает до 8 часов, Idle AI Factory начинает с 2 часов, а исследования поднимают это до 8, и приветственная награда Idle Summoner считает до 24 часов. Потолок решает, как часто ты зовёшь игроков обратно.
  • Зажми скорость. Idle AI Factory брала офлайн-скорость из последнего рейса грузовика: прибыль этого рейса, делённая на его длительность. Она прыгала от бустеров, касаний и коротких рейсов, так что игрок, ушедший во время бустера, возвращался к целому состоянию. Теперь скорость держится между медленным рейсом, 5% монет текущего уровня каждые 20 секунд, и быстрым, 15% каждые 8 секунд.

Ещё игнорируй очень короткие перерывы. И Idle Ronin, и Idle AI Factory требуют 3 минуты отсутствия, прежде чем что-то считать, чтобы переключение приложений не выбрасывало экран награды. Наше руководство по офлайн-доходу сравнивает правила многих игр.

Размер наград - по прогрессу, а не по времени

Бесплатным наградам вроде бонусов за вход, заданий, шкал событий и дронов нужен размер, который остаётся честным с 1-го уровня до 300-го. Сначала Idle AI Factory выдавала их как число секунд дохода. Поскольку каждый уровень завода стоит в 1,8 раза больше предыдущего, 40 минут дохода могли стоить около 16 уровней, а одно получение награды в событии выходных могло раздать миллиарды.

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

Престиж: плати за то, как далеко зашёл игрок

Сброс работает, только если он явно выгоден. Наши три варианта:

  • Idle AI Factory: с 40-го уровня «Перезапуск завода» даёт AI-ядра = (2 x (уровень - 30)^1,35 + 2 x звёзды) x множитель 1, 1,5 или 2 в зависимости от завода. Степень 1,35 делает продвижение дальше выгодным, но не превращает поздний перезапуск в обязанность.
  • Idle Summoner: перерождение с 50-го этапа превращает твой этап в уровни игрока, каждый из которых навсегда даёт +1% урона, а высокие уровни приносят классовые ранги, которые повышают шанс призыва.
  • Idle Ronin: перерождение даёт жетоны, которых тем больше, чем дальше этап, и игра выделяет кнопку перерождения в тот момент, когда ты доходишь до 50-го этапа, потому что на первый сброс решиться труднее всего.

Подробнее о моменте и формулах - в нашем руководстве по престижу.

Случайность со страховкой

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

  • Цепочка призывов в Idle Summoner падает с 98% до 6% за ступень, но каждая неудача добавляет 1% к следующим нажатиям, до +20%, пока игрок не поставит или не продаст монстра.
  • Юнит недели в Idle Ronin выпадает с шансом 12% за каждое Ядро юнита и гарантирован в пределах 30 ядер.
  • Сундуки с роботами в Idle AI Factory можно только заработать, их никогда не продают, а шансы в них зашиты в код.

Наше руководство по шансам выпадения и гаранту объясняет эти гарантии со стороны игрока.

Подгоняй кривые под реальный график

Проектируй кривую от конца, отталкиваясь от того, как в неё будут играть. Уровни Мозгика в Block Brain требуют в сумме round(19,7 x уровень^2,3) опыта. Две константы выросли из цели: тот, кто играет около восьми партий в день, должен дойти до 5-го уровня в первый день, до 15-го примерно за две недели, до 30-го примерно за два месяца и до 50-го примерно за полгода. Если сначала задать график, вопрос «не слишком ли медленно?» становится вопросом, на который можно ответить.

Тестируй длинный хвост

Баги, которые сильнее всего вредят idle-играм, сидят там, куда тестировщики редко добираются:

  • Через сотни этапов, где числа переполняются.
  • После настоящего перезапуска, где офлайн-таймер начинает с нуля.
  • На телефонах с другими языками. Код, который записывает десятичное число по настройкам самого телефона, во многих странах Европы пишет 7392,58 вместо 7392.58. В игре, которую мы сейчас делаем, эта одна запятая разрезала строку сохранения и сдвинула все значения после неё. Исправила это фиксация формата чисел на инвариантной культуре.
  • В функциях, которые кажутся рабочими. Когда мы переделывали Idle Summoner, оказалось, что облачное сохранение в ней было отключено: данные собирались и потом выбрасывались, так что кнопки «Сохранить» и «Загрузить» ничего не делали. Показать это может только нажатие на кнопку и проверка результата.

Сделай отладочные инструменты, которые прыгают на 1000-й этап, имитируют неделю отсутствия и переключают язык прямо во время игры. Они окупаются на первом же баге.

Чек-лист перед релизом

  1. Запиши кривые цены, силы и сложности формулами до того, как строить интерфейс.
  2. Давай игроку рубеж или заметный скачок каждые несколько минут.
  3. Выбери числовой тип, который выдержит твой самый высокий этап, и тестируй там.
  4. Измеряй офлайн-время от сохранённой метки времени, ограничивай его и зажимай скорость.
  5. Считай бесплатные награды от текущего прогресса, а не от времени.
  6. Сделай первый престиж ранним и очевидно выгодным.
  7. Дай каждой случайной системе правило гаранта.
  8. Подгони всё под целевой график, а потом тестируй далеко за его пределами.

Все эти системы можно увидеть в деле в Idle Ronin, Idle Summoner, Idle AI Factory и Block Brain - все бесплатно в Google Play.

Источники

  • Код игр ONI Games, сентябрь 2026 года: Idle Ronin (PlayerDatabase.cs, Medal.cs, double_evrac.cs), Idle Summoner (monster_script.cs, cloudsave_script.cs), Idle AI Factory (Balance.cs, Economy.cs, SaveManager.cs), Block Brain (BrainProgress.cs).
  • Anthony Pecorella, The Math of Idle Games, Part I, Kongregate / Game Developer, 2016.

Другие гайды

Все гайды

◆ Другие игры ONI Games

Другие игры

Листайте, чтобы увидеть больше

ONI Snakes: Armored Arena
Уже вышла · Google Play

ONI Snakes: Armored Arena

Сбивай броню с вражеских змей, стань гигантом и захвати неоновую арену в 11 режимах игры - онлайн и с друзьями.

Подробнее об игре →
Idle Ronin: Cyber RPG
Уже вышла · Google Play

Idle Ronin: Cyber RPG

Погрузись в неоновое будущее в роли последнего Кибер-Ронина. Руби волны мехов, собери отряд киборгов и штурмуй Neon Tower. Твой клинок не останавливается, даже когда ты офлайн.

Подробнее об игре →
Idle Summoner: Pixel RPG
Уже вышла · Google Play

Idle Summoner: Pixel RPG

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

Подробнее об игре →
Block Brain: Block Puzzle Game
Уже вышла · Google Play

Block Brain: Block Puzzle Game

Расставляй яркие блоки, собирай линии и делай комбо за комбо, пока твой Мозгик растёт от крошечного Ростка до коронованного Гения.

Подробнее об игре →
Idle AI Factory: Robot Tycoon
Уже вышла · Google Play

Idle AI Factory: Robot Tycoon

Управляй фабрикой, полной весёлых роботов, автоматизируй каждую производственную линию и вырасти от маленькой AI-лаборатории до базы на Луне.

Подробнее об игре →
Idle Restaurant: Miami
Уже вышла · Google Play

Idle Restaurant: Miami

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

Подробнее об игре →