2011-06-18 10 views
6

Estoy trabajando en un pequeño juego en red (solo LAN) con una computadora que actúa como servidor y todas las demás (incluido el juego real que se ejecuta en la misma computadora) actuando como clientela. Esencialmente, el servidor es transparente para los usuarios, pero existe para simplificar la administración del estado para mí. El concepto básico que tengo ahora es que la computadora de cada jugador dirá: "Oye, me gustaría jugar" a través de la transmisión y mantendrá una lista de los otros jugadores en la red. Después de que cada jugador que ejecuta el juego indique que están listos, se elige una computadora como servidor y el resto de forma predeterminada para los clientes.Elegir una computadora en una LAN para actuar como servidor

Al elegir qué computadora en la LAN usar como servidor, ¿hay realmente alguna manera establecida de elegir una e informar a las demás?

He estado jugando con la idea básica de simplemente tener todas las computadoras de los jugadores elegir un número aleatorio y tener el que tiene el más bajo (o más alto, no importa) ser el servidor (regeneración de números aleatorios para computadoras que rodar el mismo). Cada computadora recibiría el número "rodado" de las otras y podría determinar cuál sería el servidor, luego de lo cual podría conectarse. Parece crudo, pero no estoy seguro de si importa, ya que todas las computadoras estarían físicamente en la misma red a unos pocos pies de distancia. ¿Esto haría bien el trabajo o hay una manera significativamente mejor?

+5

Este concepto se conoce como [elección de liderazgo] (http://en.wikipedia.org/wiki/Leader_election) en informática distribuida. – chrisaycock

+1

@chrisaycock Concepto muy interesante, gracias por señalarlo. Usar eso como punto de partida ya dio como resultado algunos documentos muy útiles y otros recursos. – Gemini14

Respuesta

5

Para ser sincero, tomaría la decisión un poco más complicada que eso. Me inclinaría a recopilar información básica para determinar qué computadora tiene más poder y elegir que sea el servidor (el poder es intencionalmente un término vago porque la computadora más poderosa dependerá de los requisitos del servidor y del servidor) . Si el servidor necesita ejecutar un software adicional (el servidor además del juego), es lógico pensar que, a menos que todas las computadoras tengan las mismas especificaciones, habría una que mejor se adapte a la tarea que las demás. Siempre que todos los nodos ejecuten la misma evaluación en los datos, todos deberían llegar a un consenso sobre quién debería liderar o si podría hacer que el primer nodo que creó el juego sea responsable de determinar qué nodo debe ser el servidor.

También puede valer la pena tener el servidor configurado para reevaluar periódicamente sus calificaciones para ser el servidor. Por ejemplo, podrían comenzar procesos en segundo plano que dificultarían su capacidad de funcionar adecuadamente, o un nodo más poderoso podría unirse al juego. Obviamente, cambiar el servidor del juego no sería trivial, pero es algo en lo que pensar. (Tenga en cuenta que esto sucede en los juegos en línea, es decir, Halo. Cuando la conectividad de todos los clientes al servidor cae por debajo de un cierto umbral, el juego se pausa y se restablece en un servidor diferente que puede proporcionar un mejor rendimiento).

Cuestiones relacionadas