Título: Problema Socket Visual Basic 6.0 Publicado por: mateo2011 en 13 Octubre 2011, 14:52 pm Tengo un juego MMROPG Masivo 2D conocido como Argentum Online.
Utiliza Winsock TCP/IP Y resulta que tras varias pruebas en el ping, los paquetes llegan en tiempos de 20ms a 250ms. Tras profundizar el tema, me di cuenta que al enviar una cantidad constante de paquetes se comienza agrandar el ping y los paquetes tardan 250ms en llegar al destino. Tras varias pruebas vi que si envias 1 paquete cada 50ms y haces que el servidor lo detecte y lo retorne se puede mantener un ping constante de 50-70ms. Pero eso con mas de 50 conneciones me satura todo y me chupa mucho bando de ancha. Y este juego para la buena jugabilidad necesita si o si pings menores a 100. Pense usar UDP y de echo lo hize pero los Winsockets en UDP se me perdian todos los paquetes auque el PING era muy bajo MUY BAJO (9-15ms). Para que me tire ese ping en el protocolo TCP/IP tengo que estar sin actividad de paquetes. Utiliza manejo de datos de forma binaria escribiendo bytes/integers/longs y leyendolos. ¿Alguna idea? Gracias ^^ Título: Re: Problema Socket Visual Basic 6.0 Publicado por: raul338 en 13 Octubre 2011, 15:34 pm Lo unico que te podremos decir es que trates de economizar todo. No envies strings a cada rato, trata de enviarlos una vez y ahi envias identificadores, que sea todo numero :)
Y si dices que el servidor con 50 conexiones te satura el ancho de banda... pues comprate otra conexion, como quieres llamar un server MMO si solo soporta 50 conexiones :xD Título: Re: Problema Socket Visual Basic 6.0 Publicado por: mateo2011 en 13 Octubre 2011, 19:47 pm Por eso mismo... Se aguante 200 usuarios tranquilamente.
Cuando le pongo para enviar 1 paquete cada 50ms de envio y recivo, mejora el PING entre 50-70ms y es muy jugable pero a los 50 usuarios se laguea todo. El host que tengo es bueno, un VPS de 512 de ram, 2 nucleos, y 10mb de conexión simetrica y tira 9ms-16ms con el PING. Lo de optimizar paquetes lo hice al maximo. Pero un usuario en movimiento manda 1 paquete cada 200ms (5 paquetes por segundo) y esa suma se multiplica dependiendo la cantidad de usuarios en pantalla. Título: Re: Problema Socket Visual Basic 6.0 Publicado por: raul338 en 13 Octubre 2011, 22:09 pm No creo que el lag se haga por la conexion (si es que son 10mb simetricos reales... o al menos 7mb)... sino por el procesamiento del server :rolleyes:
Título: Re: Problema Socket Visual Basic 6.0 Publicado por: mateo2011 en 13 Octubre 2011, 22:44 pm No creo que el lag se haga por la conexion (si es que son 10mb simetricos reales... o al menos 7mb)... sino por el procesamiento del server :rolleyes: En localhost funciona a 5 a 0ms tomando el PING con QueryPerfomance. Y ese PING es constante. Probe usando los Sockets en un programa externo y pasaba lo mismo. Para mi es algo de los Winsockets o de Visual Basic. Título: Re: Problema Socket Visual Basic 6.0 Publicado por: raul338 en 13 Octubre 2011, 23:39 pm En localhost funciona a 5 a 0ms tomando el PING con QueryPerfomance. Localhost? :| probas en local? proba en 2 pc con 2 conexiones distintas :PY ese PING es constante. Título: Re: Problema Socket Visual Basic 6.0 Publicado por: mateo2011 en 14 Octubre 2011, 00:41 am Localhost? :| probas en local? proba en 2 pc con 2 conexiones distintas :P Con 2 clientes nada mas no se mandan los suficientes paquetes para laguear. Cuando hay peleas de 2 usuarios anda perfectamente. Pero las peleas normalmente superan los 5 usuarios, entonces al mandar tanta cantidad de paquetes para actualizarles la posicion comienza andar muy mal. |