Разработка мобильной игры Idle/Clicker
Idle-игры технически проще большинства жанров, но монетизируются лучше многих — если правильно настроена кривая прогрессии. Здесь выигрывает математика, а не графика.
Числа большие: работа с Decimal и BigInteger
Idle-игры используют числа, которые не помещаются в double. Через 10 часов игры у игрока может быть 1.23e+150 монет. double даёт точность 15–17 значимых цифр, после чего прибавление маленькой суммы к огромной просто игнорируется — и игрок перестаёт видеть прирост от слабых генераторов.
Решение: кастомный BigDecimal или готовая библиотека BreakInfinity.cs (специально создана для idle-игр, работает в Unity, в 10 раз быстрее стандартного BigInteger). Форматирование: 1.23e+12 → «1.23T» или «1.23 трлн» — кастомный formatter с словарём суффиксов.
Офлайн-прогресс и честность
Считать офлайн-прирост при следующем открытии игры — стандарт. Важный нюанс: ограничивай офлайн-период (например, 8 часов максимум), иначе игрок может «накопить» 30 дней и мгновенно пройти весь контент. Премиум-предложение «увеличить офлайн-предел до 16 часов» — популярная IAP в жанре.
Сохранение: текущие ресурсы + timestamp последнего закрытия + версия баланса. При загрузке: offlineSeconds = min(now - lastClose, maxOfflineSeconds). Затем earned = productionPerSecond * offlineSeconds. Productión per second — кэшируется и пересчитывается только при покупке апгрейда, не каждый тик.
Нотификации как retention-инструмент
FCM scheduled notifications: «Твои генераторы заполнены, забери ресурсы!». На Android — AlarmManager через Unity plugin для точных таймеров. На iOS — UNNotificationRequest с UNTimeIntervalNotificationTrigger. Не отправляй уведомление раньше чем через 2 часа после закрытия приложения — иначе раздражает.
Сроки: базовый idle/clicker с 20 апгрейдами, офлайн-прогрессом и монетизацией — 6–10 недель. С сезонными ивентами и расширенной прокачкой — 3–4 месяца.







