При разработке сетевой многопользовательской игры, в которой один игрок размещается, а другие соединяются, я знаю две стратегии:
- Пусть игра хост-игрока будет авторитетом , а все остальные игроки, как тупые клиенты, будут пытаться догнать текущее игровое состояние. В коде должно быть много особых случаев, в зависимости от того, является ли текущий игрок хостом или нет.
- Сделайте хост тупым клиентом, как и все остальные, запустив скрытый выделенный сервер в другом потоке. Выделенный сервер будет полномочным, и хост подключится к нему, как и все остальные (через localhost).
Каковы преимущества / недостатки каждого из них? Что используется чаще всего (или зависит от типа / размера игры)?