Telegram Mini App · лояльность · компьютерный клуб

Gg-Tap

Skill-аркада вместо колеса призов — короткий забег, рейтинг, Gg и выдача в зале

Без аккаунта и без клуба — очки остаются в этом браузере.

Product · Full-stack · Game ReactTypeScriptThree.jsPHPMySQL
Скриншот проекта «Gg-Tap»
30 сек Длительность забега
демо + клуб Статус

Задача

Что нужно было решить

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

Решение

Что я сделал

Собрал Gg-Tap отдельным продуктом рядом с сайтом клуба: Telegram Mini App и публичное веб-демо. Цикл один и читается с порога: сыграл, получил счёт, счёт становится Gg, Gg меняются на приз у стойки. Рейтинг считает лучший забег, а не кошелёк — соревноваться нужно в игре. Игровой счёт подтверждает сервер, не клиент. Для кассы — своя панель: заказ, код, выдать или отменить. Экономику и лимиты вынес в конфиг, чтобы крутить без переписывания кода. В портфолио оставил браузерный режим без привязки к клубу.

Компромиссы

Чем пришлось пожертвовать

Лотерею разменял на скилл. Это дороже: нужна модель, в которой клиенту нельзя доверять счёт, и экономика, которая не опустошает зал из‑за быстрых пальцев. Зато приз больше не падает с неба, а таблица лидеров не покупается накопительством. Намеренно не делал уровни, инвентарь и вторую валюту — один цикл, который объясняется за десять секунд. Демо в браузере сознательно отрезано от клуба: посетитель играет, учёт гостей и выдача остаются за периметром. Стек оставил на PHP рядом с уже оплаченным хостингом, а не увёл игру на отдельный Node.

Результат

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

Колесо заменено. Гость играет короткий забег, копит Gg и забирает приз на стойке. Тот же цикл можно пройти в браузере — без входа и без привязки к клубу. В зале выдача идёт через кассу, не через разработчика.

Итог в трёх словах

  • Скилл вместо лотереи
  • Gg → приз в зале
  • Демо без клуба

Стек

  • React
  • TypeScript
  • Three.js
  • PHP
  • MySQL
  • Telegram Mini App
  • Vite