【天天飞车】版本更新机制

发表于2015-05-05
评论0 1.25w浏览

天天飞车具有版本兼容的特性,游戏内不支持强制升级。那么,为什么选择版本兼容?如何支持版本兼容?版本兼容的优缺点有哪些?如何进行整个客户端版本的更新?安装包大小如何控制?一些常规的配置文件如何更新?下面简单介绍下天飞如何实现以上几点问题,以求抛砖引玉,敬请大伙拍砖。

 

一、版本兼容

1、选择版本兼容的考虑

天飞是相对轻度的手机游戏,并且考虑到强制升级可能造成玩家流失,所以游戏内不支持强制升级。这样就要求天飞支持版本兼容,即保证旧的客户端可以登录最新的服务器。

 

2、优缺点

飞选择版本兼容的优点显而易见。但也存在明显的缺点,有些客户端bug,比如逻辑性问题,只能通过重新发布版本修复。

 

二、整个客户端的更新

玩家在天飞官网下载新的客户端,然后手动安装。

 

1、更新策略

不同情况更新等级有不同要求。有些情况要求玩家必须进行升级才能继续游戏;有些情况提示玩家可以进行升级,不进行升级也可以继续游戏。

 

2、引导玩家更新客户端的时机

登录游戏服务器时,由后台根据版本号决定客户端是否需要进行升级,通常强制要求升级;游戏提示版本兼容时,比如赛车技能最大ID较低、商城物品配置较低,提示玩家进行升级,通常不要求玩家强制升级。

 

 

三、安装包大小

1、音频文件采用ogg格式

音频文件打包时采用ogg格式,在游戏运行时转为wav格式。以背景音乐为例,采用ogg只有5.14Mwav格式有24.6M,压缩率接近80%

 

2、贴图采用TinyPng

美术首先利用工具进行png贴图的合并,然后再进行压缩,最终一个像素点占用8bits,减小了贴图的大小。

 

3IOS字库文件采用ios系统字库

飞开发初期,Unity不支持中文字体的渲染,所以项目组采用FreeType封装了一套中文字体渲染插件。并为Android系统定制了一套字库,字库文件约7.4M。而IOS系统字库STHeitiTC-Light满足中文字库的要求,同时为了减少安装包大小,所以IOS下直接采用了IOS系统字库STHeitiTC-Light

 

四、常规配置文件的更新

配置文件的拉取有两种方式,较小的配置通过CS协议拉取,较大的配置通过CDN下载。

 

1、通过CDN下载

1)下载机制

登录游戏时,客户端上报文件版本号,后台根据上报的版本号确定需要更新的文件列表, 前端根据列表去CDN下载文件。CDN下载只在登录游戏时进行。

 

2)如何响应更新

因为CDN下载只在登录游戏时进行,玩家在游戏内不能实时拉取更新的文件,目前引导玩家重新登录游戏。

 

3CDN下载存在问题

优化之前天飞在登录时需要从CDN服务器下载commodity.bytesVehicleParam.bytesChinese.txtAndroidAdaptCfg.bytesRacerLevel.bytes30余个bytes文件,耗时较长且下载消耗的流量较多,弱网络下易拉取失败,影响玩家体验。

 

4)优化

采用大文件机制,将需要从CDN下载的所有文件(>= 3.4M)压缩打包成一个bytes文件(< 200k),下载后解压缩,并存在相应的小文件中。

 

5CDN大文件打包优缺点分析

l        优点

Ø        减少游戏登录时下载CDN文件的时间;

Ø        减少游戏玩家每次更新CDN文件所需的流量;

Ø        大文件版本号由服务器统一管理,并且可在大文件内部管理小文件的版本号。

l        缺点

Ø        每个bytes小文件需要更新时都需要重新打包大文件。

 

2、通过CS协议拉取

1)拉取时机

全局配置在进入大厅时拉取;逻辑模块内配置在进入该游戏模块时拉取;

 

2)如何响应更新

玩家登录游戏后若配置进行了更新,全局配置会在玩家退出单局进入大厅时重新拉取;模块内配置会根据不同的业务需求,决定是否在进入该模块时重新拉取;

单局开局时如果后台检查到配置更新,会告知客户端配置更新导致开局失败,客户端会进行配置拉取或者引导玩家重新登录游戏。

 

3)存在的问题

全局配置通过任务的方式依次拉取,如果拉取失败会重新进行拉取,弱网络下常出现重新拉取,网络很差时甚至一直卡在某个拉取环节,影响玩家体验。

 

4)优化

将全局配置通任务的方式通过一个全局的CS协议拉取下来,减少了拉取次数,减小了弱网络下出问题的可能性。

 

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引