关于网络游戏中的同步机制

关于网络游戏中的同步机制,第1张

当我们在做一些跟网络游戏相关的机器学习任务的时候,有时需要对整个游戏系统的运行机制有所了解才能更好的应对,对于网游而言,首当其冲的机制便是同步了。当然,大部分的机器学习从业者是不会懂游戏开发的,更不会不懂同步机制,此文我将基于我个人的一些研究和理解对网游中的同步机制做一个简单的介绍,以便大家更加顺利的开展游戏相关的机器学习任务。

与单机游戏不同,网络游戏有很多人通过远程的方式参与游戏,不管是服务器还是玩家,用的都是自己独立的设备,也就是说所有的客户端和服务器都是各自独立的游戏世界,要让游戏玩下去就得保证所有的游戏世界都是一致的,于是便有了 同步

在理想的情况下,所有人操作的游戏世界,在同一时刻应该是完全步调一致的,但由于网络延迟以及其他不同设备环境的差异,完全一致时不可能的,而 同步 的目的是希望尽可能的一致,而对一致性的要求,不同的游戏类型也会有不同的要求。

通常帧同步和状态同步是这样区分的:

当然这两种方式并非是非此即彼的,在一些复杂的网络游戏中,混用两种方式也是比较常见的。

尽管为了游戏体验,游戏客户端可能会做很多体验上的改进操作,跟我下面讲的并不会完全一致,但归根揭底,帧同步和状态同步必然会遵循上述几点,在设计算法时无需在意那些为了优化体验的细节。

以下是一些具有代表性游戏的同步方式:

帧同步是比较容易理解的,所有的客户端都是一个完整独立的系统,并且我们指导游戏中的随机性均是伪随机,在seed确定的情况下,每个系统的状态的改变只取决于游戏的输入,也就是说我们通过服务器来转发所有玩家的操作输入客户端游戏系统,那么就能保障所有的客户端都是同步的。

比如某个时刻,玩家0做了操作x, 整个同步过程如下:

显而易见的,因为只同步了用户的操作,这个数据传输量其实是很少的,所以很省流量,除非玩家特别多...

对于绝大多数的状态同步游戏,它的逻辑计算完全放在服务器上,因此也十分好理解。客户端只是相当于一个表现层,用来展示服务器发送过来的数据。就像我们打开一个网页,网页上的数据都是从服务器发过来的,因此我们本地是没办法作弊的,除非黑了服务器,因此这种状态同步的游戏基本上是没有外挂的。

但是有一种特殊的情况,就是FPS类型的游戏,如果靠服务器来运算,整个延迟下来就没法正常玩了...因此它的战斗逻辑会在客户端,而只向服务器汇报结果,因此类似吃鸡的这种游戏会有很多的外挂。

对于战斗逻辑在服务器的状态同步游戏,它的安全性是十分高的,因为想作弊就得黑入服务器,这个难度可想而知。但是FPS类型游戏部分战斗逻辑在客户端,这个会好被外挂修改,这也是FPS游戏外挂多难以根治的主要原因。

而帧同步的游戏整个计算逻辑在客户端,因此,开挂者因为可以获得全系统的信息,于是就可以很容易做开图之类的外挂。

l 当出现同步异常的游戏,可以通过同步日志查看,并可通过重新执行失败任务功能再次同步。%26Oslash自动触发游戏同步l 当服务器游戏升级(或者通过手动更新游戏版本号)后,自动触发服务器同步功能。l 相应游戏会自动按照分组方式同步到指定服务器。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/681013.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-30
下一篇2023-07-30

发表评论

登录后才能评论

评论列表(0条)

    保存