我目前正在开发一个实时在线多人游戏,使用的是C#语言。我的目标是通过UDP协议实现客户端/服务器的连接。到目前为止,我已经使用UDP控制玩家的移动和TCP控制事件(如玩家射击、玩家失去生命值),因为我需要确保这些数据能够到达所有连接到服务器的玩家。我知道UDP被称为“不可靠”,有一些数据包可能会丢失。但我在各处都看到过不要混合使用TCP和UDP,因为这会影响连接。
主要问题是我应该如何组织我的网络?
UDP是无连接的,我应该如何保存客户端的信息?我应该将客户端的IP地址保存在一个列表中吗?
我应该使用TCP处理重要事件还是使用UDP?如果我需要使用UDP,我如何确保数据不会丢失?
使用TCP和UDP两种协议,我需要分别在列表中保存每个玩家的IP(用于UDP)和已连接的TcpClient(用于TCP)。我该如何改进以提高效率?