设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2056|回复: 7
打印 上一主题 下一主题

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

[复制链接]

Lv4.逐梦者

梦石
10
星屑
319
在线时间
1406 小时
注册时间
2010-12-8
帖子
2805

贵宾

跳转到指定楼层
1
发表于 2015-8-18 23:32:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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

点评

嗯 小黄鸡的帖子已翻完 貌似他做过的XP的打包器不包含资源提取。我再找找  发表于 2015-8-19 02:40

Lv1.梦旅人

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

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
20970
在线时间
9334 小时
注册时间
2012-6-19
帖子
7106

开拓者短篇九导演组冠军

3
发表于 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
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
784 小时
注册时间
2013-1-4
帖子
1102
4
发表于 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,瞳色黑色,病气和御宅属性,是天才少女。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止访问)

梦石
0
星屑
88
在线时间
631 小时
注册时间
2014-8-4
帖子
3600
5
发表于 2015-8-19 07:17:29 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2207
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

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

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

点评

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

使用道具 举报

Lv3.寻梦者 (暗夜天使)

梦石
1
星屑
2729
在线时间
1015 小时
注册时间
2013-8-9
帖子
2312

R考场第七期纪念奖开拓者

7
发表于 2015-8-19 20:27:44 | 只看该作者
= =一般都是要什么就拉什么进来吧..
那有删除呢...
爆树3进度:
数据库——40%
主程序——45%
游戏画面——0%
动画特效——0%
声音音效——0%

时间都去哪儿了,还没好好填坑,生活就忙了
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-1 10:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表