前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Unity3d:GCloud SDK接入记录,APK更新,资源更新,区服导航,网络连接

Unity3d:GCloud SDK接入记录,APK更新,资源更新,区服导航,网络连接

作者头像
立羽
发布2023-08-24 15:28:32
1470
发布2023-08-24 15:28:32
举报
文章被收录于专栏:Unity3d程序开发Unity3d程序开发

启动更新

版本线

在这里插入图片描述
在这里插入图片描述

app版本1,只会更新app版本1下的资源版本线 程序更新只走程序版本线,例如 2.0.0.0 的程序版本检查更新时,服务器将返回 3.0.0.0 的可选更新 资源更新只走所在程序版本下的资源线,例如 2.1.0.0 的资源版本检查更新时,服务器将返回 2.3.0.0 的强制更新,而不会返回 3.X 的版本,尽管 3.X 的版本比 2.1.0.0 高

强制更新

如果app版本号未找到或者app当前版本为普通不可用,走强制更新

可选更新

举例:用户自定义json定义可支持版本,例如手机上app版本是4.7.0.282,访问到服务器上最新版本是8.0.0.0,在optionalUpdateVersions包含4.7.0.282执行可选

在这里插入图片描述
在这里插入图片描述

审核版本

审核版本用于新版本提交渠道商(如 Apple App Store)审核时使用,其意义有: 审核版本对外网用户不可见,即外网低版本不会升级到高版本的审核版本 渠道商体验时不会被回退到外网最高版本 注意事项:

  1. 给AppStore是审核版本,启动更新时不会在正常外网正在运营版本找版本线
  2. 过了审核,在GCloud后台中,可以选择把审核版本变为正式版本,后续更新审核版本走运营版本线

灰度版本

灰度版本即在版本发布时,先选取小规模用户测试新版本,验证后再全量发布。 采用区服策略:用区服id来判断用户是否是灰度用户,客户端上报用户选择的区服id,配置的区服id就是灰度条件,在这个集合内就是灰度用户。 在经历登录前更新后,玩家选择灰度服上线,再进行一次更新检查,请求信息时带上区服id,用户openID,得到灰度版本线信息,再选择更新

客户端更新流程

在这里插入图片描述
在这里插入图片描述

启动升级:游戏启动第一个场景,登录之前,主要的升级阶段。 灰度升级:登录(选区)之后,辅助升级阶段,经过此升级,指定灰度用户可以使用特定的游戏版本

启动更新逻辑

  1. 首包拷贝:streamingAssetsPath目录移动到persistentDataPath,要移动的文件根据ABFileRelativePaths确定。 Q:什么时候触发首包拷贝 A:
代码语言:javascript
复制
1.VersionCode.bytes文件,在每次自动转表的时候自增1(构建版本强制要求使用自动转表工具)
2.首包拷贝的含义解释:安装包第一次安装时,资源都在应用空间,需要将资源拷贝到用户空间
3. 这里主要拷贝的是打好的AssetBundle。VersionCode在新安装的版本中间是一个不重复的数值(如1340,说明构建了1340次)
4.在第一次安装时,CurrentVersion的文件是不存在的,而LatestVersion是以Resources.Load的方式读的Assets/Resource下的文件
5.所以CurrentVersion和LatestVersion不一致而导致首包拷贝,拷贝结束后保存了一份CurrentVersion与LatestVersion一致
  1. 进行登录前app更新,为普通更新GCloudUpdateVersion。更新时要带上当前app版本号,为IIPSUpdateConfig.GetVersionString()(),编辑器下写死一个app版本测试,移动端从apk或者ipa里配置读版本号,这样每次更新了app,确保版本号变动了
  2. GCloudUpdateVersion中OnNoticeNewVersionInfo得到版本信息。强制或者可选,可选更新规则 按顺序依次判定 当前比服务器低,强制更新为true optionalUpdateVersions,可选更新列表包含当前app版本,为可选更新 无论配置了什么类型的更新,存在于ignoreUpdateVersions中的版本忽略更新
  3. 如果ios端跳转app链接,如果apk端下载完整或者增量apk包,下载完后拉起安装InstallApk
  4. GCloudUpdateVersion流程结束,进入资源更新流程GCloudUpdateResource。按照app更新后的app版本号,(如果未选择更新,是之前老app版本号;更新后是新的版本号),再加上资源版号IIPSUpdateConfig.StrResVersion(这个文件首次安装没有,会随着第一次更新下载后,更新文件,默认第一次请求会以"0.0.1.0"请求)
  5. GCloudUpdateResource中OnNoticeNewVersionInfo,如果GCloud后台用户描述字符串包含OptionalUpdate,为可选更新。选择更新后,下载zip,然后会解压,GCloud内部实现
  6. GCloudUpdateResource流程结束,进入到用户选服登录
  7. 如果不是灰度服,直接进入游戏。如果是灰度服

进行GCloudCheckVersion,灰度检查后如果选择更新,拉回到GCloudUpdateVersion,再带上区服id,用户openID进行灰度更新

区服导航

● 区服导航:区服导航,树状结构 ● 区服状态:区服的运行状态(维护、良好、拥挤、爆满等) ● 区服标签:区服的一些标签(新、热、荐等) 区服状态上报:据服务器运行时在线人数和最大支持在线数动态调整区服状态。 规则定义 角色信息上报(Acc服务):要显示为玩家最近登录的区服和角色信息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

流程

GCloudTdirSelector

  1. 初始化配置,分为debug,preview,release3种服,每种服还分平台SvrRegion,初始化时还要带上用户OpenID,为了拉取到每个服上,角色信息
代码语言:javascript
复制
    public enum SvrRegion
    {
        ANDROID_WX = 1,
        IOS_WX,
        ANDROID_QQ,
        IOS_QQ,
        IOS_GUEST,
        TEST,
    }
  1. 拉取树RequestTdirAsync,得到每个叶子节点信息,即服务器信息

网络连接

  1. 初始化
代码语言:javascript
复制
ConnectorInitInfo connectInfo = new ConnectorInitInfo();
            connectInfo.MaxBufferSize = 102400;//(GCloudSDK2.0.7 or higher, it is recommended to use MaxSendMessageSize and MaxRecvMessageSize respectively)
            connectInfo.MaxSendMessageSize = 102400;
            connectInfo.MaxRecvMessageSize = 102400;
            connectInfo.EncMethod = EncryptMethod.Aes;
            connectInfo.KeyMakingMethod = KeyMaking.Server;
            //connectInfo.DH = "RawDH";
            connectInfo.Timeout = 10;
            connectInfo.ClearBufferWhenReconnect = false;
            _connector.Initialize(connectInfo);

Q:MaxBufferSize为什么设置这么大 A:如果网络接收是放在游戏主线程中;在登录进入场景时,由于此时帧率降低(Update的执行频率下降),且登录收发网络信息较多(造成网络缓冲区一直满阻塞,无法继续写入) 2. 事件监听

代码语言:javascript
复制
_connector.ConnectEvent += apolloConnectCallback;
               _connector.RelayConnectEvent += apolloReconnectCallback;
               _connector.DisconnectEvent += apolloDisconnectCallback;
               _connector.StateChangedEvent += OnStateChanged;
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 启动更新
    • 版本线
      • 强制更新
        • 可选更新
          • 审核版本
            • 灰度版本
              • 客户端更新流程
                • 启动更新逻辑
                • 区服导航
                  • 流程
                  • 网络连接
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档