怎么能把英文游戏汉化呢?

发布网友 发布时间:2022-04-24 21:14

我来回答

1个回答

热心网友 时间:2023-10-11 11:46

进行游戏汉化最开始的工作就是分析游戏的文件格式,找出要汉化的部分在哪个文件里,文件结构是什么样子的,应该怎么修改。

汉化游戏主要是要找出两种文件及对应的文件格式:

1。游戏的字体文件

2。游戏的英文脚本文件(就是游戏中的情节、对话部分)

但是如何找,这却是一个难题。由于游戏厂商一般对自已出品的游戏文件格式都是不公开的,它们不希望玩家能随意修改游戏(这仅仅是一厢情愿罢了),很多骨灰级玩家还是能够找出游戏的文件结构,进而修改游戏。

这样看来,找出文件格式主要有两种方式:

1. 搜索网上的资源,寻找骨灰级玩家,求得帮助。

2. 自己充当骨灰级玩家,分析出游戏文件的格式来,难度较大。

幸运的是Lucas公司的游戏Fans很多,甚至还成立了一个专门的网站LucasHacks(http://scumm.mixnmojo.com)用来讨论怎么修改其出品的各种游戏。我所需要的游戏文件格式的文档全是出自此网站,从而为汉化工作提供了极大的帮助,节省了很多时间,在此表示万分感谢,向那些撰写文档的前辈们致敬。

下面针对GF开始介绍用到的几种游戏文件格式

1..tab文件格式

是存放游戏所有英文脚本的文件,文件内容是加密存储的,用一般文本编辑器打开是看不到任何可用信息。解密内容的方法是对文件所有字节与0xDD进行异或操作。
以下是解密文件的源码(C#):

private void button1_Click(object sender, System.EventArgs e)
{
// Create the reader for data.
FileStream fs = new FileStream("c:\\grim.tab", FileMode.Open, FileAccess.Read);
BinaryReader r = new BinaryReader(fs);

FileStream fs2 = new FileStream("c:\\text.txt", FileMode.Create);
BinaryWriter w = new BinaryWriter(fs2);
fs.Position = 4;
while(fs.Position < fs.Length)
{
w.Write((byte)(r.ReadByte()^ 0xdd));
}
r.Close();
w.Close();
fs.Close();
fs2.Close();

}

解密后的文件内容就是一般的文本,可以看到所有游戏对话都在其中。下面节选文件内容的2段进行分析:

sito030 Oh yeah, yeah. Yeah. That is what I told him.

sito031 Are you kidding me?

sito032 gave him the idea in the first place!

可以看出左边是说话人的名称标识,右边是说话的内容,分割这两者的是看似一个空格,其实是ASCII码表中的制表符Tab,16进制表示是0x09。

对游戏角本的汉化修改此文件的内容为中文就可以了,还有一点值得注意,修改完此文件后无需再对其反加密,只要将解密的文件保存成以前加密文件的文件名覆盖即可。应该是游戏运行时候会对文件是否加密进行判断

2..lab文件格式

是游戏的资源文件格式,游戏所有的资源声音、图片、动画、全存于此。它很类似于常用的压缩文件的格式,如zip、rar,作用是把很多文件压缩成一个文件,需要用的时候再解压出来供使用。Lab文件也是这个用途,它把很多用到的声音、动画等文件放到一个lab文件中,供需要时调用。Lab文件不对文件进行压缩,只是简单地把所有文件头尾相连,保存成一个文件而已。

Lab文件由文件头、文件偏移量表、文件名列表、文件物理存放块组成。以下内容选自LucasHacks的文档

(1) 文件头

字段

数据长度

描述

Id

Long(4字节)

文件头标识LABN

Version

Long(4字节)

文件版本号

Files

Long(4字节)

此lab文件内包含资源文件的个数

a

Long(4字节)

未知

b

Long(4字节)

未知

(2) 文件偏移量表

字段

数据长度

描述

Ofs

Long(4字节)

文件名偏移量,用来找到资源文件名称

Offset

Long(4字节)

文件偏移量,用来找到资源文件在lab文件中的相对位置

Size

Long(4字节)

文件大小

U

Long(4字节)

总是0

(3) 文件名列表

所有在lab文件中的资源文件的文件名,每两个文件名中间用0x00分隔。

(4) 文件物理存放块

所有资源文件在此块中存放,首尾相连。

附上一个lab文件,可用二进制编辑器打开,对照结构,加深理解。

Data005.rar

3.Laf文件格式

是游戏的字库文件格式,将会在字库篇作详细介绍。 一般人是汉化不了的。还是留给专业的游戏汉化小组吧。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com