Network with Letters

Hace poco, John Knottenbelt uno de los directores de mi querida Introversion, responsable de los ports a Linux y Mac de sus juegos, realizó un interesante artículo en el que exponía los problemas y soluciones que encontraron al diseñar su arquitectura de cliente-servidor y el ciclo de juego de Multiwinia.

Siempre es interesante observar las vicisitudes y soluciones que puede encontrar un desarrollador en su trabajo. Resumiéndolo mucho, los principales problemas eran el coste de ancho de banda, y el tiempo de proceso de datos.

El envío de datos procesados en la máquina cliente al servidor podía ser demasiado costoso, de modo que en vez de procesar eventos en el cliente y enviar los datos al servidor para que sean distribuidos, los datos de entrada/eventos fueron enviados directamente al servidor, que procesaba los eventos para enviarlos a todos los clientes.

MainGameLoop()
{
while(!GameOver()) {
ProcessInput(); /*Recoge los datos de entrada y los envía al Servidor
ProcessEvents(); /*Procesa los datos que recibe del servidor
Render(); /*Muestra los cambios en el entorno
}
}

Imagino que para aquellos familiarizados con la programación cliente-servidor no debe ser algo nuevo, pero, más allá de las clases de la universidad no había visto nada similar, y menos aun orientado al desarrollo de juegos.

Otro punto interesante son los inconvenientes, que los tiene. Este sistema necesita recuperar todos los eventos desde el inicio del juego, para poder recrear un mapa y sus unidades, por ejemplo, cuando un nuevo jugador entra.

Es interesante, así que posiblemente le acabé echando un ojo a un libro sobre RTS, tanto diseño como programación, que ha caído en mis manos hace poco.

En cierto modo me recuerda a las viejas partidas de ajedrez por e-mail/carta. Aunque se aproxima de un modo más exacto a una partida de rol tradicional, donde el narrador(servidor), recoge las interacciones de los jugadores (clientes), para servir los cambios del entorno y la resolución de situaciones, que son enviadas de vuelta a los jugadores para que vuelvan a decidir. Curioso. Las ideas más simples son las más potentes 😉

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.