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 !!!
Suscribirse a:
Enviar comentarios (Atom)
3 comentarios:
¿Como interpolas las matrices? ¿Has utilizado quaternions, no?
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/
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 .
Publicar un comentario