打印

[讨论] 如果你打算用crass提取游戏的文本,请看这贴

如果你打算用crass提取游戏的文本,请看这贴

文本和脚本是不同的!


想要游戏文本 先得知道什么叫脚本

脚本就是控制游戏流程的一套指令 这些指令最初由游戏编写者编写 比如什么时候显示哪张cg 什么时候播放bgm等 其关键作用就是将各种类型的资源(图像,音频,视频,文字内容等)有机的整合在一起 这就是脚本的任务。

事实上关键问题不在于脚本的性质 而在于其存在形式:文本脚本和二进制脚本 任何游戏的脚本在封包中一定是这2种形式之一

文本脚本简单说来就是用txt编辑器就能查看的脚本格式,而且可以说这种格式就是编写脚本的开发人员最初书写的格式;强调这一点是为了更好理解另一种脚本:二进制脚本 因为二进制脚本本质上是一种更接近机器的运行时格式(说更的原因在于 确实存在一些游戏 其运行时的脚本格式是文本的 换句话说打包器封包的时候封的就是文本脚本 但是从机器角度来看 显然解释二进制脚本更快更方便 人类的感知则正好与此相反) 它在游戏运行时由游戏的脚本解释器执行 但问题在于其格式内容晦涩 根本不是给人看的 是的 本来就不是给人看的 因为开发人员在开发过程中使用一些专门的内部的不公开的脚本编辑器以文本形式编写脚本 (也就是文本脚本) 然后使用同样专门的内部的不公开的脚本编译器将这种文本脚本编译为二进制脚本(虽然不同 但是你可以把二进制脚本理解为exe 其内容几乎是不可读的) 然后再把二进制脚本封到封包里(封进封包的过程中 打包工具还有可能对其进行压缩和加密 当然 如果使用的是文本脚本 也有可能经历这2个步骤) 因此对于二进制脚本 你根本没机会看到它的文本脚本时候的样子(事事都有例外 戏画的パルフェ ~ショコラ second brew~"Re-order" 你能从里面提取出二进制脚本、文本脚本甚至脚本编译器 很明显 粗心的开发人员打包的时候把这些珍贵的内部资源都给封进去了 orz 这给你个机会一睹文本脚本和二进制脚本的本质差别 以及脚本编译器伟大却给人添堵的能力) 不要误会 一个游戏在运行时执行的脚本是二进制还是文本的 由游戏引擎的设计者在一开始就决定了 如果是文本脚本 那么打包程序封装的就是文本脚本 二进制脚本亦然

所以 用crass以及其他提取器提取出来的脚本 如果你发现打开以后都是乱码 那基本上它就是二进制脚本(注) 除了开发游戏的人知道那是什么格式 别人都不会知道的 除非有人想汉化了 这才去试图了解这种麻烦的二进制脚本的格式 注意:正如前面解释过脚本 文本只不过是脚本里的一部分 脚本里除了文本 更有控制指令(而且控制指令更重要) 所以为了从脚本里提取出文本以便汉化(显然这样的工作不属于任何一个通用型游戏资源提取的工作范畴) 你需要:1)招募程序员帮你写文本提取器和文本写回器 2)跪求一个别人写好的现成的专门的文本提取器和文本写回器 文本写回器的用途和文本提取器相反 是把汉化好的文字与脚本中的非文字数据(比如指令)合并在一起的工具

看到了吧 要从二进制脚本里提取出文本是多么麻烦 除非你有耐性和动机 否则没人会干这事 至少大部分做破解的人知道把时间花在cg和音乐上要更合算一些。
与碰到二进制脚本尴尬的立场相比 如果你提取出来的脚本是文本脚本 那恭喜你 汉化会相当简单了(知道为什么N+的 kirikiri2引擎的 ef系列 还有nscript的游戏容易汉化的理由了吧) 相反 circus的游戏(dc系列) will的游戏(遥丽) IG的等使用二进制脚本的就没那么容易了(注2)

最后,使用二进制脚本的理由 本质上是因为执行速度要比文本脚本执行快且体积更小 当然以现在的cpu的能力 这点绝对不是性能瓶颈 所以已经没什么特别的理由去关注为什么开发人员用二进制脚本格式而不用明文脚本格式了 可以肯定的是 阻止别人偷窥脚本内容100%不是真正使用二进制脚本的理由 虽然确实有效的阻止大范围汉化的企图了 不过国人人多 实力就是强 二进制脚本也只是麻烦而非不可能的程度而已

所以千万别把事情想那么简单 总想着文本文本的!我作为crass通用型提取器的开发者 我也只是把脚本还原成打包时候的状态 也就是说如果加密和压缩了 那么我会把它解密和解压缩(注3) 因此 打包时候是二进制脚本 提取出来当然也是二进制脚本咯 这样一来 你说你不知道用什么工具打开某某二进制脚本 或者说为什么crass提取出来的脚本不能直接看 那就是因为
1)它是个二进制脚本 直接打开它就和直接打开一个exe没什么区别
2)crass是通用资源提取器 而不是特定游戏的专用工具 也不是为了汉化某些游戏的专用工具 因此不做也不可能做从二进制脚本里提取出文本的行为

所以不要因为获得不了文本而感到遗憾 因为打从一开始就不存在遗憾的理由。

注:
因为脚本也是封装在封包里的 因此也要遵守相应封包的规则: 资源需要被加密或者压缩 因为脚本的吸引力不比cg 因此能不能提取出脚本(无论是文本脚本还是二进制脚本)要看提取器了(或者说开发提取器人员的兴致了)。哪怕是文本脚本 如果封包内的资源被压缩或者加密了 同时提取器又不支持脚本的解密或解压缩 那么你得到的脚本将是加密或者压缩过得东西 一样还是乱七八糟 会被误以为是二进制脚本 但实际上它本质上是个加密和/或压缩的文本脚本 谁知道呢 只有解开才清楚到底是什么 不过有经验的人是能区分出来的

注2:
就像我前面建议的 别那么单纯 去网上找找这些难搞的游戏的汉化人员的名字 然后问问其他人如何联系到他们 求他们帮忙 甚至通过线人拿到工具什么的 就不用为二进制脚本太过烦心了 就算你得不到任何帮助 如果你不打算优雅的搞定一切 wqsg什么的也能提取出文本出来 (或者crass+蓝山魔导 我没用过就是了)
另外 这里提供了提取特定游戏文本的工具,碰碰运气,可能会找到你想要提取的游戏。http://m-akita.sakura.ne.jp/program.php 总之不要立刻就决定招程序员提取文本 因为有时候你确实找不到人 这时候作为项目负责人的家伙应该出面 裸体 跪求 撒娇等手段都得用上 本身应该意识到:这实际上如果已经存在了现成的工具 那就已经是神的恩惠了 接下来就看个人魅力了。。

注3:
理论上虽是如此 但是有时候也有麻烦的情况 比如加密 有的脚本 它的加密是配合自己的格式的 也就是说它不是一股脑整个脚本文件都加密 而是只加密文字部分 换句话说 你必须先分析出脚本格式 有能力分辨出哪些是文字 哪些不是 通常来说 crass遇到这种麻烦的情况 就不去做解密了

[ 本帖最后由 痴汉公贼 于 2009-07-02 12:20 编辑 ]
好晕啊..........不懂.................研究研究........
看不懂,不好意思了
请问,我提取出来一个文本脚本,那么是不是通过察看脚本里面调用了哪些东西,然后从这些函数里面找到所需要的内容?

回复 4楼 rent 的帖子

你最好上传一个脚本来看看。

另外我不明白为什么你要查看调用的内容然后再去找被调用的内容 一般来说单靠文件名就能区分大概的线路 人物或者scene

回复 5楼 痴汉公贼 的帖子

文本文件已经发现了....日语没学好,好多单词不知道什么意思,后来一个一个找发现文件了.
还是非常感谢.
真的想学习,但是看不懂
好文!引用价值非常高!
建议加精,方便以后查找。
戏画的パルフェ ~ショコラ second brew~"Re-order"
应该是Parfait ~Chocolat second brew~ Re-order(女仆咖啡帕露菲(CK汉化的名字,但觉得听起来有点怪))吧,
里面居然能提出来脚本编译器,一直没注意,只提过BGM,完了我试试,貌似这玩艺不用安装都可以直接提
我小白一个,看不太懂的说
查看积分策略说明

快速回复主题

选项

[完成后可按 Ctrl+Enter 发布]  预览帖子  恢复数据  清空内容

当前时区 GMT+8, 现在时间是 2024-12-22 13:47

Processed in 0.019381 second(s), 5 queries.