2011-02-23 53 views
5

我正在研究一个由多人网络浏览器游戏组成的爱好项目。 这是我的第一个,我刚刚偶然发现延迟问题。我应该如何处理游戏开发中的延迟?

我试图让用户控制尽可能平稳和等待时间的方式获得。

我认为平均潜伏期可能在80-200ms左右,对于虚拟平滑控制,命令动作延迟需要小于100ms。

我有几个问题:

  • 难道是很好的做法,试图将用户的操作需要100ms的前?例如用户保持' - >'箭头键被按下,我需要在需要将操作提交给服务器之前100ms提交右箭头键操作。

  • 开发人员如何保持在线服务器和客户端上正在发生的事情之间的一致性/同步性?

  • 任何提示或建议?


感谢球员,帮助将是非常赞赏。 :)

+4

试着问在http://gamedev.stackexchange.com/ – 2011-02-23 17:45:38

+0

@ralu:谢谢!我不知道这存在! :D – RadiantHex 2011-02-23 21:22:19

回答

5

问题1)是的,但如果你正在做这样的实时运动,我会考虑本地呈现它(使用服务器上的冲突检测和什么不可以),然后验证,以确保他们没有作弊它(即每秒更新服务器上的位置,并确保它们可能在一秒钟内从A到B等)

问题2)每隔一段时间(季度,一半,整秒)发送一个包含其他玩家所做的环境更新的数据包以及npcs所做的等等。

问题3)开发则轮廓。按照您希望的方式进行逻辑处理。然后,如果您发现可玩性太差,请优化界面和网络层。你可能会发现它很好!

+0

感谢!我期待人们抱怨这个问题过于笼统,即使我真的不知道如何避免这个问题。你的回答非常有用,谢谢!有没有什么有用的资源可以让我偶然指点一下? – RadiantHex 2011-02-23 21:21:50

+1

@RadiantHex没问题。前两个问题根本不是很普遍,最后一个问题只是个人评论的邀请,这是SO最好的部分。至于资源方面,我所能说的仅仅是提出问题(显然,首先是Google)!!作为一个附注,我发现gamedev上的答案比SO上的更加封闭和自以为是。我的建议是,如果你有一个问题,如果它是另一个应用程序会被问到,但恰巧是一个游戏,请将其翻译为游戏外的上下文,用game-dev标记它并询问它。 {继续...} – corsiKa 2011-02-23 21:38:29

+1

这让你可以利用每个人的专业知识,无论是订单输入系统还是电信系统,但那些以空余时间为生的游戏的家伙仍然能够提供具体的洞察力。如果你问过关于ajax订单输入系统的问题,我会告诉你所有三个问题的答案。渲染,然后验证。定期更新工作区状态。开发,然后配置文件。在gamedev上,你会得到“omg不使用Python的游戏”或其他东西。 – corsiKa 2011-02-23 21:39:02

1

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