ITPub博客

首页 > 数据治理 > 数据治理 > 游戏服务器可不可以可以只做数据中转站

游戏服务器可不可以可以只做数据中转站

原创 数据治理 作者:hkidc2019 时间:2019-11-18 11:57:13 0 删除 编辑

首先,其实在远古时期,大部分的网游都是这样做。因为那时候服务器机能普遍不强,大环境的网络不好(都是拨号上网),如果像现在这样,服务器运算完再返回结果给前端,成本就过高。服务器hold不住,玩家的网费也烧得飞起。所以初期的网游,大部分单人逻辑和运算都交给客户端来做,服务器只负责存储和广播。如果你能搞到初代的石器时代或者传奇之类的源码,你就会发现基本所有单人部分的运算都是在前端完成。至于后来为什么都交给后端来做,答案很简单,就是外挂。如果是单机的话,你改改数据自嗨没人管你,但是网游就不太可能了其次,其实现在还有部分网游也会这样做。现在的网游环境不比最初,火一点的游戏都会伴随着外挂的产生。所有网游都会把数据的合法性和安全性放在很重要的位置。基本所以mmorpg这种都是把运算放在服务器来做。但是其实还是一些特殊的网游是交给前端计算的。这类网游一般都是单局型的竞技网游。类似moba,大乱斗,rts这种,他们会采用一种叫“帧同步”的方法,把运算交给前端,后端只负责广播。(fps则不会用“帧同步”)当然不是所有的这类游戏都是这样做,但是确实是有不少这类游戏会采用“帧同步”的算法来实现对战。所谓的“帧同步”就是,服务器只负责收集玩家的操作,然后广播给所有同一局的玩家。所有的玩家(前端)各自严格按顺序计算。因为所有输入的条件都是一致的,所有产生的结果也是一样的。拿war3举个例子:A玩家操作了小兵去攻击了野怪,并正好能把野怪打死,B玩家操作小兵去攻击A玩家的小兵,并正好能把A小怪打死。但是A发到服务器的时间是1分17秒,B操作发到服务器的时间是1分18秒。那么所有玩家收到的广播就是A小兵1分17秒攻击了野怪,B小兵1分18秒攻击了A小兵。按顺序执行就是A打死了野怪然后被B打死。但是如果服务器收到的顺序是刚好相反,那么就是A没有打死野怪就被B打死。可以看出,如果所有的客户端都严格按照服务器给的顺序执行,那么所有的前端看到的结果都是一样的。那么为什么这类游戏会选用这种方式来做呢。原因有很多∶1.“作弊”的影响范围很小,就算一不小心防不住你作弊。那我最差的情况也只是影响了这局玩家的体验,并不会说搞坏整个游戏生态。2.网络包很小,竞技游戏对于实时性要求很高,操作又很多。如果像mmo rpg一样传大量的状态数据,技能数据那么会很影响体验。如果我只传操作数据就能提升网络效率3.就是同步很“严谨”。像上面例子那样,如果给出严格的操作顺序(其实就相当于棋谱一样),那么放到任何一个客户端,重复演算个上万遍,得出的结果都是一样的(好了,录像功能也有了)当然咯,“帧同步”的优点就算再多,始终有一个问题是无法回避的,就是像其他网游一样,怎么防作弊。一般来说,像moba或者大乱斗这类游戏,会采取投票机制。就是这局打完,大家一起投票,少数服从多数。拿moba为例,就算你开外挂改数据,把你攻击改成一刀999。在其他客户端的那里,你攻击还是没变。你这边在乱杀,在别人眼里就跟个傻子一样乱跑。然后游戏结束,大家把结果提交给服务器一合计,发现就你结果不一样。服务器就认为你作弊了,不采用你的结果。那么像rts大多数都是1v1的话,没办法少数服从多数。我猜可能服务器自己会跑一份逻辑吧。不过rts样本太少,需要连服务器跑的rts,我就知道一个星际2。甚至他是不是用“帧同步”来做都不好说总的来说,现在基本大部分网游都是交给服务器运算。而且现在服务器性能越来越强,网络越来越好,即使是竞技网游,很多都愿意把计算放在后端来做。因为“帧同步”其实有一些很让人头疼的问题。像追踪bug,不同系统上的浮点数运算等等。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69951811/viewspace-2664580/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-10-25

  • 博文量
    111
  • 访问量
    71428