miércoles, 3 de octubre de 2007

personajes moviendose online . timing

A falta de hacer pruebas serias , parece que los personajes se comunican bien y se mueven de forma fluida .
Un par de cosillas : haciendo envios cada 150-200 ms de la matriz de posicion ( mundo ) de un personaje , consigo que otro jugador online vea sus movimientos de forma totalmente fluida .
Hago 2 cosas :
- los personajes online se mueven 2 segundos despues que tu personaje ( atraso su tiempo para tener un colchón ahí y que si va lento o con errores siga siendo fluido el movimiento ) . Podria reducir este tiempo , pero no creo que haga falta .
- Gracias a esto , puedo ( y es lo que hago , claro ) interpolar las matrices de "mundo" de los personajes y hacer el movimiento fluido a 60fps aunque solo este recibiendo información de movimiento a 6 fps .
Y funciona , va totalmente fluido .
Enviando cada 500 ms tb. va "suave" , pero se notan cosas raras en los cambios de direccion bruscos de los personajes ... pero se puede hacer si lo necesito en algun momento .
Envio mensajes muy ligeros y a 6fps , el gasto de ancho de banda todavia lo tengo muy controlado .

voy mal de tiempo ..... ¡ que no llego ! , jeje

un saludo !!!

3 comentarios:

Zalo dijo...

¿Como interpolas las matrices? ¿Has utilizado quaternions, no?

flipper83 dijo...

ufff cada 200 ms?? me parece una burrada, lo normal en un fps es cada 500ms, se te va a pirar el tráfico, te recomiendo q no envies los mensajes si el player no se mueve, y q hagas cosas como enviarlo cada más tiempo si el tipo está detrás tuya, o lejos, y no enviarlo si el pavo está fuera de campo de visión. porq sino se te puede morir el tráfico.

mirate estós artículos porq son de predicción de movimiento en el cliente y están cojonudisisisismos.
http://www.gaffer.org/game-physics/networked-physics/

platinio dijo...

Jorge , en esos articulos hablan sobre un fps , en el que el server es el que hace los calculos físicos .
Ademas , los clientes hacen prediccion , que no es lo que estoy haciendo yo ( prediccion la hice en el crazy pixie panic por bluetooth , aquí como os dije tengo el tiempo del caracter online atrasado e interpolo entre 2 posiciones buenas , sin error ) .

O sea , es muy muy distinto a lo que estoy haciendo . Por eso os decia que es importante lo de que el diseño del juego ( no es de accion ) me permite simplificar cosas . no tiene nada que ver a hacer un shooter masivo o algo parecido .

cambiar de 200 ms a 500 ms lo hago cambiando el valor de una constante , y funciona bien ( lo he probado ) . No me parece una burrada 200 ms , pero queria decir con este articulo que puedo poner cualquier valor sin problemas , que lo he probado y os comentaba los resultados visuales por si os interesaban .


ten en cuenta que aqui no hay un servidor que tenga que estar procesando cada paso y decidiendo a 6 fps ni nada por el estilo , cada caso es un mundo por sus caracteristicas , es la gracia de esto ...

interpolando las matrices puede haber problemas con las rotaciones , por eso se deben usar los quaterniones . Con el desplazamiento , escalado ... no hay problema por intercalar las matrices . Tambien te digo que he hecho pruebas e intercalando matrices y cuaterniones no encontraba diferencias a 6fps de keyframes . Visualmente no lo noto .