Создание мультиплеерной игры c сервером на Asp.Net Core + SignalR

Разрабатываю онлайн игру в которой 8 игроков объединяются в отдельные комнаты.

Идея в том, что игроку дается определенное время на совершенние каких-либо действий, доступных ему в определенной фазе игры. Фазы меняются спустя некоторое время либо при совершении игроком действий. После прохождения всех фаз ход переходит другому игроку и все фазы повторяются.

Клиент с помощью signalR вызывает единственный метод на хабе, который принимает имя ивента и параметры этого ивента, который необходимо обработать на сервере. С помощью рефлексии создается объект хендлера, соответствующего ивенту, после чего вызывается метод, обрабатывающий ивент. Есть идея, все ивенты каждой комнаты объединить в очереди, после чего обрабатывать их отдельно. Исходя из этого наткнулся на мысль, что под каждую команту нужно создавать какой-то бэкграунд сервис либо отдельные мини сервера.

Хотелось бы узнать есть ли какие-то решения, как это организовать, учитывая тот факт, что данные сервисы должны работать параллельно. Также хотелось бы узнать о производительности и целесообразности данного подхода. Также при разработке хотелось бы учитывать:

  1. Скорость обмена сообщениями между игроками и сервером.
  2. Нагрузка на сервер при большом трафике запросов.
  3. Найти оптимальное решение, которое при масштабируемости сервера не повлечет слишком сильных расходов.

Ответы (0 шт):