Obecnie pracuję nad ac # online multiplayer w czasie rzeczywistym. Celem jest połączenie klienta z serwerem za pomocą protokołu UDP. Do tej pory używałem UDP do ruchów graczy i TCP do wydarzeń (strzelanie do gracza, gracz tracący życie), ponieważ muszę mieć pewność, że takie dane dotrą do wszystkich graczy podłączonych do serwera. Wiem, że UDP jest określane jako „niewiarygodne” i niektóre pakiety mogą zostać utracone. Ale wszędzie czytałem, aby nigdy nie mieszać TCP i UDP, ponieważ może to wpłynąć na połączenie.
Główne pytanie brzmi: jak mam zorganizować sieć?
UDP jest bezpołączeniowy, jak mam oszczędzać, kto jest kim? Czy powinienem zapisać adresy IP klientów na liście?
Czy powinienem używać TCP do ważnych wydarzeń, czy używać UDP? Jeśli muszę korzystać z UDP, jak mogę się upewnić, że dane nie zostaną utracone?
Korzystając zarówno z protokołu TCP, jak i UDP, muszę zapisać dla każdego gracza ich adres IP na liście (dla UDP) i TcpClient, który jest połączony z inną listą (dla UDP). Jak mogę to zmienić, aby było bardziej skuteczne?