← Все кейсы
AndroidKotlin/ComposeBackendAPI

Испытание дня - ежедневная словесная игра с онлайн-рейтингом

Задача

Сделать мобильную игру в духе Wordle - с ежедневной задачей, сериями побед (streak) и возможностью поделиться результатом - и добавить соревновательный элемент: онлайн-таблицу лидеров за день и за неделю, без необходимости регистрации.

Решение

Android-приложение на Kotlin/Jetpack Compose с локальным прогрессом и календарём результатов, плюс отдельный лёгкий серверный бэкенд (Vercel Edge Functions + Redis), который принимает результаты игроков, защищает от подделки и отдаёт рейтинг в реальном времени. Добавлен второй игровой режим с рекламной монетизацией и вход через Google-аккаунт для переноса прогресса между устройствами.

  • Ежедневная головоломка с детерминированной генерацией выпусков после исчерпания заготовленного пула
  • Локальный прогресс: календарь результатов за 28 дней, статистика серий побед
  • Онлайн-лидерборд: дневной и недельный, с редактируемым никнеймом
  • Анти-чит без общего секрета на клиенте - у каждой установки свой производный HMAC-ключ для подписи результата
  • Второй, «бесконечный» режим с ad-монетизацией и ограничением частоты показа рекламы
  • Переключение темы и языка (RU/EN) на лету

Скриншоты

Результат

Рабочее приложение, прошедшее предпродакшн-аудит перед публикацией в RuStore. Игра опубликована - доступна для установки в RuStore под названием «Испытание дня».

Открыть в RuStore

Стек

Kotlin Jetpack Compose TypeScript Vercel Edge Functions Upstash Redis Firebase / Google Sign-In JUnit

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