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)审核时使用,其意义有: 审核版本对外网用户不可见,即外网低版本不会升级到高版本的审核版本 渠道商体验时不会被回退到外网最高版本 注意事项:
灰度版本即在版本发布时,先选取小规模用户测试新版本,验证后再全量发布。 采用区服策略:用区服id来判断用户是否是灰度用户,客户端上报用户选择的区服id,配置的区服id就是灰度条件,在这个集合内就是灰度用户。 在经历登录前更新后,玩家选择灰度服上线,再进行一次更新检查,请求信息时带上区服id,用户openID,得到灰度版本线信息,再选择更新
启动升级:游戏启动第一个场景,登录之前,主要的升级阶段。 灰度升级:登录(选区)之后,辅助升级阶段,经过此升级,指定灰度用户可以使用特定的游戏版本
1.VersionCode.bytes文件,在每次自动转表的时候自增1(构建版本强制要求使用自动转表工具)
2.首包拷贝的含义解释:安装包第一次安装时,资源都在应用空间,需要将资源拷贝到用户空间
3. 这里主要拷贝的是打好的AssetBundle。VersionCode在新安装的版本中间是一个不重复的数值(如1340,说明构建了1340次)
4.在第一次安装时,CurrentVersion的文件是不存在的,而LatestVersion是以Resources.Load的方式读的Assets/Resource下的文件
5.所以CurrentVersion和LatestVersion不一致而导致首包拷贝,拷贝结束后保存了一份CurrentVersion与LatestVersion一致
进行GCloudCheckVersion,灰度检查后如果选择更新,拉回到GCloudUpdateVersion,再带上区服id,用户openID进行灰度更新
● 区服导航:区服导航,树状结构 ● 区服状态:区服的运行状态(维护、良好、拥挤、爆满等) ● 区服标签:区服的一些标签(新、热、荐等) 区服状态上报:据服务器运行时在线人数和最大支持在线数动态调整区服状态。 规则定义 角色信息上报(Acc服务):要显示为玩家最近登录的区服和角色信息
GCloudTdirSelector
public enum SvrRegion
{
ANDROID_WX = 1,
IOS_WX,
ANDROID_QQ,
IOS_QQ,
IOS_GUEST,
TEST,
}
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. 事件监听
_connector.ConnectEvent += apolloConnectCallback;
_connector.RelayConnectEvent += apolloReconnectCallback;
_connector.DisconnectEvent += apolloDisconnectCallback;
_connector.StateChangedEvent += OnStateChanged;