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

Habr ·

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

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

Источник: Habr