研究了一下失忆症:黑暗后裔,很容易就实现了汉化。汉化方法和半影系列是一样的。 P& F- X+ j% I( ?7 }- s5 q7 K3 ^- D
7 c* D* x2 \: B6 T2 v
下面说一下汉化方法 & S9 E' ~3 N8 W1 T6 @
$ d! @9 A( w# _: O. |9 I6 D; O字幕文件
3 C3 n" Y7 A8 v5 F- U" Z( e& ~) Q: t. f
游戏的字幕文件是\redist\config和\redist\config\lang_main目录下的一些.lang文件,翻译以后用utf-8编码写入即可。写入以后是无法直
$ K; {/ m7 V, R$ Z
6 X2 \2 n j' f5 L# U接显示的,我们需要做一个小的变换,这需要用一个小工具来完成。
! r0 K1 _; u5 N( W
9 I$ ~5 }* J8 R0 l0 J( v比如说,我们要把游戏的字幕这样转换。uXXXXX中的XXXXX部分是这个汉字的utf-16编码的10进制数值。 # v3 g. C9 |8 O2 J
: D- x+ M [( S$ v% l$ z
转换前 5 V* U S# Q' ]' I8 p9 ?$ W/ q, }
<Entry Name="Start Game">开始游戏</Entry> , d3 O6 P/ t& r& a7 ?
转换后
$ A6 @7 ]( W( r) p# l0 s<Entry Name="Start Game">[u24320][u22987][u28216][u25103]</Entry> 2 P z& i# N. U9 {
; ^0 ]; p% X; r" c. W这个游戏是支持多语言的,所以我们可以仿照这些文件的样式,在原来的基础上追加一种语种:中文。
& D# l5 p9 c/ p1 V: g# Z我们暂时不考虑如何追加,而是按直接把英语改为中文的来说明。 * ], H( o$ k; Y
$ v7 t) r5 q* G7 t# k: S8 B H
字库文件 ; Q% Q. w0 K4 _. V2 ]% _/ T
e+ Y, e+ \1 s5 l) X L字库文件在redist\fonts\eng下面,是一个.fnt文件,对应多个.dds文件的形式。 * s4 w5 U. h% a- M: E+ T
游戏的字体分为多种,比如主菜单就是对应menu.fnt,menu_0.dds,menu_1.dds。 / |% Z7 _0 T a- _2 U1 K
我们如果需要增加汉字的话,可以追加一个menu_2.dds的中文图片字库。
$ [, e- _+ w; a5 imenu.fnt做相应修改即可。 * l: P% x. T f/ v
- F! _" A' c( v) Z* u比如说我们翻译了<Entry Name="Start Game">开始游戏</Entry>
; @' Q8 y- ]) [1 i3 ]% i* z9 a' [为 " i& f4 }; J5 w- D9 @7 d3 n
<Entry Name="Start Game">[u24320][u22987][u28216][u25103]</Entry> 9 Z7 A( F1 B# p( }* u
+ D3 Q0 Y6 a" j" w5 _! Y
我们需要做如下修改 ! g) q% a- R, I. K$ ^
# i( H3 i2 t8 N: q/ A# i我们把在菜单中用到的所有的不重复的字都提取出来,保存在一个文本文件里。 " f+ X+ S$ y; [6 l0 ~, R
这个工具如下
/ o( S; d, T5 j: d' |https://www.chinaavg.com/read.php?tid=21959 5 J! y; n* @7 ^6 L1 Y
然后用一个工具把这些字生成一个menu_2.dds的中文图片字库。 & I- A1 S' `" w
( e7 L% T- J$ s( R" Y" r对menu.fnt,我们需要做如下修改
/ _8 A7 q" {) m, C* H0 H1 |
) c6 e/ A7 j& M+ A' t把
" ]+ x8 N! m, O* g. o+ w. G9 B <common lineHeight="40" base="33" scaleW="256" scaleH="256" pages="2" packed="0" alphaChnl="0" redChnl="4" greenChnl="4" $ f7 O! w9 ]- \
2 F- e! w) \0 L" RblueChnl="4"/> % w( p* m4 ^) _; C; B( `
改为 . ]7 }# ^/ k2 E, W
<common lineHeight="40" base="33" scaleW="256" scaleH="256" pages="3" packed="0" alphaChnl="0" redChnl="4" greenChnl="4" * k3 ]& c- S4 q
8 W- Y& n3 _2 o0 y; b, U" ?blueChnl="4"/>
, t* |* V, D* m4 |! I7 D' s
3 ]; J( J8 i/ u$ Z) P把
0 k5 @5 p5 A+ k3 g <pages> % p5 v6 i. p! D% n% ~ k7 I" _
<page id="0" file="menu_0.dds" /> - h7 W* G/ n3 F4 R# G
<page id="1" file="menu_1.dds" />
2 t/ Q1 O9 _! V# s \2 c& x* M </pages>
1 M" W; K, `* C- Z. A改为
6 `0 `+ i' M6 |; J* N$ Z0 Z' w& o5 X <pages> $ `/ t1 F8 a& `$ L3 \
<page id="0" file="menu_0.dds" />
0 f6 F t" d+ ^, K2 e <page id="1" file="menu_1.dds" />
: P+ `8 z' J( ^: ^* O( v <page id="2" file="menu_2.dds" /> 8 M, l# i( @# f+ Z" s" T" K
</pages>
9 \8 J, h+ \& |0 A& ?$ g6 m P3 q( N3 d- H8 I
把
: }7 G1 F) O U( V1 | <chars count="190"> ' }* h) A! W, S
改为 1 ~8 A! D: z1 z" F3 O
<chars count="194"> - v/ V# Q. z( `0 A- Z! z1 C6 z9 H
3 z `# S! [0 q; B: Y) s在字符定义的最后加上
# g9 A: E5 q, F% i4 L9 K <char id="22987" x="31" y="0" width="30" height="29" xoffset="1" yoffset="2" xadvance="32" page="2" chnl="15" />
. _. C+ `$ B9 ^5 B <char id="24320" x="93" y="0" width="28" height="27" xoffset="2" yoffset="4" xadvance="32" page="2" chnl="15" />
& u4 [' t* ]8 k5 i6 J <char id="25103" x="62" y="0" width="30" height="29" xoffset="1" yoffset="2" xadvance="32" page="2" chnl="15" /> ' d4 z/ b+ ^3 f8 Q" M5 ?. E2 N: q0 l
<char id="28216" x="0" y="0" width="30" height="30" xoffset="1" yoffset="2" xadvance="32" page="2" chnl="15" /> ( ]4 ?* z6 C* x3 @* f+ {5 b ^
! f( p$ B$ X* k4 C( S
这4行是开始游戏这4个字在图片字库中的位置定义。 , l/ t3 v5 H) j$ ~
在用字体工具生成menu_2.dds的时候,会生成一个.fnt文件,这4行可以从这里面复制。
5 A7 w2 z! ?+ Y当然,字体工具生成的图片名不会是menu_2.dds,而是XXXX_0.dds,这需要我们改名的。
* ?; B4 B8 K) N0 R! X i' {9 Y7 K5 S" ?; L
字库生成
1 w1 [6 O; Z0 v* m+ J4 c. t9 E字库可以用Bitmap Font Generator这个工具生成。
& ^8 x# v, }6 _% V2 `下载
3 E. G! M- u: o. Ohttp://www.angelcode.com/products/bmfont/ - G1 U1 b" f; H7 Q# l% z {* N
* z! @* e' @$ A
字体定义文件要选xml格式,材质要选dds格式,位深度要选32(缺省是8) 9 k2 z9 u6 R. M! O& i. K; a
大小选256X256,一张图片不够,这个工具会自动生成好多张的。
( {+ m2 ]- `. S7 S2 [4 [如果想把尺寸设大一点应该也是可以的,我没有试验过,其他地方可能要相应修改。
3 t5 ~. L; C3 T3 M! }6 x. U9 O+ d+ i' H9 M8 a
注意点 ' x! @' O: F& J* m! _0 B% z4 _1 {
1.这个游戏使用了多种不同的字体,所以需要把字幕整理一下,整理出哪些字幕是对应哪个字体文件的。
# [4 U" L( B' t 这样才能筛选出不重复的汉字来生成字库。
$ m F( P9 W( m) O% V' a, Z: r2.需要制作一个工具,把字幕文件里的汉字转换为[u25103]的形式。 + c# `4 B9 u* x2 u+ E3 N
! h" B. V/ S3 O% e1 a$ [/ @% W以上就是这个游戏的全部汉化方法。
+ m9 w- T, ^0 B6 d$ g7 N" L3 J4 I. N* @, Y, K2 L0 K
|