¿Debería el anfitrión del juego ser la autoridad u otro cliente tonto?

15

Al diseñar un juego multijugador en red donde un jugador aloja y otros se conectan, hay dos estrategias que conozco:

  • Haga que el juego del jugador anfitrión sea la autoridad , con todos los demás jugadores como clientes tontos tratando de ponerse al día con el estado actual del juego. En el código, tendrá que haber muchos casos especiales, dependiendo de si el jugador actual es el anfitrión o no.
  • Haga que el host sea un cliente tonto como todos los demás ejecutando un servidor dedicado oculto en otro hilo. El servidor dedicado será la autoridad, y el host se conectará a él como todos los demás (a través de localhost).

¿Cuáles son las ventajas / desventajas de cada uno de estos? ¿Cuál se usa con más frecuencia (o varía según el tipo / tamaño del juego)?

BlueRaja - Danny Pflughoeft
fuente
El primer caso que está describiendo puede ser una forma de red P2P (con un cliente autorizado) y suele ser mucho más complejo y más difícil de implementar y mantener.
akaltar

Respuestas:

13

El enfoque de cliente tonto es mejor desde un punto de vista de diseño puro: limita en gran medida la cantidad de código diferente que necesita entre el host y los clientes, y permite que el servidor se ejecute de forma asincrónica. La desventaja es que la máquina del host requiere recursos adicionales, pero supongo que siempre lo hizo.

DeadMG
fuente
8

Entre estas dos opciones, el enfoque de cliente tonto es ciertamente mejor por las razones que menciona DeadMG.

Hay otra opción que hace que cada cliente sea una autoridad, tiene la ventaja del cliente tonto de que todos los pares comparten el mismo código. La otra ventaja es que podría ser mucho más justo si establece las reglas correctas porque nadie tiene la ventaja de 0-lag-to-server.

Por supuesto, esto puede ser bastante complicado de implementar dependiendo del tipo de juego. Su protocolo tendrá que lidiar con la resolución de conflictos entre pares, probablemente utilizando algún tipo de esquema de propiedad. Dejando solo los conflictos donde 2 pares reclaman la propiedad del mismo objeto del juego.

Buscar en Google los protocolos multijugador Peer-2-Peer podría darle más detalles sobre este enfoque.

Tinco
fuente
1
gamedev.stackexchange.com/questions/3887/… Aquí hay más información :)
michael.bartnett
Interesante. Esa publicación afirma que así es como "la mayoría de los títulos de estrategia" implementan redes. ¿Es esto realmente cierto? ¿Es así como, por ejemplo? ¿Mando y conquista y trabajo de Starcraft ?
BlueRaja - Danny Pflughoeft
@BlueRaja, así es como funciona Starcraft, sí. En Starcraft no hay autoridad en absoluto. Warcraft III y Starcraft II tienen un modelo de intercambio de mensajes más centralizado, retraso y manejo de desconexión, pero fundamentalmente el mismo en que cada cliente aloja su propio estado de juego.
Rotsor
La otra ventaja de este modelo de red es que permite admitir un gran estado mundial compartido consistente con un tráfico de sincronización mínimo.
Rotsor
La mayor desventaja de este modelo es su vulnerabilidad inherente al "maphacking", que revela algunos datos del estado del juego que el jugador normalmente no puede ver.
Rotsor