Обновить
8K+
1
Команда Зархолда@Zarhold

Разработчики браузерной MMORPG

2
Рейтинг
1
Подписчики
Отправить сообщение

«Хроники сражений»: как мы сохраняем каждый бой браузерной MMO в PostgreSQL и Cloudflare R2

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели7.6K

Мы — небольшая команда, делаем Зархолд: карточную MMORPG в браузере. Каждый бой в ней — пошаговая дуэль колодами, а режимов много: дуэли, арена от 1×1 до 5×5, поле боя 5×5, подземелья на троих, рейды и мировые боссы на пятерых, бои в открытом мире. Сервер — TypeScript, Fastify и node-postgres, база — PostgreSQL за pgBouncer, файлы — Cloudflare R2.

До «Хроник» у каждого режима был свой итог в своей таблице — шесть разных мест. Нам захотелось одного открытого архива всех боёв: отчёт любого боя с числами по ходам, картам и целям, топы по каждому боссу с оценкой от 0 до 100, доля побед по классам и веткам талантов в PvP. Смотреть может кто угодно, без входа (золото, почта, учётки и адреса не отдаются никогда). Так появились «Хроники сражений». Расскажу, как они устроены и какие места оказались неочевидными.

Читать далее

Карточный бой, который сервер может переиграть: детерминированный движок браузерной MMO на TypeScript

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели6.7K

Мы делаем «Зархолд» — браузерную MMORPG, в которой любой бой, от первого кобольда до рейдового босса, — это пошаговая карточная дуэль. Клиент написан на React и PixiJS 8, сервер — на Fastify и PostgreSQL, а между ними лежит пакет shared с движком боя на TypeScript. Один и тот же код движка работает в браузере игрока и на сервере.

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

Читать далее

Информация

В рейтинге
1 466-й
Зарегистрирован
Активность