开发组大神,请问如何组织大厅+子游戏的资源结构?

有一个类似游戏大厅的需求,目前设计的结构是大厅+子游戏集合,子游戏都是在大厅里按用户需求下载的(只考虑jsb环境),每个子游戏的资源和脚本都在单独的目录里。
大厅的工程和各个子游戏的工程都是独立的,想用creator来实现,可通过require或eval指定路径的子游戏脚本,但现在遇到的问题是:

  1. 游戏的场景会被统一放在libraryPath目录下,子游戏会被下载到可写目录中,这会造成从大厅启动子游戏,却找不到子游戏的场景;
  2. 场景中所需的资源,会被放在rawAssetsBase目录下,同样找不到子游戏的场景中的资源;
    请问如何修改creator中的源码,可以在eval子游戏脚本前,将子游戏目录中的场景和资源等注册到CCAssetLibrary资源管理器中,难道creator中不能fileUtils那样自动搜索给定目录么?cc.loader 这种模式倒是可以兼容jsb和web,但导致我现在这样的需求很难实现。请问在creator现有的模式下,对于游戏大厅+子游戏这种需求,有比较好的解决方案,或者工程组织方案么?

我现在已经可以在主大厅里,通过require调用到子游戏的脚本代码,但是场景无法启动,通过在启动子游戏之前,重新初始化cc.AssetLibrary.init(),设置libraryPath和rawAssetsBase,可以找到场景的json文件 ,但无法识别,报
ERROR : The asset f40a2991-639d-4725-91e8-c14f46e26858 is not a scene 的错误,请问这是怎么回事?

1赞

@panda @jare 大神们,请求支援~~~~~

大神都去开会了么?

这一部分的需求,可能要等到我们的包加载机制完善了才比较好做。目前我能想到的方法是发布时,发布成 runtime 平台。这样我们会额外输出一个 group.json 文件。这个文件会将所有资源按场景进行分组,然后你们可以每个组的资源单独下载,下载后合并到游戏目录下。

这个应该是资源文件搞错了,加载进来的不是一个场景。

1赞

我说调用cc.director.loadScene(“scene name”)来加载的,这个资源文件是creator通过settings.js找到的,所以资源文件应该没找错,我感觉是反序列化的时候出现了问题。可能是我在运行时重新初始化AssetLibrary,导致的问题吧。
感谢jare大神的回答,因为在web和runtime环境下,都是基于浏览器的,大厅内的子游戏可以直接做成超链接打开即可,不需要做成native的这种单独下载的结构。我决定还是先使用基础的cocos2d-js来做吧,静待creator更加完善和成熟!

好的,加油!

你好,发布成 runtime 平台怎么做呢?有没有参考资料呢?

发布时选择 Runtime 平台,然后使用 Cocos Play Tool 做进一步打包。
详细步骤请参考 http://play.cocos.com/http://play.cocos.com/docs/CocosPlayTool使用说明文档

@jare 我用CocosPlayTool打开我的工程,,发现已经自动分好组了,然后我点构建,一直出现这个错误 。
这该怎么处理? 我看了一下版本,也是官网最新版 0.1.2

楼主 用creator实现了你要的想法么?