风靡全国,日活8000万,《王者荣耀》后台技术架构演进!
当 Android 玩家登录 Android 大区会连接到 Android 大厅,iOS 登录之后连接 iOS 大区的大厅,当他们需要开黑的时候,我们通过 Adapter 把中转模块所有的大区桥接起来,通过一定的算法投递到某个大区。投递的选择和大区资源占比有直接关系。 网络同步方案 之前做《霸三国》的时候采用 Client-Server 的模式,服务器判定客户端表现,那为什么我们在做《王者荣耀》的时候选用帧同步的方式呢? Client-Server 模式的好处在于: 首先,安全。因为都是服务器计算,客户端只是负责表现层面的功能,不会影响各种判定的结果。 另外,Client-Server 模式因为是基于结果的表现,所以中间可以出现丢包,丢包是可以被接受和处理的,只要最终结果补发一致即可。 帧同步在端游用得比较多,大家比较熟悉的 DotA,还有《星际争霸》,都是用的帧同步技术。 帧同步本身对网络要求更加严苛,下发的执行序列是不允许丢包的,需要严格保证顺序性,包是 12345,就必须是 12345,如果丢包,必须要等到丢的包到达之后才能顺序后续执行。 MOBA 本身的单位比较多,同屏时客户端最多有将近 100 个单位,假如一个 AOE 技能打到 20 个单位,然后种了一个 debuff,Client-Server 状态模式需要发这些信息下去,可能潜在的同步状态信息是比较多的。 另外一个 Client-Server 模式本身开发的方式,客户端表现与服务器的判定,要完美的匹配是比较困难的。 我们之前做端游 MOBA 的时候,一个英雄技能我们开发要两三周的时间。《王者荣耀》当时开发周期是三、四个月,这样的时间压力下,我们用 Client-Server 的方式搞不定,时间不够。 当时团队心里会比较紧张,因为那时候市面上并没有看到用这种方式做强 PvP、高及时性手游的。 帧同步网络抗抖动能力比较弱,因为不能丢包。帧同步的基本原理,大家有兴趣可以下来自己了解一下。 (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |