查看: 2610|回复: 7

[已经过期] 有没有能自动删除无用素材的工具

[复制链接]

影

梦石
10
星屑
324
在线时间
1406 小时
注册时间
2010-12-8
回帖
2508

贵宾

发表于 2015-8-18 23:32:39 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
我记得以前在论坛中看到过那样一个工具,可以自动把游戏中没有用到的东西删掉。
我记得好像是小黄鸡fux2做的,然而我现在找不到了orz
帮忙发一下,谢了!

点评

嗯 小黄鸡的帖子已翻完 貌似他做过的XP的打包器不包含资源提取。我再找找  发表于 2015-8-19 02:40
梦石
0
星屑
48
在线时间
784 小时
注册时间
2013-1-4
回帖
1057
发表于 2015-8-19 00:10:51 | 显示全部楼层
嗯 有一个叫素材库的东西 所有的素材分门别类放在素材库里 然后游戏里的所有资源载入实际上都是载入素材库里的东西 然后游戏发布的时候运行一个叫打包器的东西 会把所有载入了的素材给移动到工程目录下 嗯 这样应该不错
PS:功能应该实现起来应该不难 然而关键的是这个“分门别类”即标准/规格的制定与划分
@晴兰  兰触怎么看?有什么黑科技不?
RM-GUI延期。。。最近被黑心老板压迫T_T
二次元少女的shitake,长着长脸,身高165,蓝色卷双马尾,FCUP,瞳色黑色,病气和御宅属性,是天才少女。
回复

使用道具 举报

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2015-8-19 00:44:17 | 显示全部楼层
墨凌羽 发表于 2015-8-19 00:10
嗯 有一个叫素材库的东西 所有的素材分门别类放在素材库里 然后游戏里的所有资源载入实际上都是载入素材库 ...

显示图片肯定要走Bitmap播放声音肯定要走Audio,调用时记录一下,接着作者完整的跑一遍游戏,整个游戏素材表就全列出来了,要什么黑科技

点评

主要是我想的资源提取是单独的,而喵喵喵的方法是边测试边提取(我记得之前有这样的脚本,结果就是测试过程中的最后没用到的资源也被加载进来  发表于 2015-8-19 01:14
噗 写语法分析、词法分析(限制资源加载方式,禁掉使用变量什么的。。。  发表于 2015-8-19 01:13
_(:з」∠)_ 少年一副我才不做bug测试的心态。  发表于 2015-8-19 01:07
”找出代码所有加载资源的地方”☞真 黑科技,不提实现,很好奇你”通过字符处理找出加载资源的代码”究竟要用什么思路  发表于 2015-8-19 01:05
写个自动化测试脚本【大雾  发表于 2015-8-19 00:59
回复

使用道具 举报

梦石
0
星屑
48
在线时间
784 小时
注册时间
2013-1-4
回帖
1057
发表于 2015-8-19 02:30:29 | 显示全部楼层
本帖最后由 墨凌羽 于 2015-8-18 20:35 编辑
喵呜喵5 发表于 2015-8-18 18:44
显示图片肯定要走Bitmap播放声音肯定要走Audio,调用时记录一下,接着作者完整的跑一遍游戏,整个游戏素 ...


@三途亚梦 问题并不是我不想给游戏做测试,而是这两件事不能同时干。
测试游戏时,游戏的结构是不确定的,因为你很有可能会在下一刻改变整个游戏的结构什么的(没有达到预期)。如果边测试边提取的话,最后就是把你在测试游戏的过程中引入的不必要的资源也提取出来。

至于分析代码来提取资源,好处显而易见,然而麻烦的是,对于通过变量来加载的资源很难去判断,最好的解决办法就是写词法分析、语法分析什么的(然而太过黑科技,实现难度太大)。其余的一些办法是通过一些约定来解决变量加载的问题:
第一种:直接限制通过变量加载(然而是不可能的,这样太多的东西就没法写)
第二种:数据和逻辑分离,例如RM原版工程,所有资源路劲都是保存在外部数据里,代码里没有硬嵌资源路径。这样只需要分析外部资源加载表就可以了。问题是成本太高(虽然相较于直接写词法分析/语法分析简直小case),单人/小工程没必要。
第三种:强制加载资源的时候,写上后缀。一般来说资源路径都是保存在字符串里,先提出代码里的字符串,然后做字符串匹配,只有带有特定后缀的(如.png.jpg.ogg)字符串才会被认定为是资源路径,然后再去加载。然而问题是对于:
  1. 10.times{|i| @src.push("xx#{i}.png")}
复制代码
这类含有内嵌变量的处理无能。
第四种:对用于表示资源路径的变量进行标记(加前缀or后缀)然后根据这个前缀or后缀进行捕获。然而而问题是,三存在的问题它也存在,同时对于这个用于表示资源路径的变量,如果是hash、array等复杂数据结构,也会很难/无法处理。

由此来看,通过边测试边提取资源的方式,虽然会在提取的时候多点东西,但总好过分析代码这种会造成丢失的方法要好些。再鉴于一般人也都是小工程,没必要折腾太复杂的玩意。所以这种边测试,边提取的方法是最适合。

不过,对于熟悉ruby,自己平时就写脚本的,完全可以用分析脚本+强制带后缀的方式来解决。一般来说内嵌变量的动态资源加载出现的几率不是很高,少数出现的部分,也可以靠人工的方式来解决。

另外,对于较大的复杂工程,且存在动态资源加载等的项目,可以考虑将所有资源抽象到资源表里(参照RM的处理办法)。到时只需要对资源表进行分析然后提取就行。

最后综合的说,最适合普通大众的即插即用的就应该是边测试变提取的办法;而对于会脚本的个人使用完全可以通过代码分析+部分手动提取来做到精确提取(对于通过手工修正自动提取的情况,明显在少加载的时候分析代码然后补充,要比多加载然后分析代码去删除方便得多。因为你多加载的话得先分析全部然后去看那些是多加载的,而少加载的话只需要去分析哪里少加载了就行而不用分析全部。另外边测试变加载的时候,每次做测试都有个资源加载的过程,这样会特别麻烦。);而对于大型复杂项目,则最好做到代码和数据分离,通过资源表/外部配置模块去加载资源。
RM-GUI延期。。。最近被黑心老板压迫T_T
二次元少女的shitake,长着长脸,身高165,蓝色卷双马尾,FCUP,瞳色黑色,病气和御宅属性,是天才少女。
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
88
在线时间
631 小时
注册时间
2014-8-4
回帖
3243
发表于 2015-8-19 07:17:29 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-8-19 11:15:27 | 显示全部楼层
墨凌羽 发表于 2015-8-19 02:30
@三途亚梦 问题并不是我不想给游戏做测试,而是这两件事不能同时干。
测试游戏时,游戏的结构是不确定的 ...

说实话,动态加载很常见的。比如 sideview,比如我的 ulds

点评

噗 这两个都没用过233  发表于 2015-8-19 15:44
回复

使用道具 举报

梦石
1
星屑
4147
在线时间
1211 小时
注册时间
2013-8-9
回帖
2353

极短28评委R考场第七期纪念奖开拓者

发表于 2015-8-19 20:27:44 | 显示全部楼层
= =一般都是要什么就拉什么进来吧..
那有删除呢...
2021.8-2024.5
消失了3年的阿鑫再次出现
目标是做做论坛作品的实况,给创作者们些许反馈
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部