Сервер для Unity 3d
Есть клиент-сервер для unity3d
Когда игрок создавший сервер выходит из игры то сервер отключается.
Можно ли сделать так чтобы сервер передавался другому игроку , то есть тот игрок который создал сервер выходит - но сервер не выключается , а переходит к другому игроку , то есть на его компе держится сервер .
И так пока не выдут все игроки

Без ответа.


Просмотров: 745

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