侠盗猎车手之汉化制作教学
本教学分为日版汉化和美版汉化,其中日版汉化方法更为通用,平台限制较少
本专栏只写日版汉化教学,与美版汉化教学分开发布
点击跳转对应方法:
准备工作
- GXTStudio
- Photoshop
- Excel
日版汉化教学
首先补充一些知识,由于日语的字形和中文类似,因此很多游戏的汉化都基于日版,特别是不接受插件的游戏。
1. 汉化需要改什么文件
对于GTA3D时期和GTA4来说,显示日语字符无非是
- 拓展游戏字幕的内码
- 读取文本添加双字节支持
- 添加字体纹理字库
游戏制作组制作完日版游戏时就已经打下了汉化的基础,需要做的只是修改文本+修改字体纹理
就拿GTAVC的PS2版本汉化来说,关键的汉化文件是Fonts.TXD和Japanese.GXT
TXD是RenderWare的字体纹理字库文件,GXT是游戏的字幕文件
可以理解为
TXD就是图片里排列了用到的汉字,游戏根据GXT里的文本进行“活字印刷术”,显示在屏幕上
//放TXD的截图和GXT的截图
2. 日版绘制字符的实现
可以发现,用GXTStudio打开Japanese.GXT文件,字幕却是一堆“乱码”
//放乱码的截图
为什么在游戏里正常显示字幕,解析出来却是乱码?
因为在游戏开发时期,Unicode并未被广泛采用,为显示日语,R星加入了私有编码来拓展日语字码
私有编码很好理解,编码只是一个字符的名字,举个例子:
| 字符 | Unicode | 私有编码 |
|---|---|---|
| 慕 | 6155 | 1234 |
| 黑 | 9ED1 | 5678 |
游戏内部并不管你看到的是什么样,他只能看到这些字符的HEX编码
在GXT中写入“慕”,游戏就会看见6155,并在私有编码列表里查找6155,找到则把字体纹理里6155对应的区域裁剪下来显示到屏幕上
游戏引擎内部内置了私有编码与字体纹理区域的映射关系,开发者将字体纹理分为若干个区域,哪个区域的编码被命中就显示哪个区域的纹理
比如我要显示慕,就需要让游戏看到1234
打开Unicode编码表,找到1234对应的字符ሴ
//Unicode编码表截图
这个ሴ就是我们直接用GXTStudio打开GXT显示的字符
把ሴ写入GXT文件,游戏就会看见1234,并在私有编码列表里查找1234,找到则把字体纹理里1234对应的区域裁剪下来显示到屏幕上
相信你一定理解了游戏显示字符的原理,如同活字印刷术,游戏给每个“铅字”分配一个“名字”(私有编码),哪个“铅字”被叫到名字就打印出来
3. 让日语字库变成中文字库
读完上面的内容,你已经知道了游戏其实并不知道它在显示什么,它只是忠实地根据GXT里字符的编码来“叫号”,将“叫到号”的区域裁下来显示出来
那么,我们就可以利用这个方法,将日语字库变成中文字库
-
首先,我们打开日语字库的字体纹理(
Fonts.TXD),建立字符与私有编码的映射转换表//放映射表的截图
获取转换表也可打开以下GitHub仓库:CN.resource
私有编码的列表很好获取,可以随便找一个存在于字体纹理中的字符。
比如慕,然后在游戏里查找慕所在GXT中的位置,在一坨乱码中找到了慕所对应的是ሴ,找一个Unicode转换网站,得知编码是1234
那么就可以建立:字符 HEX 慕 1234 我们已经知道
1234对应的是慕的位置,如果我们把慕P成汉,那在GXT写入1234,游戏里就会显示汉 -
通过上面的方法,加上OCR技术识别图片里的所有字符,即可快速建立完整的码表
将码表整理为以下格式:慕
/t1234
黑/t5678
... -
用GXTStudio打开
Japanese.GXT文件,选择码表转换,导入码表进行转换//放转换后的截图
此时可以看到所有的
乱码字符都被转换成了正常的日语
可以根据日语文本汉化,也可使用英文文本汉化 -
拿到完全汉化完毕的文本,使用脚本获取去重后的所有字符
可以使用GXTStudio上方编辑-生成字库DAT功能,获取所有字符 //放生成的DAT文件截图 -
接下来要做的就是同步修改码表和字体纹理图片
- 将所有字符都复制下来,使用Photoshop将原字体纹理中的日语字符都删除,换上新的中文字符
//放修改后的PS截图 - 对应地,将已建立的码表进行修改,也同步地把码表里的日语字符换成中文字符,可以使用Excel进行批量修改 //放修改后的Excel截图
- 确保新的字体纹理和码表是一一对应关系,否则会导致汉字全部错乱
- 将所有字符都复制下来,使用Photoshop将原字体纹理中的日语字符都删除,换上新的中文字符
-
拿着新的码表,使用GXTStudio打开翻译好的TXT文件,使用
码表转换重新将中文转换为“乱码”,接着保存GXT。与此同时将新的字体纹理导入Fonts.TXD文件
//放转换后的GXT截图 -
此刻,打开游戏,游戏已正常显示中文字幕
4. 注意事项
- 建立码表时注意游戏实际能容纳多少字符,超出则会导致在未定义编码区域内的字符显示空白
- 不同游戏的字体纹理格式不同,没有万能的办法能打开字体纹理,需自己想办法编辑字体纹理文件
一般Magic.TXD软件就可以打开绝大多数的纹理文件
图片日后添加哦








