现在Cocos2dx开发的网游基本上都支持热更新功能,但大多都用LUA语言开发,由于我们项目启动时间较早,开发语言为C++,今天就把自己的项目是怎么一步一步实现热更新的,
分享给大家:
平台:android
cocos2dx版本:3.0正式版
最初的思路是这样的:
1,实现游戏资源的热更新。
2,实现代码库的热更新。
经最后实验把代码库的热更新也列为游戏资源更新, 这样就更方便了,两者基本上是一样的。
一、首先了解Android有一个System.load()方法
调用 System.load 从手机的扩展卡中加载游戏的so文件,具体这个so文件是怎么放到你的扩展卡中,
了解一下如何使用android的文件操作api就懂了。
二、cocos2dx中设置资源搜索路径
//android端获取资源目录
std::string jinResourcePath =
GameJniHelper::getResourcePath();
//重新设置 FileUtils 的 SearchPaths,注意:第一个path为android端发过来的。
vector searchPaths;
searchPaths.clear();
searchPaths.push_back(jinResourcePath);
vector paths =
FileUtils::getInstance()->getSearchPaths();
for (int i=0; i
{
searchPaths.push_back(paths[i]);
}
FileUtils::getInstance()->setSearchPaths(searchPaths);
以上主要实现在cocos2dx加载资源的时候优先选择扩展卡中的资源, 因为这里的资源才是最新的。
这里注意的是:加载tmx文件的时候, tmx文件必须与纹理的目录问题, 这个是cocos2dx代码的问题。
三、使用网络下载更新资源,做一系列的资源比对操作, 然后保存版本。
这块代码比较多, 但是业务相对来说比较简单的。
大体就上面几个重点, 实现起来还不算是难。 供大家参考。