关于小游戏部分资源放远程服务器的问题

目标平台小游戏,Creator版本2.3.3

包体超了,需要将部分资源放远程服务器,注意希望是“部分”资源,不是整个打包后的res目录;
那在项目中如何配置,才能实现这个功能呢?

目前项目中所有resources目录下的资源,打包后都会生成res目录,都会被打进包里。
是要从res里面手动把远程资源挑出来上传服务器吗?这应该不是通用的做法吧?

我设想的是,项目中有两个资源目录:
assets/resources 存放包内资源
assets/remote_resouces 存放远程服务器资源
resouces目录构建后自动进包,不需要按照官方建议,放到远程服务器,这样是为了保证首页加载速度;
remote_resouces资源如果想放远程,具体该如何做?压缩成zip,通过http://mywebsite.com/remote_resources.zip下载到本地、解压后使用?该如何访问这些下载的资源呢?是用cc.loader.load吗?

1赞

还有个问题比较困惑,官方文档上说:“这里引出了两个关键的问题,首页面加载速度和远程资源缓存及版本管理。对于首页面加载速度,我们建议开发者只保存脚本文件在小游戏包内,其他资源都从远程服务器下载。”
https://docs.cocos.com/creator/manual/zh/publish/publish-wechatgame.html

这里所说的“首页面”,应该是游戏的首帧吧,一般是游戏菜单页面;
既然是游戏菜单页,那好歹有些图片资源吧,比如首页背景大图,这部分图片资源肯定放在包里加载更快啊,如果从远程服务器下载,下载速度慢的话,岂不等半天也进不了首页?

那为什么官方认为“只保存脚本文件在小游戏包内,其他资源都从远程服务器下载”会提升首页面加载速度呢?

http://docs.cocos.com/creator/manual/zh/publish/custom-project-build-template.html?h=build-fini

需要自己定制构建流程,在构建完成后将自己想放在本地的挑出来,存在一个新的res中

我是简单的都分成子包,然后构建脚本时删除想放到远程的子包的配置,再把这部分子包放到远程资源,远程资源不一定要在res下的,subpackages下也可以放到远程
现在困扰我的是json的资源太大,又没办法分到子包里

问题1,建议写插件定制构建流程,build前将remote_resources剔除就行了
问题2,我也不清楚:relieved:

说下我的游戏,我是把部分音效,部分大图,所有龙骨都放入服务器,如果是首次使用,用的时候请求服务器下载到本地,然后使用,如果不是首次(即本地已经存在资源),直接从本地load资源使用。你想要吧哪种文件放在服务器?图片,音效还是龙骨?回复我下,我给你发下代码。

感谢回复,cocos有接口能从项目资源获取构建后res资源文件路径,这应该就足够了~

json资源是spine用的吗?如果是,2.3版本后支持二进制格式了

不要把res全放到服务器,你游戏量很大的话,流量费很贵。尽量把资源放到本地,服务器的资源受网络影响可能下不下来,就是把超出的,不常用的大图之类的放在服务器。

哇,太感谢了!
我们主要是spine资源,以及部分音效

嗯,就是这么想的。小游戏应该把初始包体容量尽可能用满才对啊

奇怪的是官方文档居然推荐把res全部放远程服务器,给用户一种错觉,似乎要用这个功能就只能这么做
按理说应该推荐把部分重要res放初始包的

spine没用过。。。。原理应该一样,存在本地,用的时候取
音效
新建文本文档 (19).rar (816 字节)
我直接发代码,格式不对。。。。

邮箱也发了,你看对吗

不是spine的,就是游戏json配置表,和UI文件构建后的json文件,这部分没办法分包(或者我还不知道怎么分包,貌似有看过说要加这部分功能),然后主包引擎+开放数据域,就差不多要3M,然后json文件在res里也是3M,主包就放不下,只能放远程,子包空间就浪费了

再说一个问题,就是小游戏有子包,但是放子包里,虽然节省了流量,但是进入游戏要先加载子包
子包如果分得不够细的话,多个阶段的素材都在一个子包里,这样就会出现首次进入游戏,加载时间很长
而实际上的按需加载也没有体现出来,但是要实现按需加载就很麻烦,要把子包分得很细,项目结构很臃肿

没多长,而且就用户初次进比较难,之后就有缓存,就快了

收到,能看到了,多谢~

请问是怎么解决的呢,我现在也是想把关于首页的资源放在本地包呢,但是不知道怎么才能分离出来。