调用几个接口,快速实现社交游戏“剧本杀”

avatar

“剧本杀”是与此前火爆的“狼人杀”十分相近的社交游戏。本文将首先分析实现“剧本杀”App所需功能,然后讲解通过声网 SDK 中的接口如何实现语音群聊、私聊、变声等。欢迎访问声网 Agora问答版块,发帖与我们的工程师交流。

数据说话“剧本杀”有多火?

近期,有一类糅合了推理、角色扮演与社交的游戏,开始迅速蹿红,那就是“剧本杀”。它的玩法与综艺节目《明星大侦探》如出一辙,只是将整个场景从线下搬到了线上,让任何玩家都能参与进来。就像“狼人杀”一样,“剧本杀”也是从线下派对、桌游店,跃至应用商店,并悄然兴起的一类社交游戏。而且根据目前的应用下载与投资热度来看,似乎大有复制“狼人杀”增长的趋势。

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

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

什么是剧本杀

剧本杀确实很火。但是,可能没玩过的人还是一头雾水,什么是“剧本杀”?

“剧本杀”源自线下游戏“谋杀之谜”,这是一类 LARP (实时角色扮演)游戏。在剧情的推动下,几个玩家会共同经历一段故事,每个玩家都会扮演故事中的一个角色,而每个故事背后都隐藏着一个秘密或一个凶手。玩家们通过互动交流、探讨、交换线索,共同揭开这个秘密或发现凶手。

这个游戏的“线上化”与狼人杀相似,都是实时语音技术发展驱动的创新场景。玩家可以不用再去线下桌游店组局,随时随地在线上就可以开局玩起来。在游戏过程中,玩家可以通过语音群聊,将自己得到的线索公开给所有玩家,也可以像交换情报一样,通过私聊转述给个别人。

业务拆解:如何实现“剧本杀”

剧本杀与狼人杀非常相似,都是社交游戏。不同的是,狼人杀游戏全程都处于群聊模式,而剧本杀有时会需要小范围私聊。

在剧本杀游戏过程中,会包括几个环节:

  • 探索阶段:阅读剧本,获取线索

  • 搜证环节:群聊、私聊交换线索

  • 投票阶段:你懂的

其中可能会出现多次探索、搜证,这完全取决于剧本内容的复杂程度。由于剧本属于内容范畴,就算再复杂,也只是玩家多用到几次搜证、投票、私聊功能而已。如果我们玩一个最简单的剧本,而且会用到所有功能,那么游戏流程基本是这样的:

这个产品的功能并不十分复杂,主要包括:

  • 业务系统:用于控制剧本进程、游戏流程、投票等。

  • 消息系统:用于发送文字消息。

  • 语音群聊:所有玩家可以在同一个语音聊天室中对话。

  • 语音私聊:在游戏过程中,两个玩家可以脱离群聊,进行一对一语音通话。

如何快速实现?

如果按照最基本的剧本杀功能来开发的话,App的架构如下图所示:

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

接口调用逻辑:

  1. 第一步加入游戏房间时,调用JoinChannel加入频道(语音群聊)

  2. 加入房间后设置ChannelProfile为0,进入通信模式

  3. 加入muteLocalAudioStream与muteAllRemoteAudioStreams以实现麦克风静音与扬声器静音功能

  4. 搜证环节,通过LeaveChannel与JoinChannel以及不同的ChannelName实现玩家在群聊与私聊之间的切换

  5. 游戏结束时,调用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%时,仍然能够通话。