Switch to English?
Yes
Переключитись на українську?
Так
Переключиться на русскую?
Да
Przełączyć się na polską?
Tak
Браузерная idle-игра в Telegram. Игрок строит космическую колонию енотов: терраформирует планеты, добывает ресурсы, собирает корабли, отправляет экспедиции, ловит редкие события. Сделал в одиночку с нуля — от идеи до прода.

Играть → @TerraRaccoonsBot

Игровые механики (30+)

1. Терраформинг планет — превращение мёртвых миров в обитаемые
2. 10 уникальных планет (3D-канвас, 4 состояния на каждую)
3. Дроны G1–G5 — добывают ресурсы пока ты офлайн
4. Прокачка дронов по уровням
5. 11 скиллов с рандомной генерацией имён через гачу, скиллы комбинируются
6. Кликер по дронам для активной игры
7. Станции — апгрейд хранилищ и производства
8. Перемещение дронов между станциями
9. Корабли 5 редкостей (G1–G5) с уникальной графикой
10. Гача-ящики на корабли
11. Merge-система — объединение дубликатов в более редкие
12. Ангар кораблей и дронов с сортировкой и фильтрами
13. Экспедиции — 8 типов с разной длительностью и наградой, прямая взаимосвзясь с механикой кораблей
15. Ускорение и раннее завершение экспедиций
16. VIP-система
17. Лидерборд
18. Маркетплейс — онлайн-сделки между игроками
19. Глобальные события с уведомлениями в бота (контракт енотов, аномалия, древний сигнал, искажение времени)
20. 20+ миссий, ежедневные и долгосрочные
21. Прогресс по планетам — открываются по мере роста
22. Магазин бандлов с пакетами ресурсов
23. Премиум-валюта Terrafract
24. Конвертация ресурсов
25. Реклама для ускорения прогресса
26. Платежи через Telegram Stars и TON Wallet (в процессе)
27. 14 языков (ru, en, zh, tr, it, pl, pt, es, de, fr, ja, uk, ar, hi)
28. Авторизация одним тапом через Telegram
29. Офлайн-прогресс — награды копятся пока тебя нет
30. Onboarding для новых игроков
31. Анимации и эффекты при сборе наград
32. Адаптивный мобильный интерфейс
33. Уведомления о готовности дронов и кораблей

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

## Техническая часть

Стек: React 18, Vite, Zustand, Tailwind CSS / Node.js, Express, TypeScript, SQLite / JWT поверх Telegram initData / Winston / VDS на Linux, nginx, PM2 cluster.

Архитектура:

- SSOT на фронте. Один Zustand-стор хранит всё состояние, компоненты подписываются на срезы. Никакого дублирования между useState и сервером.
- Hot-domain на бэке. In-memory кэш поверх SQLite для горячих операций (сбор ресурсов, перемещение дронов, тики станций) с отложенной записью через FlushScheduler — БД не задыхается под нагрузкой.
- Тонкие контроллеры, толстый домен. Роуты только парсят запрос и зовут доменные функции, бизнес-логика тестируется без HTTP.
- Динамические чанки i18n. Каждый язык в отдельном файле, грузится по требованию — стартовый бандл не раздут на 14 локалей.
- ErrorBoundary с читаемым выводом. Ошибки рендера ловятся и показываются на экране со стеком, вместо синего экрана. Критично для Telegram WebView без DevTools.
- Anti-abuse многослойный. Экспедиции защищены гейтом по прогрессу, требованием терраформинга, повторной проверкой события при сборе, нерфом эксплойтных типов.

Симулятор экономики. Отдельный инструмент, прогоняющий сотни виртуальных игроков и считающий ROI источников, retention, convergence, profitability gap для F2P и платящих. Использовал для трёх крупных ребалансов (V1→V2→V3→soft-deficit), чтобы добиться равного ROI всех 11 источников и стоков при круглых числах.

Деплой. Одна команда: git pull && pm2 restart terra-backend && cd terra-gaming && npm run build. Фронт и бэк на одном VDS, nginx раздаёт статику, проксирует /api на Express. Без Docker и CI/CD — починить можно руками за минуту.

Что сделал: прототип в фигме, 3д ассеты, Архитектура, БД, API, фронтенд, UI/UX, экономика, балансировка, деплой, админка. Игра в закрытой бете.
Детали работы
Добавлена 11 апреля
86 просмотров
Фрилансер
Vadim A.
Украина Украина  1  0

Свободен для работы Свободен для работы
1 Сейф завершен
На сервисе 2 месяца 12 дней