Es posible que no necesite mensajería confiable para todos los tipos de mensajes. Por ejemplo, si envía repetidamente el estado de cosas como jugadores, y algunos paquetes se pierden, puede que ni siquiera importe.
Existen bibliotecas basadas en UDP de alto rendimiento que admiten Java. Uno de estos es el LBM de 29West. No es más barato porque es muy difícil hacerlo bien. Incluso con un producto profesional puede necesitar una red dedicada para UDP para minimizar la pérdida.
Para fines de un juego, le sugiero que utilice un servicio JMS como ActiveMQ que se ejecuta donde quiera que pueda ejecutar Java. Debería poder enviar mensajes de 10K por segundo con una latencia de unos pocos milisegundos.
Cuando la gente dice que algo debe ser lo más rápido posible, esto puede significar casi cualquier cosa. Para algunas personas, esto significa 10 ms, 1 ms, 100 us, 10 us, 1 us es aceptable. Algunos enrutadores de red admiten pasar paquetes con una latencia de 600 ns. Cuanto menor es la latencia, mayor es el costo y mayor es el impacto en el diseño. Asumir que necesita más velocidad de la que necesita puede afectar el diseño y el costo innecesariamente.
Tienes que ser realista ya que tienes una interfaz humana. Un humano no puede responder más rápido que aproximadamente 1/20 de segundo o aproximadamente 50 ms. Si mantienes el mensaje a menos de 5 ms, un ser humano no podrá notar la diferencia.
Primero defina "UDP confiable". –
¿La sobrecarga de TCP es demasiado mala para su aplicación? – amit
@krio afaik TCP está construido sobre IP no UDP. UDP, sin embargo, también se construye encima de IP –