一种手机游戏安装快速启动方法

文档序号:6630017阅读:304来源:国知局
一种手机游戏安装快速启动方法
【专利摘要】本发明公开了一种手机游戏安装快速启动方法,通过二进制差分补丁加标准版引擎二进制文件,合成每个游戏所需游戏引擎,而无需在每个游戏下载时各带一份完整的引擎二进制文件;无需下载整个游戏安装包,仅下载游戏的第一个资源分段包即能进入游戏;通过函数注入的方式重定向了游戏资源加载方法,可在本地与服务端请求资源时自动切换。本发明可以点击即玩,减少玩家等待手机游戏下载和安装的时间,保证游戏的高性能。
【专利说明】一种手机游戏安装快速启动方法

【技术领域】
[0001]本发明涉及游戏开发【技术领域】,具体是一种手机游戏安装快速启动方法。

【背景技术】
[0002]手机游戏分原生游戏和HTML5游戏两种技术实现方式。目前手机游戏领域几乎100%的收入都来自原生游戏。HTML5游戏虽然天生具有免安装、分段加载的功能,但由于其运行在手机浏览器之内,性能极度受限,目前无法实现和原生游戏一样的高性能、复杂的游戏内容。这点是行业公认的。本发明只针对手机原生游戏,在保证原生游戏性能不变的情况下,实现了 HTML5游戏免安装、分段加载的优点。
[0003]手机原生游戏当前的安装启动方式是,需要先从手机应用商店下载完整的游戏安装包。用户下载到游戏安装包之后,需要进入手机操作系统默认的安装流程,手机操作系统会在手机屏幕上弹出对话框,询问用户是否确认要安装这个游戏、是否接受该游戏所需的权限,比如查看短信、通讯录、查看手机串号等,如果用户允许该游戏获得这些权限,则点击确认安装,安装完成后,手机操作系统进一步弹出对话框询问用户,是否要现在立刻启动游戏,还是关闭掉等以后再启动。整个过程需要用户点击手机屏幕3?4次。
[0004]手机原生游戏安装包体积和下载时间。经过统计,2014年7月21日当天,360手机助手前100名游戏的安装包体积平均为49.77兆字节,腾讯应用宝前100名游戏的安装包体积平均为36.25兆字节,所以在3G环境下,用户需要等待大约2分钟完成下载过程;在WIFI无线网络环境下,用户需要等待大约4分钟完成下载过程。
[0005]游戏内容分段下载和加载的方式,在桌面电脑上的客户端游戏、以及桌面电脑上的网页游戏领域被广泛使用,但截止2010年9月份,在手机游戏领域还很少看到这样的应用方式。目前的分段下载方案也是由各游戏的研发商自行手动切分出资源分段包。
[0006]本发明的使用场景和目前【背景技术】的区别是:(I)将分段下载技术应用于大量手机游戏,而不是像现阶段的游戏研发商手工分段方式一样仅适合于自家研发的单款游戏;(2)不需要各游戏的研发商自己做资源分段,而是由本发明方案自动完成。


【发明内容】

[0007]本发明的目的在于提供一种免安装过程、下载和启动时间短的手机游戏安装快速启动方法,以解决上述【背景技术】中提出的问题。
[0008]为实现上述目的,本发明提供如下技术方案:
一种手机游戏安装快速启动方法,包括以下步骤:
(1)通过二进制差分方式合成每个游戏所需的定制版的游戏引擎;当用户从手机界面打开游戏时,首先检测标准版的游戏引擎是否存在,如果不存在则首先下载标准版引擎,如果存在或已下载完毕,则进一步下载游戏定制版引擎的二进制差分补丁,进而从补丁和标准版引擎做二进制差分合成,合出游戏定制版引擎的完整二进制文件;
(2)下载游戏的第一个资源分段包即能进入游戏;资源分段包由自动化拆分工具完成拆分之后,部署到服务器上;第一个资源分段包包括游戏首个场景所需的配置文件、图片与音乐等资源,保证玩家顺利进入第一个游戏场景进行游戏;
(3)绕过手机操作系统默认的安装确认步骤;下载的手机游戏不在直接运行于手机操作系统之上,而是由本发明方案接管了手机操作系统对原生手机游戏生命周期的控制,包括游戏安装、游戏启动、游戏窗口的创建和销毁、游戏退出和游戏卸载;
(4)代码加载;通过C++编程语言开发实现的游戏逻辑,在上述步骤(I)的时候已经通过二进制差分完成,通过Java、Lua> JavaScript等其他编程语言开发实现的游戏逻辑,贝U在编译阶段转为字节码之后,作为资源加载运行;
(5)资源加载;通过函数注入的方式重定向了游戏资源加载方法,当在手机上找不到所需资源时,则改从服务端寻找并下载对应的分段包。
[0009]作为本发明进一步的方案:步骤(2)中的资源分段包是由工具自动切割完成,不需要研发商手工分段,而且是应用在手机游戏上。
[0010]作为本发明进一步的方案:步骤(3)中的手机游指的是原生手机游戏,而非依赖于浏览器运行的手机网页游戏。
[0011]与现有技术相比,本发明的有益效果是:本发明手机游戏免安装快速启动方法构思巧妙、合理,运行稳定可靠,对于游戏玩家,缩短了下载等待时间即可进入游戏内容,免去了手机操作系统要求的安装确认和权限确认的步骤,并且保证运行于本发明之上的游戏具有100%手机原生游戏的高性能;对于游戏开发商,不需要自己手动处理复杂繁琐的资源分段工作,只需要半人天以内的接入工作,即可使安装包体积缩小90%左右,从而极大提高了游戏的下载激活转化率,最终提高游戏收入。

【专利附图】

【附图说明】
[0012]图1是本发明实施例的软件架构图;
图2是游戏进程和宿主进程之间相互调用、切换关系图;
图3是退出游戏流程图;
图4是本发明的结构流程图。

【具体实施方式】
[0013]下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0014]本发明实施例,在产品形态上体现为一个软件中间件。宿主程序可以通过集成这个实施例的软件中间件,来达成快速安装启动手机游戏的结果。
[0015]请参阅图1-图4,一种手机游戏安装快速启动方法,具体实现步骤包括:
1.游戏程序的生命周期
本实施例接管了游戏的生命周期,进而追求和操作系统一致的方式和用户体验。因此本方案改造后的手机游戏,对于用户而言跟一般的手机应用/游戏一样,除了增加按手机的返回按钮可以退出游戏之外,其他状态切换行为并没有发生改变。但是由于本实施方案为一个软件中间件,需要通过宿主程序的调用才能工作,因此需要和宿主的生命周期协同工作。
[0016]游戏进程和宿主进程之间相互调用、切换关系如图2所示。
[0017]1.1初始化
宿主在启动游戏之前,需要先对本实施例进行初始化,并获取游戏列表呈现给用户,让用户选择要启动的游戏。
[0018](I)初始化 CocosPlay.1nit(
Context context, //初始化的上下文实例
String cAppID) //我方分配给宿主的身边识别编号
(2)获取游戏列表
CocosPlay.requestGameInfoList(
int pagelndex, //游戏列表的页面索引编号
int pageSize, //游戏列表的每页提供多少个游戏数量
RequestGameInfoListListener listener) // 请求列表监听者
1.2启动游戏
宿主程序可以自己定义如何让用户点击进入游戏,比如在游戏详情页面的按钮,或者通过游戏列表直接进入,或者是点击宿主界面上的一个广告插图,或者在桌面上建立一个快捷图标让用户从桌面进入,这由宿主在集成本方案中间件是自行决定。当用户点击某个游戏时,宿主程序需要调用一个接口,把要启动的游戏包名等参数传递给本实施例,然后由中间件启动游戏。
[0019]启动游戏的接口伪代码如下:
CocosPlay.runGame(
Activity activity, // 当前窗口句柄
String packageName, // 游戏包名
Drawable bglmage, //游戏加载界面背景图
Music bgMusic,//游戏加载界面的背景音乐
Listener listener) //设置游戏过程中状态切换事件的监听者
1.3退出游戏
本实施例中,用户退出游戏有两种方法。
[0020]第一种是和默认的手机游戏退出方式一样,先按HOME键把游戏退到后台挂起,然后当用户从后台进程列表里手动销毁游戏进程,或者系统内存不够时后台游戏进程被系统自动销毁;
第二种是本实施例新增的。当用户按下手机上的返回按钮时,手机屏幕上会弹出“是否退出游戏? ”的对话框,如果用户选否,则继续游戏;如果用户选是,则退出游戏。这种新增的方法流程如图3所示:
1.4卸载游戏
本实施例的游戏绕过了操作系统的软件安装过程,因此卸载过程也无需经过操作系统的机制,只是删除已下载的游戏资源和桌面快捷方式。
[0021]宿主可调用本实施例的几个接口来实现卸载游戏,接口函数如下:
CocosPlay.clearGameCache (String packageName) // 清空一个游戏缓存
CocosPlay.cIearGameCache (String [] packageNameList) // 清空多个游戏缓存
CocosPlay.clearAlIGameCache () // 清空所有游戏缓存
2.游戏启动流程
2.1生成游戏所需的引擎二进制文件
当用户从宿主程序的界面第一次启动游戏,比如启动游戏A时,嵌入在宿主程序的本方案SDK (软件中间件)会首先检测标准版的游戏引擎二进制是否存在,如果不存在则首先下载标准版引擎的二进制文件,如果已存在、或者下载完毕,则进一步下载游戏A所需的定制版游戏引擎的二进制差分补丁,进而从补丁和标准版引擎做二进制差分合成,合出游戏A所需的定制版引擎的完整二进制文件。
[0022]当用户第二次启动另一个游戏,比如游戏B时,标准版的游戏引擎二进制已经于上一步启动游戏A时下载完成,因此只需要下载游戏B所需的定制版游戏引擎的二进制差分补丁。从该宿主启动的所有后续游戏都仅需要下载补丁,而不需要下载完整的游戏引擎。
[0023]通过这一方法,可以满足即使不同游戏对游戏引擎有所修改,但仍然可以复用同一份标准版弓I擎,达到减小下载内容尺寸的目的。
[0024]通常标准版游戏引擎在4兆字节左右;根据游戏对引擎修改量的差异,补丁会在0.1兆字节到几兆字节不等,因游戏而不同。例如某个游戏所带的的定制版引擎是4.5兆字节,而通过本方案改造之后,如果该游戏不是宿主上启动的第一个游戏,则用户只需要下载其差分补丁 0.5兆字节,光引擎这块相比原来体积缩小了 89%
2.2加载场景资源分段包
2.2.1资源分段包格式
游戏的原始封包根据操作系统平台不同而已。以比较典型的安卓系统为例,一个手机游戏安装包的典型内部格式是这样的:com.company, game // 游戏安装包
一 assets//图片、音乐、脚本字节码等资源
1-1ib//已编译好的游戏引擎二进制文件
1- res//通过系统加载的资源,比如游戏图标
一 classes, dex//已编译好的Java字节码
一 AndroidManifest.xml //安装包的描述文件用本发明改造后的资源分段包格式则是这样的: com.company, game (游戏包名作为目录名)
一 package_00.zip//进入游戏的首个分段包,包含了上文的lib, res,
classes, dex, AndroidManifest.xml以及从assets目录里剥离出来的首个游戏场景所需加载的资源
一 package_01.zip//第一个资源分段包
一 package_02.zip//第二个场景分段包
—......一 package_N.zip//第N个场景分段包一 manifest, xml //场景描述文件一 packages.md5//分段包MD5校验信息文件
原assets目录中的图片、音乐、脚本字节码等资源,被本实施例的分段打包工具根据资源的加载时间戳和体积大小,自动地划分为(Tn组资源。其中的第O组资源,加上原包中除了 assets以外的所有文件,组成package_00.zip,这是启动游戏所必须下载的第一个分段包。后面的Ol?η组资源,则对应生成package_0l"n号分段包。
[0025]2.2.2重定向资源加载
游戏加载资源的方法,最终会落实到游戏引擎在某几个函数实现。本发明采用函数注入的方式,修改掉这几个函数实现,重定向资源加载为SD卡上的路径,以配合从服务端下载来的资源分段包。当在手机上找不到所需资源时,则改从服务端请求并下载对应的分段包。
[0026]2.2.3下载和加载资源分段包 (I)静默下载场景包
本发明改造过的手机游戏在第一次启动时,如上文所述加载package_00.zip进入游戏内容之后,会在后台的下载线程里按顺序静默下载后续资源分段包package_Ofn.zip。用户不需要下载游戏所有资源即可进入游戏,进而边玩边下载。
[0027](2)异常处理
在网络环境差的情况下,可能出现当前申请的资源所在的分段包还未被下载的情况。此时游戏的主线程会被暂停挂起,手机屏幕上显示全屏的下载进度界面,待所需资源被下载完成后,才恢复游戏主线程,继续游戏。
[0028]3.游戏更新
(1)游戏内小版本更新,即只更新资源,不更新C++二进制文件和Java字节码的情况下,更新逻辑和原游戏一致
(2)游戏大版本更新,即需要更新C++二进制文件和Java字节码的情况下,需要游戏开发商提交新的游戏安装包到本实施例服务器。由本实施例自动化工具对游戏安装包进行资源拆分,生成若干场景资源分段包,部署到分发服务器上。当用户的游戏客户端进入游戏后,本实施例将旧版本的所有资源删除,重新下载新版本的游戏资源。
[0029]( 3 )用户启动游戏手机客户端之后,先从服务器获取当前游戏版本号,与本地游戏版本比较。如果大小版本号均相同,则进入游戏;如果大版本号相同、仅小版本号不同,则进入小版本更新流程,仅下载有更新或新增游戏资源;如果大版本号不同,则本实施例会清空缓存内该游戏相关的所有资源,下载新版本游戏,再进入游戏。
[0030]对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。
[0031]此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
【权利要求】
1.一种手机游戏安装快速启动方法,其特征在于,包括以下步骤: (1)通过二进制差分方式合成每个游戏所需的定制版的游戏引擎;当用户从手机界面打开游戏时,首先检测标准版的游戏引擎是否存在,如果不存在则首先下载标准版引擎,如果标准版引擎已存在或下载完毕,则进一步下载游戏引擎的二进制差分补丁,最后从补丁和标准版引擎做二进制差分合成,合出游戏定制版引擎的完整二进制文件; (2)下载游戏的第一个资源分段包即能进入游戏;资源分段包由自动化拆分工具完成拆分之后,部署到服务器上;第一个资源分段包包括游戏首个场景所需的配置文件、图片与音乐,保证玩家顺利进入第一个游戏场景进行游戏; (3)绕过手机操作系统默认的安装确认步骤;下载的手机游戏不在直接运行于手机操作系统之上,而是接管了手机操作系统对原生手机游戏生命周期的控制,包括游戏安装、游戏启动、游戏窗口的创建和销毁、游戏退出和游戏卸载; (4)代码加载;通过C++编程语言开发实现的游戏逻辑,在上述步骤(I)的时候已经通过二进制差分完成合并和还原;通过Java、Lua或JavaScript编程语言开发实现的游戏逻辑,则在编译阶段转为字节码之后,作为资源加载运行; (5)资源加载;通过函数注入的方式重定向了游戏资源加载函数,注入后的资源加载函数在手机上找不到所需资源时,则改从服务器请求并下载对应的分段包。
2.根据权利要求1所述的手机游戏安装快速启动方法,其特征在于,步骤(2)中的资源分段包是由工具自动切割完成,而且仅应用在手机游戏上。
3.根据权利要求1所述的手机游戏安装快速启动方法,其特征在于,步骤(3)中的手机游指的是原生手机游戏,而非依赖于浏览器运行的手机网页游戏。
【文档编号】G06F9/445GK104360871SQ201410538304
【公开日】2015年2月18日 申请日期:2014年10月12日 优先权日:2014年10月12日
【发明者】王哲, 陈建华 申请人:厦门雅基软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1