
Pues yo aporto parte de la ayuda sobre este tema del motor que uso:
...
Esta idea está perfecta desde luego, pero la veo más orientada a juegos multijugador estilo COD4, CS, etc. Si la coges por partes para adaptarla a un MMORPG, tienes algo similar a lo que estoy haciendo. Establecer conexión, conectar con el servidor que te va a atender, intercambiar datos de jugadores que ya están jugando, empezar a recibir información del servidor (movimientos, conexiones y desconexiones). Comenta una buena idea que es comprobar la latencia de los jugadores para ajustar el envío de información, algo así tendré que introducir más adelante.
Un par de consejos para evitar el lag:
[color=blue]- Never insert a SLEEP command ...
¡Muy buenas ideas!, lo único que añadiría sería que al controlar alguno de estos elementos, también hay que tener cuidado de si esto influirá en la fluidez del juego. Perder en lag, pero ganar en tiempo de procesamiento tampoco compensa.., hay que alcanzar una relación óptima.
Consejos para mejorar la integridad:
[i][color=darkblue]...
Nada que objetar. Igual que controlar el lag de los jugadores, estas ideas son algo que también tendré que introducir, ¡gracias por la información!.
Un ejemplo de una traza enviada
[code:1]packet$=playername$+"*"+str$(camera position x())+"*"+str$(camera position y())+"*"+str$(camera position z())+"*"+str$(camera angle x())+"*"+str$(camera angle y())+"*"+str$(camera angle z())+"*"+speed$+"*"+fireweapon$+"*"+ping$[/code]
Este codigo seria en Darkbasic. El comando str$ convierte a texto, las otras funciones son bastante explicitas en su nombre ^^
Si se usa ese modelo de traza, aqui tienes lo que se enviaria:
"Bill10424*543.1122*58.2311*801.8790*44.3250*172.0093*94.2210*15*0*2480"
En esos paquetes creo que hay información que en mi caso se puede ahorrar. Al trabajar con hilos y en TCP, los paquetes de un jugador sólo los recibe el hilo que atiende a ese jugador, y teniendo instancias que guardan la información del jugador me puedo ahorrar el mandar continuamente el nombre del jugador, la velocidad y el arma seleccionada. En cuanto a la posición del jugador ya lo estoy enviando; y el ángulo, en cuanto lo introduzca también tendré que mandarlo.
Pero vamos, la traza está perfecta por ejemplo si en el servidor sólo hay un hilo que reciba paquetes, y le pongo un 10 si la recepción es por UDP
Espero que todo esto te sirva de ayuda
¡¡Desde luego ElloLo17!!, muchas gracias. Toda la información me viene genial porque siempre hay cosas que se me acaban pasando...
Un saludo!.