【问题标题】:How should I deal with latency in game development?我应该如何处理游戏开发中的延迟?
【发布时间】:2011-02-24 01:51:25
【问题描述】:

我正在开发一个由多人网络浏览器游戏组成的爱好项目。 这是我的第一次,我刚刚偶然发现了延迟问题。

我正在努力让用户控制尽可能流畅,但延迟会阻碍我。

我认为平均延迟可能在 80-200 毫秒左右,而对于几乎平滑的控制,命令-动作延迟需要小于 100 毫秒。

我有几个问题:

  • 在要求之前 100 毫秒尝试发送用户操作是否是一种好习惯?例如用户按住“->”箭头键,我在需要将操作提交到服务器之前 100 毫秒提交右箭头键操作。

  • 开发人员如何在在线服务器和客户端上保持一致性/同步?

  • 有什么提示或建议吗?


谢谢大家,非常感谢您的帮助。 :)

【问题讨论】:

标签: python pygame latency


【解决方案1】:

问题 1) 是的,但是如果您正在做这样的实时移动,我会考虑在本地渲染它(使用碰撞检测等),然后在服务器上进行验证以确保他们没有作弊(即每秒更新服务器上的位置,并确保它们可以在一秒钟内从 A 移动到 B,等等)

问题 2)每隔一段时间(四分之一秒、半秒、整秒),您会发送一个数据包,其中包含其他玩家所做的事情以及 npc 所做的事情等的环境更新。

问题 3) 开发然后配置文件。让它成为你想要的逻辑方式。然后,如果您发现可玩性太慢,请努力优化接口和网络层。您可能会发现它很好!

【讨论】:

  • 谢谢!我期待人们抱怨这个问题太笼统,即使我真的不知道如何避免它。你的回答很有用,谢谢!有什么有用的资源可以让我偶然指出吗?
  • @RadiantHex 没问题。前两个问题根本不是很笼统,最后一个问题只是邀请个人评论,这是 SO 中最好的部分。至于资源,我能说的只是在问题出现时提出问题(显然,谷歌优先!!)作为旁注,我发现 gamedev 上的答案比 SO 上的更封闭和固执己见。我的建议是,如果你有一个问题,如果它是另一个应用程序,但恰好是一个游戏,你会被问到同样的问题,把它翻译成游戏外上下文,用 game-dev 标记它,然后问它。 {继续...}
  • 这让您可以利用每个人的专业知识,无论是订单输入系统还是电信,但以玩游戏为生/在业余时间玩游戏的人仍然能够提供这一点,具体见解。如果你问这个关于 ajax 订单输入系统的问题,我会告诉你所有三个问题的相同答案。渲染,然后验证。定期更新工作区状态。开发,然后配置文件。在gamedev上,你会得到“omg don't use python for games”之类的。
【解决方案2】:

一件重要的事情是在需要时加载资源。也就是说,在大多数 3D“移动”游戏中,在接近需要它们的对象时加载资源。

【讨论】:

    最近更新 更多