发布网友 发布时间:2022-04-24 18:22
共1个回答
热心网友 时间:2023-10-31 16:43
游戏汉化主要有以下几个步骤:
0、游戏选择&准备。
1、程序破解、修改。
2、文本图片资源提取。
3、文本翻译,P图。
4、回写资源到封包&测试。
5、发布。
因为个人汉化往往能力、时间有限,所以我们有必要借助他人的智慧,不然……会早衰的。。。。。
�7�4第0节:游戏选择&准备:
爱神认为个人想要完成Gal游戏汉化,下面几样东西是必须的:
1、Crass源代码
2、反汇编工具OLLYDBG或SoftICE等。
3、16进制编辑器UltraEdit或HexWorkshop等。
4、任何一种编程软件VB或VC等。(安装时记得安装帮助文档,你肯定会用到的)
爱神建议2、3、4都选用英文版,原因你用了就知道了。
Crass源代码(汉公,您太伟大了)应付今年和几年前出的游戏应当不会有问题。。原因见下。
合适的游戏:
-2DGal通常是最好的选择,因为没有几家游戏公司愿意把钱砸在系统里的(废话~),所以十分有利于下一节发展。
-用Crass可以解开所选择游戏的任意一个封包。(必须)
-游戏日文名、公司名、游戏公司网站。(用于查找Crass中对应插件名)
-游戏可以免CD运行。
�7�6第一节:程序破解、修改
作为个人汉化没有必要花费太多时间在破解上面,一般而言我们应该选择已经破解好的游戏。接下来我们要做的工作主要是修改区码。
区码是什么?区码就是让文字从乱码变为可以被人所识别的样子。
我们需要做的就是将游戏的EXE里几个数字从80改为86。。。
这是非常简单的一件事情,完全不会汇编的爱神看完这个
详细教程: http://bbs.sumisora.com/read.php?tid=206511&fpage=0&toread=&page=1(4、程序破解看起即可)
或者 http://blog.csdn.net/luozhuang/archive/2008/11/09/3260235.aspx
(。。。可以匿名浏览的。。。。感谢大师和匿名时代的CK)
就搞定了之前那两个游戏的EXE,所以爱神相信聪明的你一定也行。。
PS:教程中提及的修改EnumFontFamilies(Ex)可以无视。
成功保存的话进入下一节。
�7�7第二节:提取图片/文本资源
这个工作就交给Crass去完成吧。。一般而言,存放图片资源的封包名字为bg.xx/cg.xx/data0.xx/arc0.xx...存放文本的封包就是所有封包中最小的那个,一般是1~5M左右,名字一般为script.xx/scenario.xx/scr.xx....
提取出的图片扩展名可以是.tga/.bmp/.png/.jpg....
提取出的剧本扩展名可以是.txt/.bin/.scr/.spt...
成功提取的话进入下一节。。
�7�8第三节:文本翻译/图片汉化
对2DGal来说,P图其实意义不大,各位在Gal区混迹那么多年,有谁看不懂Config里面那些简单易懂的日文呢。。
爱神重点要说的是剧本的汉化。
剧本文件有两种:二进制剧本和纯文本剧本。
二进制剧本的代表是通用引擎RealLive和Giga的游戏等。
文本剧本的代表是通用引擎TVP和NScript、Illusion的游戏等。。。。。。。
二进制剧本:
这类文件比较麻烦,如果没有原始编译器的话汉化后的文本是不可以超过源日文文本长度,所以译文基本上是够用就好。
一般而言,从二进制剧本文件中提取出日文文本需要自己写程序,记录每句话的长度,比如爱神作的PrimaStella汉化,这个游戏剧本和文本默认就是分离式的,剧本一个包脚本一个包,并且在脚本包中指定了剧本包的位置。。。。。如果想要改变文本长度必须要解析脚本文件,虽然从技术上来说不算很难,而且它们的对应关系很明确,但是对于个人汉化将是巨大的耐心考验。。。。所以爱神最后还是选择一一对应替换文本的方式。
中间那个是文本长度。
[localimg]1[/localimg]
将文本文件直接交给j北京V6去跑吧,V6的引擎远比你走路快多了。保存好译文,嗯。。。
文本文本:
这是汉化者的最爱!修改起来简单方便,太棒了!你可以直接把剧本文件整个丢给V6跑,这个世界太可爱了。。。。
当然,就这么简单跑下去得到的中文剧本文件会让游戏崩溃的,为什么呢?
V6有个不良习惯,喜欢随意调乱语句中的标点符号,对于游戏引擎来说,那些东西可是控制流程的关键,所以你需要写一个小程序,在每段文本句首和句尾各加两(几个都行)个句号(比如上图每段文本的开头和结尾),这样V6就不会乱来了。另外V6是不会翻译英文的,所以不用担心他会搞乱剧本其他地方……嗯。。
保存汉化后的文件,进入下一节。
�7�9第四节:回写文件
这一节需要花些功夫和时间了,嗯……
打开Crass源代码\crass-0.4.14.1\support_list*.txt文件查找游戏名/游戏公司/游戏公司网站,
插件名
[localimg]2[/localimg]
找到插件名之后,搜索那个名字,会找到“插件名.cpp”这个文件,接下来我们就要分析源码了,嗯…………
先把汉工的代码仔细过一遍,了解流程和那些文本图片是用什么方式解包的。一般而言使用dec[x]^=xxxx的方式的,解包和封包一个代码,直接把那段代码贴到你写的封包程序里。汉工的代码里u32就是int,u16就是short,u8就是BYTE,s8相当于char,嗯……
如果那个游戏使用了什么霍夫曼树之类的,不要害怕,别被那个名字吓倒,去网上下个霍夫曼源码直接用就好了,能用霍夫曼的游戏不多,而能够改进霍夫曼的程序师更是凤毛麟角,别指望会出现在2DGal里。
有些游戏有偷懒的方法,不用回写封包。直接在游戏目录下建立“封包名”的文件夹,把汉化了的图片或文本复制过去,有些游戏会优先读取文件夹里的文件,然后才读封包(你以为游戏公司各个都那么厉害?他们也要方便开发和打补丁啊)。比如Majiro,在游戏目录建个“updatex”文件夹然后把汉化后的文件放进去就好了。与此类似的还有RealLive,Kaguya等。。。
要注意的是,对于二进制脚本,别忘了把多添加的句号去掉,在你写的程序里加几行代码就行了,很简单的。。但千万别用CString::Replace,这个函数对中文支持的不好,会出问题。。
OK,载入EXE测试吧,只要没有太大问题就Pass,有些二进制脚本文字显示的固有的问题(*字符长度所致)就无视掉吧。。
�7�0第五节:发布
发布工具可以用WISE/NSIS/或者RarSFX等。。还可以自己写。。。。
最后感谢各位看完此文,准备体验那淋漓尽致的快感吧!但别忘了和还在双开游戏和AGTH的劳苦大众们分享你的欢乐。。。
希望对你有所帮助,愿我们共同进步!