Все работы

Фруктовое безумие

TypeScript · Яндекс.Игры / 2026

0

рантайм-зависимостей

10

игровых механик

1 билд

телефон и десктоп

Активный кликер под Яндекс.Игры: комбо, криты, престиж, оффлайн-доход. Ноль рантайм-зависимостей, один билд на телефон и десктоп.

Что требовалось

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

Что я сделал

  • Десять механик: комбо до x3, криты, "фруктовое безумие" x10, золотые сферы, генераторы пассивного дохода, престиж, оффлайн-доход, ачивки, персонажи и скины
  • Прослойка Platform: игра не дёргает Яндекс напрямую - SDK подхватывается, если есть на странице, иначе всё работает в голом браузере
  • Облачные сейвы с локальной копией и разбором конфликта по свежести - прогресс не пропадает у анонима и при обрыве сети
  • Rewarded-ролики, межстраничная реклама и покупки с ценами из каталога площадки, а не зашитыми в код
  • Русский и английский; ключ перевода - сама русская строка, поэтому забытый перевод видно на экране, а не по пустому идентификатору
  • Пайплайн ассетов: графика в WebP, звук в Opus/AAC через sharp и ffmpeg
  • Один билд на мобилку и десктоп - переключение чисто на CSS, точка перелома 900px

Что получилось

Весь баланс живёт в одном src/balance.ts, чисел больше нигде нет. В сборке ноль сторонних рантайм-зависимостей: TypeScript и Vite нужны только на этапе сборки.