Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Owner94 en Noviembre 06, 2010, 10:50:10 PM

Título: Importancia y uso del while en el engine online. 39DLL
Publicado por: Owner94 en Noviembre 06, 2010, 10:50:10 PM
Engine de online de eduardo960 en el cual me bas?.
Bueno, la duda era sobre el uso del while en el objeto que hac?a de cliente, ya que no termino de encajar cual ser?a la funci?n del while(1){...} ah?, ya que en numeros?simas ocasiones acaba concluyendo con un cuelgue del juego, propio de la funci?n while, y ahora que estaba haciendo el sistema para 4 jugadores, me salta SIEMPRE el cuelgue, y ahora estoy bastante desesperado, por que en teor?a todos los scripts que program? funcionaban correctamente, pero al juntarlos ah? con el while colgaban siempre que se conectaban.
Adem?s tampoco entiendo porqu? si suprimo el while para que funcione el juego, ?ste va con much?simo lag y al ponerlo se elimina ese lag, estoy muy confuso, si pudiesen echarme una mano aunque fuese por encima para aclararme un poco, les estar?a inmensamente agradecido.
Título: Re: Importancia y uso del while en el engine online. 39DLL
Publicado por: Texic en Noviembre 06, 2010, 11:56:17 PM
El while es para recibir todos los datos que hayan enviado otros jugadores, sino recibirias solo 1 paquete por step. en cuanto a q se te trabe, depende de c?mo hiciste el sistema para enviar y recibir los datos. Habr?a q ver
Título: Re: Importancia y uso del while en el engine online. 39DLL
Publicado por: Owner94 en Noviembre 07, 2010, 12:01:57 AM
El sistema seria mas o menos como esta ahora, solo que repitiendose para los dem?s jugadores, lo que pasa, es que porqu? el 1 osea entiendo que diga, mientras sea verdadero while(1), pero a la practica eso como se traduce, a que se refiere con mientras sea verdadero? ?se podrian a?adir mas condiciones al while con un and?

Gracias :)
Título: Re: Importancia y uso del while en el engine online. 39DLL
Publicado por: eduardo960 en Noviembre 07, 2010, 04:45:49 AM
En mi ejemplo de la secci?n descargas el while tiene la funci?n de recoger datos m?s de una vez en un mismo step, while(1) es una ejecuci?n infinita del bloque de c?digo dentro, a menos que se cancele su ejecuci?n usando break, al usar receivemessage() se devuelve el n?mero de bytes recibidos, cuando el n?mero de bytes es menor a 0 significa que no hay datos nuevos, as? que se usa el break para cancelar la ejecuci?n de todo el while en ese step, la ventaja que ofrece este m?todo no es mucha, un juego puede funcionar perfectamente sin el.

En cuanto a lo de lag, hay que tomar en cuenta algunas cosas extra cuando se desea ampliar un juego online a m?s de 2 jugadores, recuerda que antes de recibir nuevos datos de otro socket se debe limpiar el buffer usando clearbuffer(), si no se hace se produce el efecto que mencionas.

Mi ejemplo ya esta viejo y debe ser actualizado, vengo diciendo esto m?s de a?o y no he hecho nada :-[, alg?n d?a estar? listo... XD

Saludos :)