Foros del Web » Programación para mayores de 30 ;) » C/C++ »

TCP vs UCP

Estas en el tema de TCP vs UCP en el foro de C/C++ en Foros del Web. Bien, no sé si este tema va aquí, pero no encontré una sección más adecuada. Estoy recopilando información para hacer un juego on-line. Utilizaré SDL_Net ...
  #1 (permalink)  
Antiguo 07/01/2008, 05:55
 
Fecha de Ingreso: febrero-2007
Mensajes: 74
Antigüedad: 17 años, 2 meses
Puntos: 1
TCP vs UCP

Bien, no sé si este tema va aquí, pero no encontré una sección más adecuada.

Estoy recopilando información para hacer un juego on-line. Utilizaré SDL_Net para las conexiones. Para empezar, si alguien tiene un buen tutorial de SDL_Net y pudiera poner el link le estaría muy agradecido.

Pero no es esa la duda que me corroe las entrañas (he exagerado un poco, lo sé xD). Me he estado informando sobre los protocolos TCP/UDP.

TCP: Más lento pero más seguro, porque se establece una conexión y autocorrige los posibles errores de pérdida de datos, paquetes duplicados, etc. Pero es más lento.

UDP: Envia mensajes. Si se pierden por el camino, problema tuyo xDD. Pero es más rápido.

Pero no sé hasta que punto existe diferencia en la velocidad, o en la fiabilidad.

Supongamos que tengo un MMOG. Se mandan unos 10 paquetes / segundo (por ejemplo). Con un ADSL de 1MB, ¿Cuántos datos podría mandar con cada protocolo? ¿Cuántos datos podrían llegar "defectuosos" con cada protocolo?

Estoy un poco liado, porque por ejemplo, si se extravían datos con el protocolo UDP, los resultados en el juego podrían ser imprevisibles. Entonces tendría que currarme un sistema para evitar eso. Eso es lo que hace el protocolo TCP, solo que ha sido diseñado por profesionales y supongo que estará MUCHO más optimizado de lo que yo podría soñar hacer. Entonces, quizás el TCP acabe siendo más rápido, después de todo. Claro, que si en el protocolo UDP se extravía un paquete de cada 1000, pues tampoco me merece la pena sacrificar esa velocidad.

Agradecería que alguien me echase un cable con esto.

Gracias por adelantado.

Saludos.
  #2 (permalink)  
Antiguo 08/01/2008, 17:09
Avatar de PC's Troll  
Fecha de Ingreso: junio-2005
Ubicación: Caracas-Venezuela
Mensajes: 55
Antigüedad: 18 años, 11 meses
Puntos: 0
Sonrisa Re: TCP vs UCP

Saludos...

Con respecto a la pregunta de protocolos, no conozco mucho sobre lo que se maneje actualmente el mercado puesto que no soy un desarrollador de videojuegos todavía (es mi meta, sí. Pero por desgracia en mi país no se da esa carrera).

Volviendo al tema, ciertamente TCP es orientado conexión y UDP no. En lo particular, buscaría recopilar más información acerca de cómo trabajar el protocolo TCP y en cuanto a fiabilidad... no hay nada que hablar; TCP.

Por otro lado, recuerda que la velocidad no lo es todo, y que al utilizar UDP es probable que el usuario deba habilitar el puerto por el cual está entrando y saliendo información. Cosa que no muchos usuarios que tengan un conocimiento decentongo de puertos y firewalls estan dispuestos a hacer. Cabe recordar que los queridos "crackers" siempre andan al acecho y más de un gamer ya habrá pasado sus malos ratos por contratiempos con estos estudiosos (hay que aceptar que lo son) pero desagradables seres.

En cuanto a los juegos on-line, justamente por este detalle del retrazo o pérdida de paquetes de datos, velocidad de conexión, etc; en el desarrollo de videojuegos existen algoritmos avanzados llamados algoritmos de predicción los cuales justamente están diseñados para dar la sensación de suavidad y buena jugabilidad aun cuando existe retrazo o pérdida de paquetes de datos.

Ya por último, te dejo unos enlaces de interés ya que Microsoft en conjunto con otras compañías han lanzado un par de APIs para la creación de videojuegos para entusiastas que quizás te pueda ayudar bastante porque justamente se menciona el tema de multijugadores on-line. Espero no te moleste leer en inglés.

XNA Game Studio Cabe destacar que al final de la página se habal del tema que te interesa, sin embargo te invito a que revises el site completamente.

DarkGDK

Cabe destacar que, hasta donde he leído, el XNA está orientado a ser trabajado en ambiente con C# (orientado a la realización de juegos para Windows y Xbox 360) y el DarkGDK para trabajarlo en ambiente C++. Y según se corre la voz de que si el juego es buenazo, lo puedes poner a la venta en Xbox Live (no hay excusas para no entrar de algún modo u otro en la industria).

Espero que mi respuesta, si bien no ayudó mucho con lo de los protocolos, te haya servido de ayuda y guía para facilitar tu entrada al mundillo.


PD: Como recomendación, te invito a que leas este artículo
  #3 (permalink)  
Antiguo 09/01/2008, 15:36
 
Fecha de Ingreso: febrero-2007
Mensajes: 74
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: TCP vs UCP

Bueno, creo que definitivamente me decanto por el TCP. Las conexiones ADSL son cada vez más rápidas, y prefiero buscarme la vida para "minimizar" lo más posible todos los datos que necesito enviar, antes que tener que currarme un algoritmo de predicción y obligar a los posibles jugadores a dejar su PC al descubierto.

Muchas gracias por esos links, aunque no voy a utilizar esos motores porque están basados en DirectX y yo voy a utilizar OpenGL+SDL. Estoy trabajando en Linux, y si programo en DirectX ni siquiera podré probar fácilmente mi propio juego.

En cuanto al artículo, desde luego eso pensaba hacer, no voy a ponerme a hacer un MMORPG on-line así, por las buenas. Acabo de terminar un BreakOut en SDL, tal vez lo convierta en 3D para practicar con OpenGL, tal vez más tarde lo convierta en on-line (como un Pong) para practicat con SDL_Net y envio de paquetes TCP. Y así voy adquiriendo conocimientos para llegar a hacer un juego en 3D.

Gracias por todo.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:43.