【发布时间】:2011-05-25 17:03:50
【问题描述】:
我目前正在开发一款实时 C# 在线多人游戏。目的是使用 UDP 协议建立基于客户端/服务器的连接。到目前为止,我已将 UDP 用于玩家的移动,将 TCP 用于事件(玩家射击,玩家失去生命),因为我需要确保此类数据将到达连接到服务器的所有玩家。我知道 UDP 被称为“不可靠”并且某些数据包可能会丢失。但我到处都读过,不要混合使用 TCP 和 UDP,因为它会影响连接。
主要问题是我应该如何组织我的网络?
UDP是无连接的,我应该如何保存谁是谁?我应该将客户端的 IP 地址保存在列表中吗?
我应该使用 TCP 处理重要事件还是使用 UDP?如果需要使用UDP,如何保证数据不会丢失?
通过同时使用 TCP 和 UDP,我需要将每个玩家的 IP 保存在一个列表中(对于 UDP)和连接在另一个列表中的 TcpClient(对于 UDP)。我怎样才能改变它以更有效?
【问题讨论】:
-
这个问题在我们的游戏开发堆栈交换中可能会做得更好:gamedev.stackexchange.com
-
投票关闭,但迁移到游戏开发。
-
link 帖子已迁移
标签: c# networking real-time