Сейчас в свободное время я подрабатываю и параллельно разрабатываю свою Practice-сборку. Два месяца назад я выпустил этот эксперимент, и теперь на его основе решил переработать архитектуру проекта.
Главная идея, это полностью разделить UI/UX и игровой сервер.
Сайт отвечает за взаимодействие с игроком (кейсы, подбор противников, система друзей и т.д, а ля Faceit/FastCup), а Minecraft-сервер исключительно за геймплей.
Как это работает?
Игрок заходит на сайт и нажимает кнопку подбора матча. После нахождения игры начинается этап банов: игроки по очереди исключают режимы, пока не останется один. Выбранный режим и состав игроков сохраняются в Redis, после чего сайт предлагает им зайти на сервер.
При входе сервер уже знает, кто это и куда их отправить, игроки автоматически попадают на нужный подсервер и арену. Далее начинается матч: сервер передаёт бэкенду информацию о состоянии игры, результатах и других событиях. (Короче говоря, бэкенд единственный источник истины)