在由 Cocos 携手声网举办的 Cocos 开发者者巡回活动中,声网解决方案架构师李亚分享了手游中实时音视频的开发实践经验与技巧。
以下为李亚的演讲纪实:
在游戏社会化趋势的影响下,实时音视频逐渐广泛应用于多类游戏中,并在用户留存、用户活跃、防作弊、变现等角度为游戏带来价值。例如:
1.社交小游戏
游戏行业有个说法,游戏市场,腾讯、网易占80%,剩下20%留给其它公司瓜分。在这样的竞争环境下,小游戏给了很多游戏团队新的机遇。这类游戏有个特点,游戏玩法轻松,即开即玩,比如你画我猜、你唱我猜、连连看,他们更加注重社交属性。在加入语音后,简单的游戏更添趣味,社交元素更有利于用户活跃与留存。而且,小游戏不仅仅可以放在微信中,还可以在QQ、UC浏览器等环境中运行。
2.MMO类游戏
MMO在加入实时语音、文字消息后,玩家在自动寻路、自动打怪的过程中,也可以与好友语音聊天。通过实时语音,也可以让主播陪玩大R玩家,刺激变现。3.棋类牌类游戏
在该类型游戏中,增加实时语音或实时视频,可以打造更加真实的场景。该类游戏始终面对着一个老问题,就是玩家作弊,一个人用两台手机加入同一个房间。在开视频后,就可以杜绝这种作弊现象。同时,通过视频,用户还可以察言观色,判断对家牌的好坏。
4.桌游类游戏
以狼人杀为代表的桌游类游戏都非常注重用户之间的交流,甚至有些游戏流程主要靠语言来推进。在实时音视频加入后,桌游网游化成为了现实。
5.FPS游戏
实时语音已经成为以吃鸡为代表的FPS游戏的标配功能。现在这类游戏有诸如小队语音、全图语音等不同模式。6.在线抓娃娃
在线抓娃娃从去年年底开始爆红。通过实时视频,让用户们足不出户也能玩线下抓娃娃。
综上来看,实时音视频能为手游带来能价值呢?我们可以简单总结一下:
提升游戏体验:以狼人杀这类游戏为例,如果靠发文字消息交流,这样的游戏效率和体验会变得极其差,利用实时语音则让游戏的体验更加自然。
增加粘性,提升留存:现在很多游戏增加了挂机、自动化的功能,增加游戏直播或聊天,能让玩家边玩边聊。
增强变现能力:在游戏中,针对大R玩家,可以允许他与主播连麦,提升VIP的体验。
反作弊:在棋类牌类游戏中,通过开启视频,可以杜绝一人多台手机等作弊现象。在吃鸡游戏中,主播会把摄像头对准自己的手和键盘,来证明自己不是在靠外挂。
实时音视频的技术难点
首先实时音视频自身的技术难点与其处理流程相关。其处理流程如下图所示:
实时音视频的技术本身有很多难点,而游戏自身又会给它提出更多的要求。我们来一步步分析。实时音视频本身的难点包括:
首先是低延时。从行业标准来讲,端到端的延时如果大于400ms,两人对话没有办法正常进行。400ms就是一个红线。但是并不等于400ms就可以使用。在一些激烈对战的场景中,比如团队副本,指挥语音延时大,呼喊着让队友加血、嘲讽,但对方反应总会慢半拍,结果就是团灭。声网在实时音视频方面可以做到端到端平均76ms的低延时传输。
另一方面,路由设备、网络信号强弱、用网高峰等因素,总会引起丢包和抖动。各位做游戏开发肯定对这种情况也很熟悉。在实时音视频通话中,需要有相应的补偿算法来抗丢包、抗抖动,保证通话的流畅度和低延时。声网可以做到在50%丢包时,仍能正常通话,且不影响用户体验。不过这样的丢包率通常不会出现,因为在在这样的网络情况下,可能普通游戏也没有办法正常进行。所以,只要网络状况能支持游戏正常进行,声网的音视频通话就可以正常进行。
第三,网络的高并发、高可用。在高峰时间段,同一个频道内的高并发,多个频道高并发这种情况都需要开发者做出预案。声网通过分布式架构,智能路由算法,保证99.9%的连通率,99.99%的可用度。
最后,在音频方面,需要有降噪和回声消除处理。回声是指说话者能听到自己的声音,噪声很多时候是设备造成的或者环境音。而在视频方面,常见问题有绿屏、花屏、黑屏,这些通常是由编码器和设备适配造成的。对于这两方面问题,我们都需要通过编码算法优化和设备适配来解决。声网有独家专利的编码算法,设备适配达到5000多款机型,而且支持的机型还在不断增多。
游戏中的实时音视频
在解决基本的实时音视频技术难题后,将其应用于游戏中,还需要我们满足一些额外的要求。首先,游戏体验是最重要的,任何新增的功能都不能影响游戏体验。所以,实时音视频在游戏中满足以下要求:
-
开启/关闭音视频功能的瞬间,不会导致游戏卡顿,游戏本身的音效音量忽大忽小。
-
不能因为增加实时音视频而大幅增加功耗,过多占用内存、CPU等资源,导致游戏卡顿、降帧。
-
带宽占用要小,不能导致游戏延时升高。
-
SDK包体积要小,否则会影响游戏的分发。声网AMG SDK可以做到1.1MB的体积。
-
要做到盲源分离,社交、MMO类游戏,玩家通常会开外放功能,环境音、甚至手指击打屏幕的声音,都会变成噪音,传到对端后放大,导致玩家对话的声音听不清。
-
灵活性,音质、画质与流畅度,在带宽有限的情况下是矛盾的,开发者需要有在音质与流畅度之间灵活调整的空间。
结合不同的游戏场景,游戏中的实时音视频还需要举办一些特殊功能,比如:
-
声音美化:如变声功能,声网开放了声音美化的接口,通过改变参数,开发者可以自定义变声效果。
-
听声辨位:玩家语音通过我们接口也可以实现方位感和距离感,一般会应用于在FPS类游戏中,我们也曾详细分析过其中的原理。我们曾分享过。
游戏实时音视频的典型技术架构
前面我们分享了很多场景,包括连麦游戏、语音电台、视频麻将、团战语音等等,但概括来讲,从技术架构上可以分为两种:群聊和直播。
我们先来看一下群聊的架构:假设有3个玩家参与群聊,每个玩家的音视频流都会实时传输到我们的SD-RTN实时通信网络,再通过它传到对端。同时,我们的信令消息系统,也支持玩家发送文本消息,进行邀请连麦、接受连麦、排麦等控制。
上图是直播架构。主播端发出音视频流,先传到SD-RTN,可以经过转码,变成rtmp流通过CDN传到普通玩家。也可以经过SD-RTN直接传到VIP玩家,VIP玩家可以和主播连麦互动。与前面一样的,信令消息系统可以支持发送文本消息,控制连麦请求等。