这个游戏是单字节图片字库的游戏.6 D; f8 a% r6 s8 M4 E
但是由于其中显示函数的部分使用了lua脚本,使汉化有了实现的可能性。
" |' c6 z1 d, S. l# j+ j1 \; U在\paks目录下有2个包文件,script.opk,background.opk。
0 N+ L% r/ }; t6 ~用gobread解包后把script.opk,background.opk移走,把script目录和script目录移动到根目录游戏便6 l* C5 @0 Y/ a
可以读取解包后的文件。
3 d: l9 T+ K4 c, i" m+ d字幕文件在和script\dialog等目录里。
7 m+ w0 {0 \# ?- u# x- H和显示有关的脚本主要集中在以下这个lua文件里8 u. ^4 V+ X4 Z" ] D
\gui\conversation\subtitlesmanager.lua( _- O) s, d8 k, M% t/ ~& V) N0 y6 J
还有以下这个函数也是需要注意的重点" J8 u/ T" Y) D: z! D1 l
function AutoWrap(text,maxlen)8 \4 C0 O) _% C. w! }! c
字体1 w: U7 g5 }4 D4 m: e& D7 K
游戏的字体主要集中在以下这些文件里面,有些字体在不同的目录里有2份.) z: M7 _5 v- C* a+ b
每个图片共有256个字符图片.每个图片的高度是宽度的2倍。 [8 A9 v- h! c3 z
OpaliumFontLarge.bmp
) O: b i1 u7 |, KOpaliumFontMedium.bmp+ z6 v7 z+ ~3 e0 ]6 X+ p2 [
OpaliumFontSmall.bmp Y o+ }7 ?' s; F8 D3 l$ i2 F; g$ G
OpaliumFont.bmp# H# t( o: R' X5 X* C$ B) C
StartupFont.bmp
) Q* `+ Z* U8 G3 e7 N
4 j3 k8 @* _/ V; s) S& E6 a; F" ~汉化思路1 d5 B) C/ Q6 P7 s! `; x4 {
我看了一下lua脚本,想了一下,想出了以下这个汉化方法。7 P+ z5 E* @, A6 t
以显示16X16汉字为例
$ C7 i* C8 {6 y. ~4 X1 c把256个图片改造为256个小模板。每个模板的大小是高1个单位,宽8个单位。* k& i; O, u$ b! e3 h3 i' w2 s
每个1X1的单位就用于显示字符里面的1个点。1个16X16汉字需要32块模板即可组装完成。
- O; J1 \( i( O7 U9 Z7 p( I% U* O: p有人也许会说,原始图片的高度和宽度都不小啊?
; v" C- r0 I: {! R9 P其实没有关系,我们可以在lua脚本中用缩放来控制字符的高度和宽度,并且用修改lua脚本的方法来修改上下2行的位置。
* g8 [0 c) E$ o3 {这样可以做到组成每个16X16汉字的32块模板之间没有接缝。* O5 ~/ _. [$ E1 `. ~
用这样的办法,我们就可以用单字节的图片字库显示出汉字来了。 |