Casi todos los juegos necesitan las propiedades de reacción rápida (y, en menor medida, las propiedades sin conexión) de UDP y la fiabilidad de TCP. Lo que hacen es construir su propio protocolo confiable sobre UDP. Esto les da la capacidad de reventar paquetes donde quiera y, opcionalmente, hacerlos confiables también.
El sistema de paquetes confiable es generalmente un sistema simple de reintento hasta confirmado más simple que TCP, pero hay protocolos que van más allá de lo que TCP puede ofrecer.
Su situación es muy simple. Probablemente podrá hacer la solución más limpia usted mismo, simplemente haga que cada cliente envíe una respuesta "Te escuché" y haz que el servidor siga intentándolo hasta que lo recupere (o se dé por vencido).
Si quieres algo más, la mayoría de las bibliotecas de protocolos personalizadas están en C++, por lo que no estoy seguro de cuánto usarán para ti. Sin embargo, mi conocimiento aquí es de hace unos años, tal vez algunos protocolos ya se hayan transferido. Hmm ... RakNet y enet son dos bibliotecas C/C++ que se me ocurren.
Con respecto a * "que va más allá de lo que TCP puede ofrecer" *, ¿cómo es posible, ya que TCP está específicamente diseñado para abordar la entrega confiable? ¿Hay algo que TCP carece en un sistema de paquetes confiable? – Pacerier
@Pacerier TCP restituirá los datos que ya recibió si aún falta una pequeña parte de la transmisión. Quizás en algunos casos el requisito sea diferente: obtenga datos tan pronto como lleguen, incluso si están desordenados. –