为什么moba类游戏不用tcp协议?实测数据

Moba类游戏为什么对网络延迟要求高?

我们知道,不同类型的游戏因为玩法、竞技程度不一样,采用的同步算法不一样,对网络延迟的要求也不一样。例如,对于炉石传说、斗地主、梦幻西游等回合制游戏来说,同时只有一个玩家在操作双方数据,无数据竞争,且时间粒度较粗,甚至可通过特效掩盖延迟,因此对网络延迟的要求不高,即便延迟达到500ms~1000ms,游戏也能正常进行;对于传统mmorpg来说,多采用状态同步算法,以属性养成和装备获取为关注点,也有一定竞技性,出于对游戏流畅性的要求,对延迟也有一定要求,同步算法的优化程度不一样,这一要求也不一样,一般情况下为保证游戏正常进行,需要响应延迟保持在300ms以下;相比之下MOBA类游戏多使用帧同步为主要同步算法,竞技性也最高,无论从流畅性,还是从公平性要求来说,对响应延迟的要求都最高,根据业内经验,当客户端与服务器的网络延迟超过150ms时,会开始出现卡顿,当延迟超过250ms时,会对玩家操作造成较大影响,游戏无法公平进行。这里,我们不对同步算法做进一步说明,重点说一下协议的问题。

传输层协议和延迟

不同传输层协议在可靠性、流量控制等方面都有差别,而这些技术细节会对延迟造成影响。tcp追求的是完全可靠性和顺序性,丢包后会持续重传直至该包被确认,否则后续包也不会被上层接收,且重传采用指数避让策略,决定重传时间间隔的RTO(retransmission timeout)不可控制,linux内核实现中最低值为200ms,这样的机制会导致丢包率短暂升高的情况下应用层消息响应延迟急剧提高,并不适合实时性高、网络环境复杂的游戏。

加速方案:

基于udp定制传输层协议,引入顺序性和适当程度或者可调节程度的可靠性,修改流控算法。适当放弃重传,如:设置最大重传次数,即使重传失败,也不需要重新建立连接。比较知名的tcp加速开源方案有:quic、enet、kcp、udt。其中,quic是源自google的tcp替代方案,其主要目的是为了整合TCP协议的可靠性和UDP协议的速度和效率,其主要特性包括:避免前序包阻塞、减少数据包、向前纠错、会话重启和并行下载等,然而QUIC对标的是TCP+TLS+SPDY,相比其他方案更重,目前国内用于网络游戏较少。kcp的作者是国内优秀开发者,社区也发展良好,kcp的作者和社区开发者对enet、kcp、udt做了性能测试,详情可参见:github.com/skywind3000/kcp/wiki/KCP-Benchmark ,从测试情况可以看到,kcp表现不错,其次是enet,表现最差的是udt。不过,这里也提出一个问题,原始enet保留了tcp重传的指数避让特性,每次重传间隔还是乘以2,默认rto也较高,这可能是测试中enet表现不够好的主要原因,如果对enet代码稍作调整,结果又当如何?这里,我们先排除传输性能,从其他方面对enet和kcp做一对比(满分5分)。

enet和kcp对比

我们对libenet略微做一些调整——默认rtt从500ms调整成50ms, 去除超时重传的指数避让策略。Linux下用TC命令模拟网络延迟和丢包率,控制延迟分别为30ms, 50ms, 70ms,控制丢包率分别为1%, 3%, 5%, 7%, 10%,在模拟出的不同网络环境下,对tcp, 原始enet和改进后的enet进行了对比测试。

测试中考察两个性能指标:

1)平均响应时间;

2)响应时间超过300ms的包的比例。

libenet的代码调整:

调整默认RTT为50ms
取消指数避让

tc命令如下:

延迟100ms(rtt为200ms): tc qdisc add dev eth0 root netem delay 100ms

1%丢包率:tc qdisc add dev eth0 root netem loss 1%

对比数据如下:


不同丢包率和网络延迟下TCP协议、ENET、优化后ENET的平均响应时间对比


不同丢包率和网络延迟下TCP协议、ENET、优化后ENET的超时响应比例对比

从图中可见,在平均响应方面,TCP协议的劣势不明显,在延迟为30ms,丢包率为1%时,改进后的enet平均rtt为69ms, 原始enet平均rtt为67ms, tcp平均rtt为67ms;但是从响应时间超过300ms的比例看,在延迟为30ms,丢包率为1%时,改进后的enet rtt超过300ms的包为0,而tcp rtt超过300ms的比例则超过了2%,如果是在游戏中,这个表现已经能明显影响游戏体验了。结果表明,tcp在网络稍不稳定的情况下就已经有比较大的问题了,改进后的enet有明显优势。

总结

测试结果符合预期,在实时性方面,tcp协议的网络抗性欠佳,对moba类或其他实时性要求较高的游戏,我们不建议使用tcp作为协议载体。事实上,王者荣耀,乱斗西游的通信协议也确实是基于udp封装的,别问我是怎么知道的。

后话

对于开发人员来说,优化协议和同步算法是在已有网络环境下提升用户体验的可用方法,也是较平民化的方法,在网络抖动有限、丢包并不频繁、网络环境不至于太差的情况下,的确能有效提高游戏体验;然而这种方法也存在局限性,在网络环境超出可控范围,如在地铁上、商场里等人潮拥挤、存在网络热点,延迟或丢包率极高的环境中,还是无法解决问题,所谓“巧妇难为无米之炊”,再牛X的协议和算法,也无法点石成金,要从根本上解决问题,最终还是要回到网络质量上。和平民化方法相比,改变网络质量需要在资源和底层调度策略上的积累,如何优化遍布全国各地乃至全球各地的玩家网络接入点到服务器端的网络链路?如何优化玩家客户端最后一公里即客户端到无线基站的接入qos(Quality of Service)?这种方法可以称之为高富帅方法,而有这种大规模需求,又能采用这种方法的,放眼望去,恐怕只能看到一家公司了:腾讯。好消息是,腾讯已经将这种能力在腾讯云开放了,称之为:智营网优,cloud.tencent.com/document/product/594/10028 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343