我的问题更多的是关于游戏中动作的验证,游戏是检查者。我正在开发一个车臣游戏,在html,css,js和nodeJS,游戏将是多人游戏。
所以我的问题是关于验证,什么是最好的方法。
现在,所有验证(有效移动等)都是客户端完成的(当然,必须是服务器端)。
我的问题是,什么是最好的方法:
场景1:我认为这是最好的,因为我们不太依赖于服务器,如果移动客户端出错了,那么它甚至不会将其发送到服务器,如果有不良意图的玩家(修改代码)试图执行错误的动作,那么服务器就会进行侧验证。
场景2:我们更多地依赖于服务器,它将消耗更多的资源,对所有在线玩家来说都要慢一些,但是在客户端它会“更快”一点,因为没有场景1那么多验证。
我认为场景1是最好的方法,因为:
你的看法是什么,还是你有更好的方法?
谢谢大家的阅读。
发布于 2018-05-16 09:43:02
这个问题可能有点过于开放和基于意见,但下面是这样说的:
就我个人而言,我认为让客户端充当游戏服务器的“观察者”是非常理想的。游戏服务器应该是权威的,并做所有的逻辑,以确保一致性。
我正在开发一个联网的JS游戏+引擎,如下所示:
服务器向所有客户端广播两个带有时间戳的游戏状态。然后,每个客户端在状态n和n+1之间插入。在此期间,任何用户输入都被发送回服务器,然后服务器被合并到状态n+1和n+2中,这些状态在下一次广播中被发送。当客户端在插值中到达n+1时,用新的n+1和n+2对n+1进行校正。
这意味着,如果一个事件是在插值开始时触发的,并且直到下一个状态广播时才向其他客户端广播,则客户端最多可以体验1勾值的滞后。这可能是200毫秒左右,它变得引人注目,但这在我的经验是相当可以容忍的。
我之所以采用这种方法,很大程度上要归功于Gabriel Gambetta的一组非常有用的文章:
I.客户端-服务器游戏体系结构
二、客户端预测与服务器协调
三.实体插值
四.滞后补偿
显然,我不能包括所有的文章,但我上面所写文章的要点是在第一篇文章中的这张图片中:

发布于 2018-05-16 09:23:10
我会说1号老师更好。
您需要使用这两种类型的验证。当用户单击时,通过javascript验证在客户端显示移动,并在后台将移动代码发送到服务器进行验证,这样坐在另一个服务器上的玩家就可以看到它。无论如何,您必须将数据发送到服务器,以便其他玩家可以看到播放机的移动。
添加客户端验证,以防止不必要的请求到服务器,这也将增加等待时间的播放器。
发布于 2018-05-16 09:45:14
我通常倾向于在服务器端进行验证,原因如下:
提示:使用socket.io,非常容易掌握,非常可靠,支持服务器推送消息。
https://stackoverflow.com/questions/50366749
复制相似问题