这个游戏是单字节图片字库的游戏.
9 V1 h& ]& E& Q& d- S4 t但是由于其中显示函数的部分使用了lua脚本,使汉化有了实现的可能性。
6 c1 N! Y X7 N1 t/ g' b7 O8 U: ~! @在\paks目录下有2个包文件,script.opk,background.opk。7 \. t6 e( F: g1 @
用gobread解包后把script.opk,background.opk移走,把script目录和script目录移动到根目录游戏便2 i6 D6 t8 |( e( f& S8 o& C6 }
可以读取解包后的文件。
D8 C, h$ h# Z( G% p字幕文件在和script\dialog等目录里。
" o; Z: ], {+ f A+ y和显示有关的脚本主要集中在以下这个lua文件里 h8 V, R5 e* [: `& ^4 g- [: S
\gui\conversation\subtitlesmanager.lua
) A6 j+ s6 L r+ v还有以下这个函数也是需要注意的重点5 u5 I. Y7 K. _" W, |
function AutoWrap(text,maxlen)4 X7 H' f' L5 S* {- p
字体, L# h0 p" c5 q6 a+ R! X
游戏的字体主要集中在以下这些文件里面,有些字体在不同的目录里有2份.
" Z& g5 A* b* e8 ?( d! ]每个图片共有256个字符图片.每个图片的高度是宽度的2倍。
6 }: y$ Q8 Q: Y6 X" nOpaliumFontLarge.bmp
$ Q- E9 C5 l, o& v% W2 r qOpaliumFontMedium.bmp
i6 u/ e2 Q8 i% T* r4 F! Y. K8 iOpaliumFontSmall.bmp
8 b# V7 g4 e' x. n3 { jOpaliumFont.bmp
8 k9 r0 X X+ pStartupFont.bmp
+ ]+ H, ?6 s5 M2 a' t$ X% ?& ]; R6 o1 B* ?- K v
汉化思路1 j5 p& F: |4 t9 s7 _. M
我看了一下lua脚本,想了一下,想出了以下这个汉化方法。4 `7 T; M N; L, N o+ N' _8 o
以显示16X16汉字为例
& V: Q! z* e$ y把256个图片改造为256个小模板。每个模板的大小是高1个单位,宽8个单位。
2 E: Y6 {$ g% e! a \5 o# o每个1X1的单位就用于显示字符里面的1个点。1个16X16汉字需要32块模板即可组装完成。1 t/ \1 D( N. {2 ?6 E3 w
有人也许会说,原始图片的高度和宽度都不小啊?& v1 X" ]9 f7 W4 }% Y
其实没有关系,我们可以在lua脚本中用缩放来控制字符的高度和宽度,并且用修改lua脚本的方法来修改上下2行的位置。
6 B% D9 n& b. M' \& Z这样可以做到组成每个16X16汉字的32块模板之间没有接缝。2 W1 r: b. w! ]6 L/ V
用这样的办法,我们就可以用单字节的图片字库显示出汉字来了。 |