gpt4 book ai didi

c# - 我应该使用 TCP 还是 UDP 作为 MMORPG 的网络协议(protocol)?

转载 作者:可可西里 更新时间:2023-11-01 02:44:27 29 4
gpt4 key购买 nike

我正在使用 C# 和 Monogame 开发 MMORPG。现在,我正在为它开发网络协议(protocol)。我应该指出,我是 CCNA,所以我对这两种协议(protocol)的工作原理有非常扎实的了解。但是,我过去只编写过单人游戏。但是,我有点难以弄清楚我应该使用哪种协议(protocol)。我最初使用 UDP 开始我的实现,并成功地通过我的本地网络发送了单个数据包,但我担心一旦我开始添加越来越多的客户端,UDP 可能会失败。考虑到这是游戏连接,我最初得出的结论是我需要一个快速、低延迟的连接。但很快意识到我需要发送的一些数据包的大小可能会开始测量许多 KB,例如当客户端进入 map 上的新区域时,或者尝试连接的客户端需要更新其本地纹理缓存。

我的问题是那些在制作多人游戏方面有经验的人:即使 TCP 的开销更大,是否值得使用它,或者调整游戏的协议(protocol)以获得相对于 UDP 的可靠性?

最佳答案

我知道有几个游戏实际上会同时使用 TCP 和 UDP 协议(protocol)。

我知道您没有使用 Unity,但这里有一个链接讨论了多人游戏中使用的 TCP/UDP 协议(protocol) http://forum.unity3d.com/threads/should-we-use-udp-or-tcp.257217/

我还找到了其他几个资源:

http://ael.gatech.edu/cs4455f13/files/2013/08/Networking_Multiplayer.pdf

http://gafferongames.com/networking-for-game-programmers/udp-vs-tcp/

http://www.gamedev.net/topic/665565-game-master-server-udp-tcp-or-both/

阅读这些链接后,它们对概念的解释非常透彻,应该能够帮助您根据自己的游戏风格做出决定。 gafferongames 的链接看起来是最有帮助的——它非常深入地解释了这些事情。我建议至少阅读名为:

Wait? Why can’t I use both UDP and TCP?

最后一个链接的引述表明它在很大程度上取决于项目:

It depends on the situation. When it comes to server-to-server communication there is no 'usual' method. You could go with anything from a custom ultra light UDP protocol, or your own more complex protocols that you design and build, ranging through standardized systems like JDBC/ODBC, or even REST based calls. The knowledge of what to pick in individual scenarios is a reason network infrastructure engineers are paid so well. :-)

这最终取决于您在做什么,以及您希望从应用程序中获得什么。有些人不同意同时使用这两种方法,因为这会导致问题。最好的办法是通读这些网站,并根据使用每个网站的优缺点做出决定。

编辑:我找到了更多专门针对 MMORPG 游戏讨论此问题的网站:

http://www.gamedev.net/topic/319003-mmorpg-and-the-ol-udp-vs-tcp/

https://gamedev.stackexchange.com/questions/431/is-the-tcp-protocol-good-enough-for-real-time-multiplayer-games

其中一个网站建议仅对 MMORPG 游戏使用 TCP 协议(protocol),另一个建议仅对非实时游戏使用 TCP。第二个链接讨论了使用每种方法的优缺点以及相关的开销。

这是我找到的最好的建议,基本上我对你的问题的回答总结如下:

Doing two may be benificial, but I'd suggest working with TCP now, leaving in hooks for UDP later. I think it would be more benificial to get the project up and running then worrying about latancy issues this early. As pointed out in that Quake 3 article I linked, doing both TCP and UDP at the same time introduces intresting and very hard to track bugs.

关于c# - 我应该使用 TCP 还是 UDP 作为 MMORPG 的网络协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32236741/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com