首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MMORPG客户端/服务器编码

MMORPG客户端/服务器编码
EN

Stack Overflow用户
提问于 2008-10-17 18:28:56
回答 9查看 10.8K关注 0票数 13

如何在MMORPG客户端/服务器通信中使用UDP和TCP协议?

例如:

客户端是否通过UDP向服务器广播(球员位置等)?或者反之亦然?

或者更像是使用TCP,客户端请求服务器移动球员。服务器接收到请求,移动球员,并向客户端返回球员现在在位置xyz?

聊天通道必须使用TCP实现吗?

在这方面有什么好的文章/书吗?我找到了一些零碎的东西,但似乎真正的肉和土豆都是从经验中获得的。

EN

回答 9

Stack Overflow用户

发布于 2008-10-17 18:44:29

许多游戏使用UDP进行与移动相关的活动--因此,当您步行时,很可能会发送一堆UDP请求。服务器仍然最终控制这是否有效,但您不必关心是否每个单独的包都到达服务器。这就是为什么许多游戏客户端也使用某种预测机制的原因。

在您第二次提到的方面,是的,所有控件都由服务器管理是很常见的。您不希望客户端向服务器广播任何内容;您应该在服务器端进行错误和输入处理,以防止他人进行黑客攻击。您还可以限制每秒的输入。

无论如何,UDP和TCP的组合将是合适的--您只需要问自己,“我需要的是可靠性还是速度?”

票数 8
EN

Stack Overflow用户

发布于 2008-10-17 18:45:04

有许多不同的可能实现,但大多数情况下,它们看起来像这样。这种模式在游戏世界中的几乎任何动作中都是重复的。

  1. 客户端向服务器传达玩家想要移动的信息。
  2. 客户端根据它认为应该发生的事情显示玩家的移动。
  3. 服务器验证给定玩家的位置,移动是可能发生的事情。
  4. 服务器更新客户端以了解玩家在服务器中的位置。
  5. 客户端更新玩家的位置以反映服务器的世界状态。
票数 4
EN

Stack Overflow用户

发布于 2008-10-17 18:45:37

你不能依赖客户端来传递真实的信息。有人会破解协议并作弊。加密数据并不能阻止这一点--只会让它变得更难。

客户端应该只发送移动等请求,而服务器需要检查这些请求,以确保它们没有违反游戏规则。服务器应该只发送客户端绝对需要的数据-你不能依赖客户端获取大量的世界数据,然后过滤掉玩家当前无法观察到的一切。有人会得到额外的信息并加以利用。

如果游戏需要“实时”,那么客户端需要假设服务器将允许移动请求,并相应地更新显示-如果服务器稍后对其进行更正,则回滚移动。在大多数情况下,客户端和服务器会达成一致,一切都会顺利进行。当客户端试图作弊时,他们不会同意(无论如何,这都是他们的错)--或者客户端由于连接不良而严重滞后(对此你无能为力)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/213298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档