2009-10-27 12 views
8

Estoy buscando construir juegos en tiempo real construidos usando un servidor Java dedicado y clientes iphone, así como clientes de escritorio Java. ¿Qué bibliotecas de transporte de red de alto rendimiento disponibles que podrían usarse para el desarrollo de juegos multijugador en tiempo real, existen para Java y iPhone (UDP específicamente confiable)? El consejo general para la mayoría de los juegos basados ​​en acción (Counter-Strike, Left4Dead, Quake III) es usar el protocolo de transporte UDP/IP enviando mensajes como paquetes "no confiables" a favor de la entrega "garantizada" de TCP. (debido a problemas con los problemas de reenvío y latencia que no puede controlar fácilmente).Librerías de juegos en tiempo real para juegos en Java y Objective-C

  • Half-Life Source Engine Networking Overview
  • Quake III Networking El otro consejo es construir un protocolo UDP confiable que le permite "opcionalmente" la entrega de gurantee de paquetes UDP (sin dejar de no ser capaz de garantizar el orden de entrega, como un flujo TCP, como se siempre que su juego pueda manejar paquetes desordenados).

Project Darkstar es un servidor Java MMO con fijaciones C++ (un poco a pesada para un tiempo real de peso ligero biblioteca de red para juegos multijugador genéricos).

bibliotecas que he visto escritas en C para UDP confiable: - Enet - biblioteca UDP confiable - Cocoa AsyncSocket

Respuesta

8

Eche un vistazo a Kryo y su biblioteca KryoNet de comunicación asociado.

Está diseñado para este tipo de aplicación (transporte de red de alto rendimiento). No estoy seguro de si todavía hay un enlace de Objective-C, pero incluso si no lo hay, vale la pena echarle un vistazo para ver qué tan bien está diseñado el marco.

4

Como mencionó UDP. Aquí hay una biblioteca java game server (ejem ... ¡escrita por mí!) Que proporciona soporte UDP y TCP. El UDP confiable resulta ser TCP. Puede escribir su propia lógica de ack personalizada sobre UDP, pero en general es mejor usar TCP para las cosas que necesitan llegar al servidor y UDP para todo lo demás.

En jetserver, la misma sesión usa UDP y TCP para comunicarse. Los mensajes de red se pueden enviar con delivery guaranty, Confiable = TCP y FAST = UDP.

-1

"específicamente fiable UDP"

UDP es no fiable por su diseño. Es como enviar correo antiguo (no electrónico). Pones tu carta en el sobre, escribes la dirección, colocas el sello y lo dejas caer al buzón. Es podría ser transferido, pero no puede estar seguro. UDP está diseñado para situaciones donde la velocidad es más importante que la corrección (corrección como en "mi aplicación necesita que todo se transfiera correctamente bits por bits).

Por ejemplo, aplicaciones como videochat de Skype necesitan más ancho de banda y menos latencia, algunas los bits perdidos se pueden arreglar en el nivel de aplicación (por lo que usa UDP). Mientras tanto, el chat basado en texto necesita menos ancho de banda y sobrevive a latencias mucho mayores, pero necesita más corrección (¿cómo se conoce esta cadena: fsdfdsfsd se transfiere correctamente? ¿en qué idioma? etc.), entonces necesita TCP. Y así es como funcionan las cosas en skype

+0

Esta es una respuesta pobre. El interlocutor claramente está pidiendo un ARQ confiable sobre UDP. – sdgfsdh

Cuestiones relacionadas