“剧本杀”是与此前火爆的“狼人杀”十分相近的社交游戏。本文将首先分析实现“剧本杀”App所需功能,然后讲解通过声网 SDK 中的接口如何实现语音群聊、私聊、变声等。欢迎访问声网 Agora问答版块,发帖与我们的工程师交流。
数据说话“剧本杀”有多火?
近期,有一类糅合了推理、角色扮演与社交的游戏,开始迅速蹿红,那就是“剧本杀”。它的玩法与综艺节目《明星大侦探》如出一辙,只是将整个场景从线下搬到了线上,让任何玩家都能参与进来。就像“狼人杀”一样,“剧本杀”也是从线下派对、桌游店,跃至应用商店,并悄然兴起的一类社交游戏。而且根据目前的应用下载与投资热度来看,似乎大有复制“狼人杀”增长的趋势。

目前比较热门的“剧本杀”App 有5个。根据 AppAnnie 8月初的数据显示,其中一款App“我是谜”曾进入 App Store 社交类下载排名前50。根据36kr 此前的报道,“我是谜”App 端目前日活过万,平均每天开局超过 2000 场。另一款 App“百变大侦探”上线两周后就积累了2万用户。

根据我们的数据监测显示,剧本杀大多发布于今年3月,从7月初开始流量暴增,下图显示了某个接入声网 SDK 的剧本杀应用的语音通话量趋势。

什么是剧本杀
剧本杀确实很火。但是,可能没玩过的人还是一头雾水,什么是“剧本杀”?
“剧本杀”源自线下游戏“谋杀之谜”,这是一类 LARP (实时角色扮演)游戏。在剧情的推动下,几个玩家会共同经历一段故事,每个玩家都会扮演故事中的一个角色,而每个故事背后都隐藏着一个秘密或一个凶手。玩家们通过互动交流、探讨、交换线索,共同揭开这个秘密或发现凶手。
这个游戏的“线上化”与狼人杀相似,都是实时语音技术发展驱动的创新场景。玩家可以不用再去线下桌游店组局,随时随地在线上就可以开局玩起来。在游戏过程中,玩家可以通过语音群聊,将自己得到的线索公开给所有玩家,也可以像交换情报一样,通过私聊转述给个别人。
业务拆解:如何实现“剧本杀”
剧本杀与狼人杀非常相似,都是社交游戏。不同的是,狼人杀游戏全程都处于群聊模式,而剧本杀有时会需要小范围私聊。
在剧本杀游戏过程中,会包括几个环节:
-
探索阶段:阅读剧本,获取线索
-
搜证环节:群聊、私聊交换线索
-
投票阶段:你懂的
其中可能会出现多次探索、搜证,这完全取决于剧本内容的复杂程度。由于剧本属于内容范畴,就算再复杂,也只是玩家多用到几次搜证、投票、私聊功能而已。如果我们玩一个最简单的剧本,而且会用到所有功能,那么游戏流程基本是这样的:

这个产品的功能并不十分复杂,主要包括:
-
业务系统:用于控制剧本进程、游戏流程、投票等。
-
消息系统:用于发送文字消息。
-
语音群聊:所有玩家可以在同一个语音聊天室中对话。
-
语音私聊:在游戏过程中,两个玩家可以脱离群聊,进行一对一语音通话。
如何快速实现?
如果按照最基本的剧本杀功能来开发的话,App的架构如下图所示:

我们在前文中已经简要分析了剧本杀的游戏流程与核心功能。根据核心功能来看,只需要基于声网直播 SDK,调用几个接口即可实现剧本杀。调用逻辑如下图:

接口调用逻辑:
-
第一步加入游戏房间时,调用JoinChannel加入频道(语音群聊)
-
加入房间后设置ChannelProfile为0,进入通信模式
-
加入muteLocalAudioStream与muteAllRemoteAudioStreams以实现麦克风静音与扬声器静音功能
-
搜证环节,通过LeaveChannel与JoinChannel以及不同的ChannelName实现玩家在群聊与私聊之间的切换
-
游戏结束时,调用LeaveChannel退出频道
为了帮大家快速实现以上这些基本功能,我们已经在声网开发者中心提供了更详细的开发文档及示例代码,点击「阅读原文」即可获得。
如何实现观战?
剧本杀目前对于一些用户来讲还是新生事物。根据媒体报道,为了让更多用户在上手之前进一步了解玩法,有些产品已经或计划引入观战模式。即在几个玩家游戏过程中,其它用户可以进入房间观战,能看到同样的剧情,听到所有人的交流,但无法发声,无法参与而已。
其实房间中的观战用户与玩家的区别就是“只能听,不能说”。所以实现起来很简单。只需要在观战用户加入频道后,调用muteLocalAudioStream进行本地静音即可。
怎么变声?
剧本杀独特之处在于角色扮演,而且如果不将自己代入角色,体验也会变差。不管你是小鲜肉还是女神,到了剧本杀里都有可能去扮演富豪马老板、闲人马大姐或快递刘小哥。如果加入变声器,更容易角色带入,语音交流会更有趣。
要实现变声,需要调整语音的音调、混响,还要保证音质。我们通过三个接口可以自由调整变声效果:
-
设置本地语音音调:setLocalVoicePitch
-
设置语音音效均衡:setLocalVoiceEqualization
-
设置本地音效混响:setLocalVoiceReverb
大家可以自己调节参数,达到想要的效果。当然,我们也可以提供一些推荐的参数设置。
好了,以上都是实现思路,有人或许想问“是否有代码”?当然有。我们已在 Github 上传了一套示例代码,供大家参考复用。这套示例 Demo实现了剧本杀的语音聊天部分的功能,大家在加入选剧本、阅读剧本、玩家列表、线索收集或其它能体现出产品差异化的功能后,即可形成完整的App。
还有哪些问题需要考虑?
至此,我们已经完成从无到有的过程,但是从1 - 100,中间还有很多的问题需要解决。从表面来看,剧本杀既不是常见的社交产品,也不算常规的游戏。就像“我是谜”这款产品给自己的定义一样,它是“内容的游戏化社交”。而从功能来看,剧本杀与狼人杀、语音聊天室很相似。所以不难发现,剧本杀的开发需要面对这些问题:
应对业务保障带来的压力:狼人杀、直播答题在风口崛起时,都面临过业务暴增导致服务不可用。剧本杀的一些app目前同样面临这些问题,产品一夜爆红,如果不能快速扩容,会导致用户流失,面临巨大的损失。
可用度:一场剧本杀游戏一般需要1.5小时到4个小时,所以用户高峰会集中出现在晚上、周末,通话并发数会出现瞬间攀升的情况,如果服务架构没有承载海量并发的能力,那就会出现无法通话、通话卡顿的现象,甚至服务挂机。声网Agora 在全球部署的实时虚拟通信网SD-RTN,通过分布式架构,弹性扩容,可以应对客户业务量暴增。智能路由算法,保证选择畅通的传输线路,即使骨干网络故障,也能保证业务正常进行。
时延:根据ITU-TG.114标准,单向通话延时大于150ms就可受到通话连续性影响,一般情况下最大可容忍时延为400ms。大于这个时延,基本不可用。
音质:回声、噪声、音质,都会影响用户的体验,导致听不清。提高音质,需要针对多种机型和系统做编解码的调优,开发工作量巨大。声网Agora的专利编码,能够有效的抑制回声和噪声,并且能提供44.1kHz的超宽带音质,让玩家拥有沉浸式体验。
卡顿:这会丢失关键信息,这通常是由丢包引起的。这不仅涉及到编解码调优,还要对端到端的传输做优化。声网Agora的专利编码器,是面向互联网高丢包率状况下,进行实时传输而设计的,在丢包率50%时,仍然能够通话。