Bueno, primero te quiero explicar masomenos por que es lento. Supongamos que enviar datos cliente>servidor y servidor>cliente tarda 200 milisegundos. Las cargas "lentas" pasan generalmente cuando te moves a un lugar lejos de donde estabas, como por ejemplo con setPlayerPos.
* Pones "/salir". El cliente manda el mensaje "/salir" al servidor.
* 200 ms despuйs, el servidor recibe ese mensaje, y lo que hace es mandar el mensaje del SetPlayerPos(x, y, z) al cliente, para sacarlo del lugar.
* 200 ms despuйs, el mensaje llega al cliente, entonces lo procesa y le cambia la posiciуn.
* Automaticamente, el cliente manda una Update con los nuevos datos de su posiciуn al servidor.
* 200 ms despuйs, el servidor la recibe. Ahora, GetPlayerPos devuelve la nueva posiciуn. El streamer detecta eso y dice: Ok. Borremosle los objetos que estan lejos, y le creemos los nuevos. Le manda un mensaje con los CreateObject y DestroyObject al cliente.
* 200 ms despuйs el jugador lo recibe, y finalmente tiene su mapita cargado.
Ahora sumemos el tiempo: da 800 ms. Vos, en tu pantalla, te carga un segundo en cargar el mapa.
Diferente es con los CreateObject que estбn siempre cargados en el cliente, pero eso ya lo sabes.
Soluciуn? Si, avisarle por adelantado que cargue el mapa al mismo tiempo que te manda la posiciуn, usando Streamer_UpdateEx(playerid, x, y, z); x y z son las cordenadas para actualizar al jugador (o sea, la nueva posiciуn)
Creamos una funciуn para cambiar posiciуn y actualizar:
pawn Код:
stock SetPlayerPosAndUpdateStreamer(playerid, Float:x, Float:y, Float:z) {
SetPlayerPos(playerid, x, y, z);
Streamer_UpdateEx(playerid, x, y, z);
}
Ahora, usamos esa funciуn en los comandos como por ejemplo "/salir" o "/entrar" para acelerar el proceso. Apenas llegues al lugar, el mapa ya va a estar cargado directamente
Si volvemos a analizar lo que tarda, es asн:
*el cliente escribe /salir y se lo manda al server
*200 ms despues el server lo recibe, y le manda un mensaje con el SetPlayerPos y ademas le crea instantaneamente todos los objetos.
*200 ms despues, el cliente lo recibe y ya esta en su nueva posiciуn y con su mapita cargado
Ahora, el proceso tarda 400 ms en vez de 800 ms: La mitad. Mejoraste la velocidad un 50%