History
Последовательность сетевого протокола¶
- лаунчер подключается к АМР серверам для авторизации, обновления и генерации уникального номера сессии
- далее устанавливаются переменные окружения для клиента (адреса серверов, логин, сессия и т.п.) и запускается WOLA.exe
- при старте, клиент подключается к WorldServer и ждет разрешения подключаться дальше
- WorldServer проверяет нет ли активного подключения с таким же логином и если есть, выбрасывает старого клиента, разрешая подключаться новому
- далее клиент подключается к ItemServer
- ItemServer запрашивает у AppServer наличие незаконченного боя для этого клиента и если есть, посылает инфу об этом
- в случае если боев нет, посылается инфа о корабле, игроке, арсенале и т.п.
- клиент получает соответствующую инфу от ItemServer и либо подключается напрямую к бою, либо отображает шипярд
- в шипярде в качестве реакции на пункты меню (покупа, продажа, смена корабля и т.п.) к ItemServer посылаются соответствующие запросы и ожидаются ответы
- при входе в бой, клиент посылает запрос на разршение входа в ItemServer
- ItemServer при получении запроса на бой, проверяет все ли в порядке с кораблем игрока и если все ОК разрешает ему вход иначе посылает его назад в шипярд
- клиент, получив одобрение на бой, подключается к tbs (балансер)
- балансер, посылает запрос на информацию о текущем корабле игрока в AppServer
- далее балансер ожидает остальных игроков для создания полной команды
- как только команда будет собрана, посылается запрос к InstanceServer на создание боя с выбранной локацией и списком игроков
- InstanceServer посылает в AppServer запрос на резервацию боя
- после получения ответа, запускается непосредственно BattleServer локально, передавая ему все необходимые параметры
- следом InstanceServer посылает команду на подключение к бою игрока ItemServer'у, который перенаправляет ее уже нужному игроку (т.к. игроки не подключаются к InstanceServer напрямую)
- клиент получает команду на подключение к бою, отключается от ItemServer и балансера и подключается к BattleServer
- в конце боя, BattleServer отсылает собранную статистику в AppServer
- при получении ответа, что статистика получена, BattleServer отсылает команду на обработку статистики в ItemServer
- после того, как все сообщения касательно статистики разосланы, сервер BattleServer закрывается
- при закрытии BattleServer'а, InstanceServer фиксирует этот момент и посылает в AppServer команду о том, что соответствущий BattleServer закрылся (тоже самое будет при зависании BattleServer)
- клиент отключается от боя (с задержкой, заданной в клиенте) и подключается снова к ItemServer
- весь процесс повторяется снова