Ao projetar um jogo multiplayer em rede em que um jogador hospeda e outros se conectam, há duas estratégias que eu conheço:
- Faça com que o jogo do jogador anfitrião seja a autoridade , com todos os outros jogadores como clientes idiotas tentando acompanhar o estado do jogo atual. No código, haverá muitos casos especiais, dependendo se o jogador atual é o host ou não.
- Torne o host um cliente burro, como todo mundo, executando um servidor dedicado oculto em outro thread. O servidor dedicado será a autoridade e o host se conectará a ele como todos os outros (por meio do host local).
Quais são as vantagens / desvantagens de cada uma delas? Qual é o mais usado (ou varia de acordo com o tipo / tamanho do jogo)?