Hoy he seguido con el tema del multiplayer:
He 'arreglado' lo de ayer, ahora las pantallas se mueven de una manera completamente independiente. Para ello he utilizado medio byte que tenia libre de los 9 que se utilizan para pasar la informacion de cada objeto a dibujar: me manda una 'id de jugador' que el cliente usa para identificar si la nave que esta dibujando es la correspondiente al jugador que esta usando ese cliente. Todos los enemigos tinen ID_CLIENT=15, de modo que solo podran jugar, por ahora, 14 jugadores simultaneamente (aunque es facilmente ampliable). Si la imagen corresponde al jugador del cliente adecua las coordenadas de la pantalla del clieente sobre el 'mundo'. Se me ocurre que esto no es demasiado complicado de ampliar a que 2 jugadores puedan usar el mismo cliente (una pantalla, 2 naves ligadas como ayer, 2 personas jugado con el mismo teclado, se me ocurre que bastaria con compartir ID_CLIENT) pero por ahora no es la idea...
Ademas he cambiado un poco el codigo: he metido bastante mierda con esto de el online y el multiplayer y he limpiado un poco. He hecho un metodo 'syncronizing' en cliente y otro en servidor para que hagan todo lo que tengan que hacer antes de empezar la partida (ahora mismo se esperan y el servidor distribuye los 'id de jugador', en el futuro tendrian que hablar sobre el tamaño de la pantalla, pero si al servidor no le importa el tamaño de la pantalla del cliente!!! diria uno, pues si que le importa)
Por ultimo (y por esto le importa) he hecho un analogo a lo que hacia antes de 'dibujar solo lo que esta a la vista del jugador' -me insinuo Gustavo, uno del curro- pero para todos los jugadores y en vez de 'dibujar' ahora solo se serializan los objetos que son visibles por algun jugador... por ahora solo lo he probado con laseres y diciendo, para ver que funciona, que desaparezcan los objetos que esten mas haya de la mitad de la pantalla (en ancho y en largo) a partir de cada jugador, me explico: solo s dibujan los objetos que esten a una distancia menor que ancho_de_pantalla/4 a lo ancho y alto_de_pantalla/4 de algun jugador. Es entre 4 para que a uno y otro lado sumen 1/2 y vea como desaparecen los laseres a una distancia de 1/2 del tamaño de la pantalla de la nave que disparo....
Eso provoca el efecto de la imagen: los laseres dejan de aparecer cuando se alejan 1/2 pantalla del que dispara y aparecen a 1/2 pantalla del que esta arriba (en la pantalla de la izquierda ese espacio que aparece sin laseres). De modo que parece que el 'horizonte' a serializar debera ser las coordenadas de la nave de cada jugador + y - el alto/ancho de la pantalla excepto para naves que sean mas grandes que la pantalla.... ya vere como las trato.... La idea de hacer esto es reducir el tamaño de los paquetes que mando por internet.
Pero bueno, contento.
Ademas he descubierto que otro del curro igual consigo que me eche una manica (ahora se va a londres, cuando vuelva le dire) y ademas estoy haciendo unas pruebas con el android app inventor... no me llama mucho (programar asi es un coñazo) pero bueno, me hare todos los ejemplos que tienen a ver si le cojo el gustillo....

No hay comentarios:
Publicar un comentario