写点什么

融云 Unity SDK 升级,专注游戏场景,更好社交体验

  • 2022 年 4 月 13 日
  • 本文字数:2814 字

    阅读完需:约 9 分钟

游戏已经不单单是一种娱乐方式。关注【融云全球互联网通信云】了解更多


作为离元宇宙最近的赛道,游戏不仅是各种沉浸式体验类技术落地融合的首发场景,也是创作者经济爆发的热土。


移动游戏在人们的线上消费方面势头强劲,根据 data.ai 的《2022 年移动游戏报告》,2021 年移动游戏用户支出达到了 1,160 亿美元,并保持相当的增速。2022 年第一季度约为 220 亿美元,相较 2020 年第一季度增长了 42%。

(移动游戏用户支出持续增长)


与消费者趋势相吻合,游戏下载量稳居第一,其中,休闲游戏的表现尤为惊人,游戏玩家下载休闲游戏的数量是 2018 年的 5.5 倍左右。


游戏产品在细分品类上愈加多元化发展,创新型玩法与垂直赛道的机会开始增多。而 Unity 是游戏开发者无法绕开的入局钥匙。


游戏和社交深度融合发展的当下,游戏社交化作为提高游戏粘性、提升用户留存的重要手段被广泛应用于所有游戏类别中。


近日,融云 Unity SDK5.1 正式发布,专注游戏场景,方便开发者快速在游戏中接入即时通讯和实时音视频功能。


融云 Unity SDK 介绍及适用范围


融云 Unity SDK 特点:


① 跨平台,一次编写多平台运行。节省人力成本,便于维护。


② 支持 Raw Image 和 MeshRender 渲染方式,可以自由选择在 UGUI 或任意 3D 场景中进行视频渲染。


③ 简单清晰的接口设计,30 秒即可快速接入,接入代码不超过 15 行。


④ 版本兼容性强,支持绝大部分 Unity 版本。


 多场景支持,基于个性化的场景,选择适用的 SDK,音视频、纯音频 SDK 任你选择。


适用游戏及其特点:


麻将、五子棋、跳棋、斗兽棋等几乎所有棋牌类游戏,一站到底、桌球、连连看等几乎所有休闲益智类游戏,均可通过接入融云 SDK 获得通信能力加持,为玩家提供高质量、低延迟的交互体验。它们在通信方面的场景特点为:


① 游戏时只有一个 RTC 房间,所有人员都在同一个房间内; 


② 玩家默认都订阅其他人的音频;

 

③ 玩家不能控制其他玩家的麦克风开关,只能关闭自己的麦克风;


④ 玩家可以选择性收听某些玩家的音频,对于不友善的音频可以选择针对性屏蔽。


游戏中的通信方式:


① IM:单聊、聊天室;文字消息、表情、emoji 等。在游戏过程中的发送消息逻辑为:

  • 匹配到对手之后,将本方玩家和对方玩家都加入到同一个聊天室内;

  • 游戏中,聊天室处于保活状态,游戏结束后将本方玩家和对方玩家都踢出房间,且销毁房间(若直接再来一局则不算游戏结束)。

② RTC:1V1 语音;随机匹配,邀请好友等。游戏过程中的语音逻辑为: 

  • 匹配到对手后,将本方玩家和对方玩家加入同⼀个 RTC 房间,默认打开麦克风和听筒/扬声器;

  • 本方玩家可以关闭自己的⻨克风,对方将听不到本方发言;

  • 本方玩家可以关闭自己的听筒/扬声器,自己将听不到对方的发言;

  • 游戏结束后,默认通话结束,将本方玩家和对方玩家都踢出房间,且销毁房间(若直接再来一局则不算游戏结束)。 


融云 Unity SDK 接入方式及相关接口


融云 Unity SDK 接入方式:


① 直接集成融云的 Unity RTCLib SDK、 Unity IMLib SDK 到游戏项目中,Android 和 iOS 可以直接调用 SDK 封装的 Unity 的接口实现游戏内消息、语音需求;


② 分别集成融云的 iOS 端和 Android 端的原生 IMLib SDK、 RTCLib SDK,在实现游戏内消息、语音时,iOS 端和 Android 端需要分别调用各自的 IMLib SDK、RTCLib SDK 接口来实现。

涉及接口:


① 创建聊天室

如果聊天室未创建,SDK 会创建聊天室并加入,如果已创建,则直接加入。

// 创建聊天室String chatRoomId = "聊天室 ID";int defMessageCount = 50;RCIMClient.Instance.JoinChatRoom(chatRoomId, (RCErrorCode code) => {    // code : 错误码}, defMessageCount);
复制代码


② 加入已创建的聊天室

// 加入聊天室String chatroomId = "聊天室 ID";int defMessageCount = 50;RCIMClient.Instance.JoinExistChatRoom(chatroomId, (RCErrorCode code) => {    // code : 错误码}, defMessageCount);
复制代码


③ 获取聊天室历史消息

// 获取聊天室历史消息var conversationType = RCConversationType.ChatRoom;int lastMessageId = -1;final int count = 10;final String targetId = "聊天室 ID";final long recordTime = 0;// 首先加载本地聊天室消息var localMsgList = await RCIMClient.Instance.GetHistoryMessages(conversationType, targetId, lastMessageId, count);if (localMsgList != null) {    // 展示本地聊天室消息    recordTime = localMsgList.Last().SentTime;}// 本地消息加载完毕,再获取远端服务器消息RCIMClient.Instance.GetChatRoomHistoryMessages(targetId, recordTime, count, true,    (code, chatRoomHistoryMessages) => {    // code: 状态码,0 成功    // chatRoomHistoryMessages: 聊天室远端历史消息});
复制代码


④ 获取聊天室属性

// 获取聊天室属性String chatRoomId = "聊天室 ID";RCIMClient.Instance.GetChatRoomAllEntries(chatRoomId,    (RCErrorCode code, IDictionary<String, String> entries) {    // entries: 聊天室属性    // code: 状态码,0 成功});
复制代码


⑤ 设置聊天室属性

// 设置聊天室属性String chatRoomId = "聊天室 ID";String key = "name";String value = "融融";bool sendNotification = true;bool isAutoDel = false;String notificationExtra = "通知消息扩展";RCIMClient.Instance.ForceSetChatRoomEntry(chatRoomId, key, value, sendNotification, isAutoDel, notificationExtra, (code) => {    // code: 状态码,0 成功});
复制代码


⑥ 删除聊天室属性

// 订阅⽤户 int Subscribe(String userId, RCRTCMediaType type); int Subscribe(IList<String> userIds, RCRTCMediaType type);
复制代码


⑦ 退出聊天室属性

// 退出聊天室String chatroomId = "聊天室 ID";RCIMClient.Instance.QuitChatRoom(chatroomId, (RCErrorCode code) => {    // code: 错误码});
复制代码


⑧ 加入房间

// 加⼊RTC房间 RCRTCRoomSetup setup = RCRTCRoomSetup.Builder.Create().WithRole(RCRTCRole.LIVE_BROADCASTER).Build(); Engine.JoinRoom(RoomId, setup);
复制代码


⑨ 麦克风控制

主播可以在房间内打开或关闭本端麦克风

// 是否启⽤⻨克⻛ int EnableMicrophone(bool enable);
复制代码


⑩ 扬声器控制

主播可以在房间切换声音的播放设置,扬声器或听筒。接入外设时调用此方法,如蓝牙音箱等返回 -1。

// 是否启⽤扬声器 int EnableSpeaker(bool enable);
复制代码


⑪ 发布本地音频

加入 RTC 房间成功后,发布本地音频

Engine.Publish(RCRTCMediaType.AUDIO);
复制代码


⑫ 取消发布本地音频

Engine.Unpublish(RCRTCMediaType.AUDIO);
复制代码


⑬ 订阅用户

// 订阅⽤户 int Subscribe(String userId, RCRTCMediaType type); int Subscribe(IList<String> userIds, RCRTCMediaType type);
复制代码


⑭ 取消订阅用户

// 取消订阅⽤户 int Unsubscribe(String userId, RCRTCMediaType type); int Unsubscribe(IList<String> userIds, RCRTCMediaType type);
复制代码


⑮ 离开房间

Engine.LeaveRoom();
复制代码


用户头像

安全、可靠的全球互联网通信云 2021.01.26 加入

关注【融云全球互联网通信云】,了解更多~

评论

发布
暂无评论
融云 Unity SDK 升级,专注游戏场景,更好社交体验_融云 RongCloud_InfoQ写作平台