我抓包肤浅的分析了下LOL的网络设计。
先说观察到的一些现象:
A)协议基于UDP
B)采用纯C/S模型(无C2C过程),
C)99% 包大小length小于576bytes,最大1038bytes。(100%小于1500bytes)
D)发包的频率是平均0.017s
然后一一的分析:
A)协议基于UDP不用多说
B)对MOBA这类强调微操作的游戏来讲,对英雄角色之间的影响巨大,对同步的要求高,玩家任何操作的不一致性都会带来很差的体验。
但网络的延迟是绝对的,对这里的同步我的理解是只要在在玩家反应时间内完成同步就行,人类的反应也是有延迟的(一般来说200ms吧)。然后我玩LOL中,看到的现象,
1)技能都反应时间,一般就是发送或者指示的耗时,SPELL的耗时等
2)攻击的时候也是有攻击速度,对高攻速的ADC来说有攻击物体飞行的时间。
3)我觉得最有意思的,在几次服务器卡顿时我注意观察了下,远离敌人时英雄的走动不是强同步的,反之则是!
前面两点是游戏设计上的,不多做讨论,第三点上面,我觉得LOL虽然游戏地图不大,但也是有战场概念的(BattleField)。这一点下面继续讨论。
我认为使用纯C/S模型原因有
1)对一致性来说,比网状结构要好,某个玩家的网络不好,对其他玩家的体验影响较小(相对的)
2)反作弊要容易一些
3)星状结构简单,腾讯也财