Например: мы отправили команду идти вверх на websocket, он передал в игровой сервер, в очередном кадре игрового сервера последний проверил можно ли нам пройти в указанную клетку (с кем мы столкнёмся, будем ли ранены из-за этого и т.п.), после чего добавит в пакет на передачу обратно в websocket новые координаты нашего героя и в конце кадра (цикла) сервера одной командой отправит все назад в websocket (в этот момент игровой сервер блокируется, но как я писал выше это 1.600.000 пакетов в секунду, да и на это время уменьшится время паузы между кадрами сервера - в настоящий момент я экспериментирую на 1000 кадров сервера в секунду, аналог 1000 FPS и Fixed Update в Unity), а websocket сервер разошлет всем игрокам данные не блокируя игровой сервер (сам он может иметь несколько worker процессов наподобие того как их имеют веб сервера Apache, Nginx, Swoole и т.п. что бы была возможность принимать и отправлять еще больше пакетов от игроков, однако все эти worker должны иметь "подписку" на данные что рассылает игровой сервер).
Комментарий недоступен
Комментарий недоступен
Если переложить на этот проект то выходит следующее (поправьте если не прав):
Producer 1,2,3 - это игровые клиенты
Event manager - это websocket сервер куда поступают команды игроков (Event A,B,C)
Broker - это экземпляры websocket сервера (workers процессы которые принимают пакеты и соединения из "кучи" параллельно)
Consumer - это выходит игровой сервер что физику считает ? Но на одну локацию он один (он крутится в бесконечном цикле обрабатывая всех на локиции и npc в том числе). Их может быть много, но каждый идет со своим Event Manager (websocket сервером) на который он подписан . Правда есть одна оговорка - у меня бесшовный мир и другой Consumer может быть подписчиком и своего Event Manager и другого (в игре я просто вижу что происзодит на соседней локации и переходя переключаюсь на другой игровой сервер)
Полагаю если я все верно переложил у меня как на рисунке только Consumer 1 всегда подписан на все Event и отправляет результат вычислений назад и все Producer его получают
написал статью на этот счет https://dtf.ru/gamedev/1889852-sozdanie-servera-dlya-onlayn-mmo-igr-na-php-ch-13-event-driven-pattern-json-rpc-i-pochemu-ne-servisnaya-soa-arhitektura
Полезные статьи пишешь, спасибо. Инфы действительно мало об этом
Спасибо. По итогам будет рабочая mmo rpg в 2д на пк, мобилтники и браузеры.
С прокачкой, инвентарем, нейросетью и тд. Все о чем пишу - реализовывается в ней.