【发布时间】:2013-06-24 19:18:38
【问题描述】:
我正在创建一个 2d minecraft 风格的游戏,其中地图存储在一个 2 维 int 数组中。 您可以放置和破坏块,ai 控制的角色将在地图上四处走动。 游戏使用 xna/c# 制作。 问题是我没有太多编码网络游戏的经验。
我应该使用哪种协议? UDP、TCP?或者也许是lidgren 库? (使用 UDP + 可靠性)
我应该让以下事情在客户端、服务器还是两者上完成?
- ai/寻路
- 碰撞检测
另外,向服务器发送销毁和放置块消息是一种好习惯吗? 我猜当客户端启动时,它首先需要下载地图。然后对地图的更改将与客户端上的地图和服务器上的地图并行进行....
最后,我应该只在字符发生变化时才广播字符的位置(倾向于 TCP)还是应该持续发送它们(倾向于 UDP)?
任何帮助都是有用的:)
提前致谢。
PS:抱歉我的英语质量不好(我是荷兰人)
【问题讨论】:
-
TCP 较慢,UDP 较快。 TCP也有保证,而UDP则没有。因此,根据您的优先事项,您应该权衡差异。
-
请记住,除了所讨论的可靠性问题外,UDP 还会带来 NAT 穿越问题。您需要使用 UDP 穿孔等技术。
标签: networking tcp udp multiplayer