Atualmente, estou trabalhando em um jogo multiplayer on-line em tempo real. O objetivo é ter uma conexão baseada em cliente / servidor usando o protocolo UDP. Até agora, usei o UDP para os movimentos dos jogadores e o TCP para eventos (um disparo de jogador, um jogador que perde a vida) porque preciso garantir que esses dados cheguem a todos os jogadores conectados ao servidor. Eu sei que o UDP é considerado 'não confiável' e alguns pacotes podem ser perdidos. Mas eu li em todos os lugares para nunca misturar TCP e UDP, pois isso pode afetar a conexão.
A principal questão é como devo organizar minha rede?
UDP é sem conexão, como devo salvar quem é quem? Devo salvar os endereços IP dos clientes em uma lista?
Devo usar o TCP para eventos importantes ou usar o UDP? Se eu precisar usar o UDP, como posso garantir que os dados não serão perdidos?
Usando TCP e UDP, preciso salvar para cada jogador o IP em uma lista (para UDP) e o TcpClient que está conectado em outra lista (para o UDP). Como eu poderia mudar isso para ser mais eficaz?