Path of Exhale: браузерная idle-RPG с PvP-ареной

Фанатская idle-игра по мотивам Path of Exile: бой идёт сам, игрок собирает героя, крафтит вещи орбами и дерётся с другими игроками на арене. От первого коммита до запуска на своём домене прошло три дня.

pathofexhale.com

Задача

В Path of Exile люди часами подбирают пассивки, камни умений и свойства предметов. Идея проекта: перенести это удовольствие в формат idle, где бой идёт в фоне, а игрок принимает решения между заходами. Игра должна была открываться в браузере на компьютере и телефоне, хранить прогресс на сервере и давать честные бои между живыми игроками.

Решение

Движок боя и правил написали на чистом TypeScript без привязки к интерфейсу. Он детерминирован: одинаковый seed даёт одинаковый бой, поэтому любую ошибку можно воспроизвести в тесте. Интерфейс собран на React 19, эффекты боя рисует Pixi.js. Сервер на Node.js хранит аккаунты и сохранения в PostgreSQL, отправляет письма и считает рейтинг. Всё работает в Docker на VPS в Санкт-Петербурге за Caddy с сертификатом Let's Encrypt.

Что есть в игре

Кампания из десяти актов: 144 зоны, 78 этапов с развилками и обязательные боссы, после финала акты можно переигрывать. Три класса, полное дерево пассивок, Лабиринт с восхождениями, крафт орбами и коллекция уникальных предметов. На PvP-арене игрок дерётся с ботом или с живым соперником, пары подбираются по рейтингу Эло, лучшие 50 игроков попадают в таблицу. Знаки за победы тратятся во внутриигровой лавке.

Телефон и аккаунты

Экраны проверены на ширине 390 px. На телефоне перетаскивание вещей заменено кнопками, сумка перестроена под узкий экран. Аккаунт включает регистрацию, подтверждение почты, сброс пароля и несколько персонажей. На экране входа видно, сколько игроков сейчас в сети и сколько всего зарегистрировано.

Как выкладываем

Новая версия уходит в прод одной командой. Скрипт берёт только основную ветку, прогоняет проверку типов и автотесты, сохраняет резервную копию кода, статики и базы, а затем обновляет сервер раньше клиента, чтобы новый клиент не отправил старому серверу сохранение новой версии. Автотесты лежат в 339 файлах и покрывают движок боя, сервер, экраны и симулятор баланса.

Технологии

TypeScriptReact 19Pixi.jsNode.jsPostgreSQLDockerCaddy

Обсудим задачу

Расскажите о проекте — предложим решение и оценку

Посмотрим на задачу, процессы и бюджет и предложим, как её закрыть. Работаем по Fixprice или T&M.

Телефон
+7 (981) 894-98-79
Режим работы
Пн–Пт, 9:00–19:00 МСК

Можно без звонка: укажите email — ответим письменно. Оценка ни к чему не обязывает.