研究了一下失忆症:黑暗后裔,很容易就实现了汉化。汉化方法和半影系列是一样的。 ! W( ?# R) N0 [ Y& ?# g5 ?- f
@3 W% k6 \% L; `: h下面说一下汉化方法
# L6 U+ F# S( L5 g6 g& ?
6 C' R- x- D3 Z: L3 u字幕文件 5 f* e$ r1 I p
! L/ Y& V: G1 d9 |
游戏的字幕文件是\redist\config和\redist\config\lang_main目录下的一些.lang文件,翻译以后用utf-8编码写入即可。写入以后是无法直 , w6 P: }, ~& O6 x/ u
' }8 \$ M# T- Z
接显示的,我们需要做一个小的变换,这需要用一个小工具来完成。
( y3 r2 _/ h; O( m2 g9 e; o3 ^- r [7 K( [5 o- y' E: g
比如说,我们要把游戏的字幕这样转换。uXXXXX中的XXXXX部分是这个汉字的utf-16编码的10进制数值。
+ u- t1 |1 w! C _" {) _2 x0 M) j s
转换前
. [) M6 E2 D2 N& G<Entry Name="Start Game">开始游戏</Entry>
) B# d! M; b0 G转换后 8 _9 R' o' u4 X) [5 F
<Entry Name="Start Game">[u24320][u22987][u28216][u25103]</Entry> * [: W4 f( D! R7 d
+ o; Q8 }- N$ {/ V这个游戏是支持多语言的,所以我们可以仿照这些文件的样式,在原来的基础上追加一种语种:中文。
# ~; h% p+ Y& U3 u% I, k5 f我们暂时不考虑如何追加,而是按直接把英语改为中文的来说明。 ; W7 T/ c% m9 s3 s
) @* C% d3 C1 V- }8 |' W字库文件 " C. P/ z# ~* t+ e8 r. J
4 H: k! l8 G% T$ D+ N3 Z( G字库文件在redist\fonts\eng下面,是一个.fnt文件,对应多个.dds文件的形式。 & q' r# o B) l1 W- X
游戏的字体分为多种,比如主菜单就是对应menu.fnt,menu_0.dds,menu_1.dds。
$ N! h4 h# G5 c0 P我们如果需要增加汉字的话,可以追加一个menu_2.dds的中文图片字库。
. z+ y) I4 E: l& cmenu.fnt做相应修改即可。 ) C% y' y) K7 p- k" [
" t0 O. K. h! s( X- ^: T5 F比如说我们翻译了<Entry Name="Start Game">开始游戏</Entry> 0 X# B, P0 x- z9 R
为 - i- I9 W8 G7 A1 V0 h$ T; k
<Entry Name="Start Game">[u24320][u22987][u28216][u25103]</Entry>
( x/ u9 }2 w8 x. E- _, _
! Z$ ], ~/ F& x2 Q& E W, y' c& t我们需要做如下修改 $ K9 M- n$ B: W7 d! i5 v0 q3 y$ L
: e" w! ~4 m9 \5 e我们把在菜单中用到的所有的不重复的字都提取出来,保存在一个文本文件里。
4 y* }- G) s+ J+ n$ K7 d. {3 B这个工具如下
8 m9 j8 {) X7 c6 ^* Shttps://www.chinaavg.com/read.php?tid=21959
+ ^+ H0 d& s; I% ?3 X7 R9 _5 k然后用一个工具把这些字生成一个menu_2.dds的中文图片字库。
0 ]! {2 G$ a* r* K/ `- W4 }
B: { B% l9 o, m/ o* v U对menu.fnt,我们需要做如下修改 - x+ ^9 E9 e W; U" h" D; l" L
; c- F. Y8 q1 E) Q) I- C+ \
把
+ ?# G5 W* I/ B. S: A <common lineHeight="40" base="33" scaleW="256" scaleH="256" pages="2" packed="0" alphaChnl="0" redChnl="4" greenChnl="4" 1 C8 z/ q; N: a+ H. d7 z/ M
3 ^9 p% T5 V, h0 c' Q5 qblueChnl="4"/>
$ n/ @% T; n' A( Y" @+ S5 b9 o2 W l改为 5 T5 R: t! C: ]% x0 a$ A, q
<common lineHeight="40" base="33" scaleW="256" scaleH="256" pages="3" packed="0" alphaChnl="0" redChnl="4" greenChnl="4" $ x3 z, v: {( Y' o
; @, y' n) p. v5 i" L3 ]* N* K: Q
blueChnl="4"/> 0 p! N+ V0 B2 l& S" V
+ r' E' g A/ X4 Y把
. }. c! U' A* v <pages>
$ l/ k3 s4 d( K- V2 q <page id="0" file="menu_0.dds" /> 1 P8 O# O& a1 F2 _
<page id="1" file="menu_1.dds" />
9 O9 y* T3 s, n0 h$ G7 l3 V# ? </pages> 1 _% Q+ C9 m, H* k/ I
改为
) D& ~" ?( j2 t7 x) s( H, k <pages>
/ B. o8 A, e8 ]- y- E3 B1 e9 O <page id="0" file="menu_0.dds" />
* e) F) u { u; | <page id="1" file="menu_1.dds" /> 4 m) J- @( P2 i8 y0 I5 U% W
<page id="2" file="menu_2.dds" />
* @' E# [! q0 P% E0 `# K" e2 B </pages>
: V2 Y; _+ c4 d; u9 |! C/ i8 o( v: L" e4 e( t- Y
把
5 {, C# E/ i0 n: C <chars count="190">
- O: k3 Y/ X3 C4 ~' p8 A改为
3 _& {5 F# r4 i3 ~' n <chars count="194"> / N4 Y5 h, B4 e4 G' B
* |: }' F$ s) [ ^$ i
在字符定义的最后加上 5 |- c) u9 h, h* {6 e0 E9 \/ Q
<char id="22987" x="31" y="0" width="30" height="29" xoffset="1" yoffset="2" xadvance="32" page="2" chnl="15" />
. t( c) Z* R5 {8 M- q+ ] <char id="24320" x="93" y="0" width="28" height="27" xoffset="2" yoffset="4" xadvance="32" page="2" chnl="15" />
6 y' H6 A+ K \, f; K# m <char id="25103" x="62" y="0" width="30" height="29" xoffset="1" yoffset="2" xadvance="32" page="2" chnl="15" />
/ ]5 H" I* H% J" H+ f& y <char id="28216" x="0" y="0" width="30" height="30" xoffset="1" yoffset="2" xadvance="32" page="2" chnl="15" />
6 s- Q v5 K2 B6 L } `. ~8 l- q# C6 ?
这4行是开始游戏这4个字在图片字库中的位置定义。 ) B- q- U% i* Y& L' C3 H
在用字体工具生成menu_2.dds的时候,会生成一个.fnt文件,这4行可以从这里面复制。
; [0 r- V& ]5 C, ~8 E当然,字体工具生成的图片名不会是menu_2.dds,而是XXXX_0.dds,这需要我们改名的。 5 X7 e% c0 K# n8 Z7 j
g1 z3 [2 w j+ c% m" A
字库生成 . `5 c: b1 `8 z7 q
字库可以用Bitmap Font Generator这个工具生成。
2 ?; w! b; l& g下载
4 H8 s2 X4 h0 G2 i( \ bhttp://www.angelcode.com/products/bmfont/
; u- |, U) Z Q
* M4 f$ s# F/ f- i+ l) G/ v字体定义文件要选xml格式,材质要选dds格式,位深度要选32(缺省是8)
) x" w( F6 e7 e9 d! b8 z9 d7 D# n. Q大小选256X256,一张图片不够,这个工具会自动生成好多张的。 0 ?5 k; q7 f/ J! }
如果想把尺寸设大一点应该也是可以的,我没有试验过,其他地方可能要相应修改。 3 d/ J: D. d$ U
0 w. ?9 N$ l/ w5 {9 w" V5 _
注意点 7 E" @, f) x7 m I" `2 v
1.这个游戏使用了多种不同的字体,所以需要把字幕整理一下,整理出哪些字幕是对应哪个字体文件的。
$ \# q! l9 y$ J 这样才能筛选出不重复的汉字来生成字库。
8 y* S# }1 j2 W: y2.需要制作一个工具,把字幕文件里的汉字转换为[u25103]的形式。
L5 Q- N7 f; l- ?, ?3 P; R$ ~+ W* z0 o3 S7 w/ A
以上就是这个游戏的全部汉化方法。 v+ u' c4 _9 C' y9 n9 F& w2 j
8 X8 m8 j/ h+ f& [/ _5 X H" Q8 a1 a |