冒险解谜游戏中文网 ChinaAVG

标题: 汉化工具任务进度 (39楼更新) [打印本页]

作者: 肥牛    时间: 2009-6-26 12:59
标题: 汉化工具任务进度 (39楼更新)
刚才把曾经做过的几个小工具修改了一下,然后集成到一个工具里。这样大家用起来可能会方便一些。
3 t; P: K9 ^: j& z% j! o' B- \1、BF 解包工具: 这个是原来俄罗斯人写的代码,我稍微改了一下,并且增加了可选择解包某个文件的功能。
$ z8 o! i0 n& Q2 C+ |2、BF 打包工具: 这个可以把指定的目录中的文件夹和文件打包,BIN文件会自动放到前面。与解包工具配合使用。0 S+ H; O: H& O( F! y" }
3、汉化资源提取工具: 这个是从BIN文件中提取可供汉化的英文句子,汉化完成后再回写回去。现在这个工具已经做成通用的,应该可以适应大部分的游戏了。
* \1 l% N5 E0 v4、待续……3 }9 c1 }+ L, m; r- m; Q' U, t( V- n

& l- P) h. F+ w4 E, J! z: w2009.08.01  39楼更新" c# G# X: p8 @8 `5 D  _

0 G) w' I5 `2 h" V1 @$ @大家试用一下,有什么问题告诉我。
作者: xuemoyuan    时间: 2009-6-26 20:37
试试...呵呵呵.....
作者: shane007    时间: 2009-6-26 21:40
我试过了可以使用。没问题。
4 `7 p0 J& }; H+ ^3 T( I6 |! y- y如果肥牛有时间的话可以做一些增强。
0 g: {, G# J$ h6 M加入查找和替换功能,方便人名等的汉化。; A" R6 M( q* F, J( [+ P# I
加入自动在最后或2侧补空格的功能,否则只能手工补。
% ~# n; Z" [) B! A+ L7 d7 y* N' U- ~
不过做到现在的程度已经可以加威望了,枫叶给加威望吧。
作者: 肥牛    时间: 2009-6-27 09:41
[attach]13498[/attach]
! q' C  ~6 |6 Z, N 我在后面已经补上空格了啊。
作者: shane007    时间: 2009-6-27 09:47
引用第3楼肥牛于2009-06-27 09:41发表的  :
8 r) O' S) J  \4 V) U: @7 v& F* g[attach]13498[/attach]/ m/ E9 h% ?! ^' [6 o9 }
我在后面已经补上空格了啊。

3 h: w# M8 r3 ^+ W在后面加空格不是太妥当。* P6 u( k. A! ?1 B6 X
当字幕是居中显示的时候,后面补空格会造成显示出来的字幕不居中。6 y0 ^3 l" p. B
所以我编的翻译器加上了可以选择后面加空格或2端加空格。. b) q( B" B( R% c
程序不加2端加空格的功能也没关系,可以手工补。
5 O+ d# {) q# O; D如果想做得完美一些的话最好加上2端加空格的功能。
作者: 肥牛    时间: 2009-6-27 11:12
引用第4楼shane007于2009-06-27 09:47发表的  :1 ^' r% ^, I; ~6 e
在后面加空格不是太妥当。" [/ s+ h) E2 e' i7 Z7 |
当字幕是居中显示的时候,后面补空格会造成显示出来的字幕不居中。
+ N1 H8 c0 y% D- g  {所以我编的翻译器加上了可以选择后面加空格或2端加空格。) |5 U7 M% e! T0 b# D, d0 m6 p- Z* F
.......
这样就需要分别对待每一条语句,区分居中对齐还是向左对齐(干脆再加一个向右对齐)。0 D7 T2 W  G9 G+ j  M% K! f# S9 l
难度系数很低,有时间我就加上。另外,搜索和替换的功能也会一起加上。
作者: shane007    时间: 2009-6-27 11:28
引用第5楼肥牛于2009-06-27 11:12发表的  :
" {6 @8 H4 H6 u8 X' Q. R" A
$ b! K1 u; c' _这样就需要分别对待每一条语句,区分居中对齐还是向左对齐(干脆再加一个向右对齐)。
" D0 f% ~9 b2 z' F9 b, X% M难度系数很低,有时间我就加上。另外,搜索和替换的功能也会一起加上。

9 r, W7 h8 w) Z* [7 E恩,辛苦了。
作者: shane007    时间: 2009-7-17 20:29
引用第7楼kods于2009-07-17 20:17发表的  :
2 q  `7 o4 D+ q9 q应该不用补空格,补00就可以。这样游戏在读取到00之后会认为一段话已经结束,自动将已经读取的文本对齐。
& h5 ~3 o* n- W. a不过会遇到奇数字节时,行末会截断汉字,成为乱码。以前是在游戏内测时找出并手动修正的,不知是否有通用的自动修正的方法。
! A' |, W3 Z9 r8 P2 f7 n1 Q) t
老前辈出现。1 {' ~9 n1 n6 G* N- q4 y+ O
这个问题好像就是水晶之匙2的问题
作者: a2937230    时间: 2009-7-17 20:35
提示: 作者被禁止或删除 内容自动屏蔽
作者: shane007    时间: 2009-7-17 20:42
我想知道,重返神秘岛2每行的字数是否是固定的?
作者: shane007    时间: 2009-7-17 20:44
每行的字数是否是固定的话,应该可以做出工具来。
作者: 慕容枫叶    时间: 2009-7-17 21:02
没办法 有的游戏会出现这样的效果……
作者: shane007    时间: 2009-7-17 21:03
恩,原因我知道了。
$ o9 g. l, I. r4 w3 w, I" ^6 }4 l+ \* ~& U8 w2 R6 _7 M
对了,老前辈,你对汉化技术还有兴趣吗?& ^$ r/ g. [+ K0 W! V
有的话想让你帮忙分析一些游戏,同时还可以提高你的技术喔。
作者: a2937230    时间: 2009-7-17 21:10
提示: 作者被禁止或删除 内容自动屏蔽
作者: shane007    时间: 2009-7-17 21:11
OK,知道了。以后帮忙多出出主意就行了。
作者: a2937230    时间: 2009-7-17 21:13
提示: 作者被禁止或删除 内容自动屏蔽
作者: a2937230    时间: 2009-7-17 21:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: shane007    时间: 2009-7-17 21:43
引用第21楼a2937230于2009-07-17 21:13发表的  :
( o# r+ a8 m$ _& o  h; ghttp://www.namipan.com/d/Backup. ... 682fa748345ef870202
' W& O$ ?4 w" w2 V9 j* J: ^" b% Q9 H007这个是重返神秘岛2的BF包,我有PM肥牛修改工具,他也回复了。如果你有兴趣的话,也研究下吧。
- h5 p) X1 A/ G! W) a  ?7 K% n
好的
作者: 肥牛    时间: 2009-7-23 08:08
实在抱歉,又是很长时间没上论坛了。最近的时间实在是太紧张了,很难找出整块的时间完善咱们这个工具了,只能一点一点的改动。
) [* c3 j) H/ @& ^: c3 r关于一个BF包中存在两个或者两个以上BIN文件的问题,我已经解决了,现在再打包的时候可以和原来的BF文件一模一样了。4 H' p3 Y1 I7 [5 V& `
关于资源提取汉化写入的问题,我前一段时间按照007的要求改了,就是可以实现文字的左对齐、居中或者右对齐,也就是在文字的哪边补空格的问题。搜索和替换功能也已经实现了。另外,原来采用的是ACCESS的数据库,时间长了文件会变大,速度也偏慢。我改成了SQLITE数据库,文件小,速度快。可是某一次在单位和家里之间同步的时候不小心用旧程序给覆盖了。我如果有时间就把这里补一下。' I$ @  v* H. X
按照kods的要求,补00应该是可以。但是这样会存在一个问题,就是汉化以后的文件再次提取的时候,这个句子的长度就变成汉化以后的,而不是原来的长度了。这是一个麻烦事。因为不见得汉化一次就能成功的。那程序的结构就需要变动,需要在数据库中保存原始的信息,这样才不会被后来的提取覆盖掉。让我再好好想一想。
  L5 I  s; l, Y& _" T$ i另外,需要各位帮个忙做一个测试,在需要汉化的BIN文件中,找两个资源测试。比如,在屏幕上显示的是"New Game"和"Load Game"这两行。用16进制工具打开BIN文件,这两行文字之间应该是三个(或者多个也无所谓)00分隔的。我需要大家帮忙测试的就是将这两行
# c: e6 ]2 N  _New Game (00 00 00)Load Game; Z; G0 l7 e/ p7 g
改成8 E; [# ^8 H, n3 l; l
New (00 00 00)Game Load Game) Z0 Q& w6 M; S* o4 i4 x
其中括号内的标识16进制代码
  ~( _, o# T* c0 T( [* i这样,修改后的长度与原来的长度是相同的,然后再写入到BF包,去游戏中测试一下是不是显示的"New "和"Game Load Game",如果是,那么我们就可以实现汉化以后的长度大于原长度(前提是全部汉化后的整体长度小于或者等于原长度,这个应该没问题)。因为我这里游戏运行不起来,所以没法测试,只能拜托大家了。
作者: shane007    时间: 2009-7-23 11:17
有空我会测试一下的。
作者: shane007    时间: 2009-7-23 21:59
试了一下,
7 }5 m: [* @- C" K' _9 b' RNew Game (00 00 00)Load Game 改成% A1 ^  d  Y9 t5 \
New Game Load  (00 00 00)Game6 q9 o% j2 @6 u: q& q% }; ]

; c# e: X- z( W- TNew Game Load 显示不完全,Game 没有被显示。
8 G* q# R$ ?4 `& ]6 K& J是不是同时还要修改字符串的长度? 那个.idx 文件?
作者: 肥牛    时间: 2009-7-29 17:32
007,这个地方我搞明白了。我今天晚上回家去写这个工具。
  |) t+ g  K7 e) Q+ n$ E简单说,在BIN文件的前部是索引部分,4字节的序号,4字节的语句个数,再4字节的长度,这里相应进行修改就可以了。
8 M9 W- m# i6 c3 x. M7 k. u急着赶班车去,明天再说。
作者: shane007    时间: 2009-7-29 19:08
OK. 等你好消息。
作者: 肥牛    时间: 2009-7-31 09:03
在工具的编写过程中,又发现了新问题。
" B+ m0 v5 N& m我上面说的4字节的句子个数,这里是错的。我分析了一下,觉得这里应该是句子的类型。在我使用的BIN中,一共出现了三种类型。01、0A和0B,其中,01代表的应该是正常的提示。而0A和0B代表的应该是对话部分,因为这个游戏中出现了两个人,Mina和Jep。而对于01类型的句子来说,前面文件头部分的4字节的长度和句子的长度是对应的。但是对于0A或者0B类型的,处理起来就麻烦一些。因为这两种类型对应的部分是这样的。( |2 {" |' Z$ \
% K- e7 s$ Q0 X6 {. I& b+ y0 ~9 P, v
文件头部分' z* a9 j5 ~7 a1 |$ P
[attach]13729[/attach]
, c& U" P; R9 g9 h# Z! F
! X4 D6 f/ M5 e9 O* Q1 n文件体部分8 p7 }$ n) a9 _
[attach]13728[/attach]  
$ U& _+ u" h$ l2 b# S
. U6 A5 ~5 V0 m+ B$ E& [1 ]先是显示对话句子的代码,如Mina0200,然后是三个00,接下来才是对话的内容:No!,后面再跟三个00,这样“No!”长度3,再加上后面三个00,长度正好是6,就和文件头部分的长度对应上了。也就是说,处理01类型和0A或者0B类型的方式要分开。
1 v' A2 ^+ m2 W
* ]* @9 `5 K9 R4 @' n% O- a我目前已经完成了从BIN文件中提取的工作,下面就是写回的操作了。因为有朋友提出,翻译后的文字可能会比原来的文字长,所以这次核心的代码完全推翻重写的。实际上就是完全重造BIN文件。写回后,新的BIN文件的长度和原来的BIN文件长度会有变化。按照我的理解应该是可行的,只是这个想法还需要在实践中检验。
6 Z4 W; I* z" R& t, J1 f
; T! _2 A7 d8 ~! G我用来测试的这个文件中,只有三种类型,01、0A、0B,我处理起来是按照01的和非01的处理的。不知道其他游戏会不会有别的类型。以后慢慢再完善吧。我继续我的工作了。
作者: shane007    时间: 2009-7-31 09:42
水晶之匙2的字幕文件好像并不是这样的。
+ T( Q0 }9 |6 L你看看?
作者: die_humans    时间: 2009-7-31 09:45
jep。。。重返2的人物 嘿嘿
作者: hakula1125    时间: 2009-7-31 10:30
引用第32楼die_humans于2009-07-31 09:45发表的  :- N; H0 y  k* T6 P7 [  n3 `9 f
jep。。。重返2的人物 嘿嘿
呵呵,的确好像就是我们那份材料
作者: a2937230    时间: 2009-7-31 12:58
提示: 作者被禁止或删除 内容自动屏蔽
作者: 肥牛    时间: 2009-8-1 12:38
我很郁闷……
$ E/ Q" U4 \4 B0 O" E$ e) k昨天下午测试发现,数据库不支持中文……/ O. w6 b2 w8 L" @3 N
晚上查资料,修改UTF编码,改程序,折腾到半夜,最终也不行。
3 C0 z8 j& V# e# p; l2 g使用SQLITE数据库是因为它的速度快,体积小,谁知道竟然DELPHI的控件不支持中文,只好放弃。; _& M) X5 A% A* \( x% m; ?- D" l
今天改成ACCESS的数据库,一切正常,可是到最后查找替换功能的时候,ADO引擎不支持REPLACE函数……! L2 C5 ?9 h: l
我快崩溃了……! X1 D6 H7 Q+ u6 R$ N/ k- N
现在换成DBISAM数据库,支持中文,支持REPLACE,本来以为一切顺利……( b! \$ y' N* w+ \, g
谁知道现在出现数据不能保存的问题……
: b  B' `: n$ l) U, s) K
1 K+ d! v: r1 y, Y; a' g* j2 A也许今天不适合写软件,我还是去魔兽世界里面战斗吧。明天见。
作者: shane007    时间: 2009-8-1 12:54
你为什么一定要用数据库啊?# a2 T8 n  A0 L& o2 t
象我那样把每句话切成一个文件多好。多人同时汉化也可以实现。
作者: 肥牛    时间: 2009-8-1 15:34
用数据库的是为了方便的实现搜索和替换功能,如果用文件会相对慢一些。/ {, P5 ?. N# _" V% c
另外,可以对曾经处理过的游戏内容保存在数据库中,以后再打开的时候直接打开保存的数据库就可以了。
# @) }* X" x# x  g& o9 e我现在已经加入导入和导出的功能,让多人同时汉化方便一些。
+ R% b; B% b' X6 _工具已经完成了,现在正在请朋友帮忙测试。没什么大问题就放出来了。
作者: a2937230    时间: 2009-8-1 15:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: 肥牛    时间: 2009-8-1 15:48
工具终于可以告一段落了,初步的测试没有什么大问题。1 e+ E: a# W( ]# ?
我就放出来给大家测试吧。8 Y  e) t) z* i" j
需要注意的是,翻译对话部分时,下面的格式:& Z$ E3 W9 \" T, I) U3 t

% R- m% v9 j/ m% R; b- |Mina0200:" @; H) b$ N% |9 V
No!
. \0 V8 \$ d$ P' I/ B& j& M; l6 ~  M
其中,第一行Mina0200:是不能动的,冒号是英文半角状态,后面跟一个回车换行。这里是严格不能变动的,否则导入到游戏里会出错。下面的内容可以根据自己的需要进行汉化翻译。
5 a  k' ^6 _, E/ L2 \
) v7 g- ]# T1 o/ v' {' M这个版本的工具最大的变化就是:翻译后的文字长度可以比原来的长度大了,也就是不限制长度了。8 m8 Z7 R  m2 K7 h  _0 W+ e
( c/ X# l) W7 x# Z9 ?& L! M
另外,快速保存的快捷键忘了做进去了。呵呵。先这样吧,如果还有其他的BUG,我就一起改。
作者: hakula1125    时间: 2009-8-1 15:51
标题: Re:汉化工具任务进度
辛苦了~~~
作者: die_humans    时间: 2009-8-1 15:52
标题: Re:汉化工具任务进度
辛苦!!!
作者: a2937230    时间: 2009-8-1 16:15
提示: 作者被禁止或删除 内容自动屏蔽
作者: hakula1125    时间: 2009-8-1 20:32
问题:RTMI2文本中出现很多~单独成行。。。不知为何。还有,文本打开没有历史记忆了。。也就是说,每次都要重新选取目标bin来打开,比以前繁琐了,如果可能的话,希望能改下
作者: hakula1125    时间: 2009-8-1 20:41
饿- -补上一条。。。查找功能区分了大小写,能否把这个区分改掉- -很有可能一些词出现在句首而筛选掉了。中文无法查找,同楼上的楼上
作者: 肥牛    时间: 2009-8-1 20:54
引用第43楼hakula1125于2009-08-01 20:32发表的  :2 u: D- f8 O0 b$ ^3 K% E7 O% H
问题:RTMI2文本中出现很多~单独成行。。。不知为何。还有,文本打开没有历史记忆了。。也就是说,每次都要重新选取目标bin来打开,比以前繁琐了,如果可能的话,希望能改下
这次的提取工具不是直接提取句子,而是根据游戏自身的资源进行提取的。
- |. }# x) p9 _ [attach]13776[/attach] 3 n6 R5 G; ~$ `7 J
用二进制工具打开BIN文件就可以看到,有很多长度为04的,这个04表示资源的长度,其中还包括后面的三个00,也就是说实际的长度只有一个字节。这是游戏里面的设定,在翻译的时候忽略掉就可以了。
" k1 Y0 z9 {' J7 K另外,也许大家注意到了,句子的序号不是从1开始的,而且也不是连续的。这个编号也是游戏里资源的编号,我们不能改的。
8 @" y5 u4 {) g0 o/ g4 D8 r7 w
5 x5 _  ~  I. _/ Y; |至于你的第二个问题,在你第一次读取BIN目标的时候,不是提示你输入游戏名称吗?下次再用的时候,直接从上面选择这个名称,然后再点击打开就行了。这样就不需要再读取BIN文件了。
作者: 肥牛    时间: 2009-8-1 21:00
引用第44楼hakula1125于2009-08-01 20:41发表的  :' L/ e  z% B8 r; g$ H
饿- -补上一条。。。查找功能区分了大小写,能否把这个区分改掉- -很有可能一些词出现在句首而筛选掉了。中文无法查找,同楼上的楼上
# A- n0 [0 E. L# l# |1 S1 s
唉,这个问题我还真没有测试,估计又是数据库的原因。搜索区分大小写还好解决,替换可能又是一个技术问题。至于中文查找,如果数据库不支持,……,唉,想想都头疼。" M/ \) d# F% j
实在不行,就像007说的那样,放弃数据库,直接用文件处理了。
作者: hakula1125    时间: 2009-8-1 21:23
引用第45楼肥牛于2009-08-01 20:54发表的  :# G1 m8 U  c" a1 n% K

+ Q( B2 Z* U1 m2 `$ b  W, J  g9 f这次的提取工具不是直接提取句子,而是根据游戏自身的资源进行提取的。5 i# {! n+ q0 t3 c
[attach]13776[/attach]
. d, }" {6 v2 S; o/ y& @用二进制工具打开BIN文件就可以看到,有很多长度为04的,这个04表示资源的长度,其中还包括后面的三个00,也就是说实际的长度只有一个字节。这是游戏里面的设定,在翻译的时候忽略掉就可以了。
$ |1 {7 X; p# \, z1 `1 j4 Y另外,也许大家注意到了,句子的序号不是从1开始的,而且也不是连续的。这个编号也是游戏里资源的编号,我们不能改的。
4 {6 y8 v4 ~# Q% E7 M- g.......
呵呵,尝试了下,新功能很好用,调出很方便,谢谢肥牛兄,辛苦你了~~
作者: a2937230    时间: 2009-8-5 22:06
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/) Powered by Discuz! X3.2