Добавлен Alexander80
Есть клиент-сервер для unity3d
Когда игрок создавший сервер выходит из игры то сервер отключается.
Можно ли сделать так чтобы сервер передавался другому игроку , то есть тот игрок который создал сервер выходит - но сервер не выключается , а переходит к другому игроку , то есть на его компе держится сервер .
И так пока не выдут все игроки
Когда игрок создавший сервер выходит из игры то сервер отключается.
Можно ли сделать так чтобы сервер передавался другому игроку , то есть тот игрок который создал сервер выходит - но сервер не выключается , а переходит к другому игроку , то есть на его компе держится сервер .
И так пока не выдут все игроки
Принятый ответ
Можно использовать P2P соединение, когда нет какого-то конкретного сервера, все игроки общаются друг с другом. Однако это достаточно сложно для реализации.
Проблемой может стать внезапная потеря соединения с сервером, поэтому это не лучшая идея. Лучше реализовать такую схему:Хост выходит - остальным игрокам отправляются пакеты с запросами на смену хоста с ip-адресом следующего игрока в таблице игроков (он станет следующим хостом). Этот запрос посылается через TCP-IP, чтобы не растерять пакеты по дороге.
- Каждому подключенному игроку отправляется IP адрес по которому он может потом подключиться в случае каких-то проблем.
- После получения такого адреса клиент проверяет доступность заданного узла с помощью пары запросов. Если адрес будет не доступен, то он должен будет сообщить серверу, что такой адрес не возможно использовать, тогда и другие клиенты должны отклонить этот адрес.
- При этом список этих адресов должен быть строго упорядочен и синхронизирован
- В случае разрыва соединения все игроки подключаются по первому адресу.
Так можно добиться надежности
0
Uber
8 лет назад
0
Не знаю, как там в юнити, но я делал по такой схеме:
- Хост выходит - остальным игрокам отправляются пакеты с запросами на смену хоста с ip-адресом следующего игрока в таблице игроков (он станет следующим хостом). Этот запрос посылается через TCP-IP, чтобы не растерять пакеты по дороге.
- Игроки принимают ip-адрес. Если адрес игрока совпадает с пришедшим адресом, он создаёт новое подключение (или сервер, как угодно).
- Остальные игроки, когда им приходит запрос на смену хоста, включают задержку (обычно, до нескольких секунд, зависит от типа игры. К этому времени новый хост уже должен создать сервер), после чего начинают попытки подключения к новому ip-адресу.
- В общем, вот и вся схема, но у меня она работала на ура. Если сделать всё правильно - задержка при смене хоста будет практически незаметна.
0
alexprey
8 лет назад
0
Можно использовать P2P соединение, когда нет какого-то конкретного сервера, все игроки общаются друг с другом. Однако это достаточно сложно для реализации.
Проблемой может стать внезапная потеря соединения с сервером, поэтому это не лучшая идея. Лучше реализовать такую схему:- Каждому подключенному игроку отправляется IP адрес по которому он может потом подключиться в случае каких-то проблем.
- После получения такого адреса клиент проверяет доступность заданного узла с помощью пары запросов. Если адрес будет не доступен, то он должен будет сообщить серверу, что такой адрес не возможно использовать, тогда и другие клиенты должны отклонить этот адрес.
- При этом список этих адресов должен быть строго упорядочен и синхронизирован
- В случае разрыва соединения все игроки подключаются по первому адресу.
Так можно добиться надежности
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.