融云 Unity SDK 升级,专注游戏场景,更好社交体验(融云im即时通讯)

网友投稿 324 2022-10-12


融云 Unity SDK 升级,专注游戏场景,更好社交体验(融云im即时通讯)

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

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

移动游戏在人们的线上消费方面势头强劲,根据 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 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 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 userIds, RCRTCMediaType type)

⑭ 取消订阅用户

// 取消订阅⽤户 int Unsubscribe(String userId, RCRTCMediaType type); int Unsubscribe(IList userIds, RCRTCMediaType type);

⑮ 离开房间

Engine.LeaveRoom();


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring实现内置监听器
下一篇:EasyNVR v4.2.3版升级到v5.1.0,设备通道状态离线是什么原因?(easynvr免费版)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~