Inspiración - Concepto personajes

Lo cierto que el tipo de personajes que quiero incluir en project caelum son personajes con mucha habilidad de movimiento, y con la capacidad de volar en algunos casos.

He encontrado en la página de deviantart algunos dibujos que recogen la idea de lo que quiero.

Project Caelum: problemas con la arquitectura de red

 Hasta ahora la arquitectura de red que me he planteado es muy simple, una arquitectura cliente-servidor utilizando la librería de red ENet (parte del motor libre "Cube" y "Cube 2") pudiendo verse en marcha en el videojuego Sauerbraten.


Mi decisión principal ha sido separar el motor de físicas al lado del servidor lo cual me evita el engorro de sincronizar el motor de física de todos los clientes, para pasar a sincronizar unicamente las posiciones/orientaciones calculadas por el servidor.

Pero hagamos unos calculos para comprobar la viabilidad del sistema. Vamos a centrarnos en la subida del servidor que es donde se centra el cuello de botella del tráfico del juego.


Supongamos una conexión normal/baja de hoy día que soporte 512Kbps de subida. A este servidor se conectarán hasta digamos 16 personas.
512 Kbps * 1024 / 8 = 65.536 Bytes por segundo.
65.536 Bps / 16 clientes = 4096 Bps / persona


Tenemos 4KB de información para enviar a cada cliente por segundo, en esos 4KB debemos incluir toda la información de los demás clientes y la suya incluida, y deberemos mandar un número constante de reportes cada segundo, digamos 30.
4096 Bps / 16 clientes / 30 reportes = 8,5 Bps en cada paquete de datos.


Una posición x,y,z son 3 float y una orientación puede medirse como mínimo con 3 variables (la direccion de la normal), con lo cual minimo en esos reportes necesitamos enviar 6 float, que como minimo pueden ocupar 2 bytes cada uno. 6 float * 2 Bytes = 12 Bytes necesarios como mínimo.


Mi conclusión es o que en algo me estoy equivocando en los cálculos o sincronizar los clientes a tiempo real cada frame no es la solución.

De momento solo se me ocurre que en vez de sincronizar continuamente la posición/orientación etc, solo se sincronicen eventos entre los clientes, pero eso implica que las físicas esten en todos los clientes y sean deterministas, para que no se ejecuten diferente en ningún cliente.

Project Caelum: GUI y NET

GUI

Bueno, hace mucho que no cuento nada por aquí. La verdad es que no hay mucho que decir, he añadido el interfaz de usuario del menú principal. Ahí dejo un screenshot.


NET

También he tocado un poco el tema de red y los tipos de conexión necesarios, que se ejecutará en el servidor y el cliente etc. pero aún estoy en pruebas.
De momento estoy con la parte "fácil": hacer el chat. La interfaz ya está hecha y la parte de red casi terminada también, hice un test con un chat de consola y funcionaba perfecto, ahora solo añadirlo al proyecto.

La parte importante la que lleva el juego, sigo en dudas ya que las físicas del juego en red me plantean muchos interrogantes.

Problema: si las físicas deben ejecutarse en cada cliente y sincronizarse por el servidor o solo ejecutarse en el servidor. En el primer caso las físicas deben ser deterministas, es decir, los factores aleatorios no pueden alterar la ejecución. 


Solución ideal: Creo que la opción ideal consiste en ejecutar principalmente las físicas en el servidor y las físicas de cada personaje en el cliente de modo que la conexión no impida a un cliente su movimiento fluido. Sin embargo intentar ejecutar las físicas "por cachos" me parece un locura ahora mismo.


Solución escogida: Las físicas se ejecutarán en el servidor y los clientes se sincronizaran con el servidor central.

Inspiración - Malicious PS3

Simplemente he visto este video y me ha parecido increible el gameplay y el acabado que le dan, pero sobre todo el movimiento del personaje principal es alucinante.

Personalmente no lo he probado aunque no será por falta de ganas, aún así supongo que lo unico que no será muy innovador es el sistema de combos, que parece bastante similar a los actuales (resumiendo, estilo DMC)

Eso sí, los diseños me parece una absoluta pasada, y lo dicho, la libertad de movimiento también.
^^