这个游戏是单字节图片字库的游戏.2 t& l- E& E4 Q$ _
但是由于其中显示函数的部分使用了lua脚本,使汉化有了实现的可能性。
3 E1 A1 t! t) c0 N; ]" k在\paks目录下有2个包文件,script.opk,background.opk。) ^* W! J7 o! X, r
用gobread解包后把script.opk,background.opk移走,把script目录和script目录移动到根目录游戏便9 n& n, h+ X8 O! Y8 b
可以读取解包后的文件。
% A0 S ^. n& T( v D9 g5 `) k* t字幕文件在和script\dialog等目录里。
; r+ U% U# L: }& n; ^5 B6 a- f和显示有关的脚本主要集中在以下这个lua文件里4 H/ {) c! {& e
\gui\conversation\subtitlesmanager.lua
[" U X6 `) e还有以下这个函数也是需要注意的重点
( ]2 T4 m3 W+ k$ U/ h3 U! I' E2 |function AutoWrap(text,maxlen)" `# v. F# e9 f. I0 Z- y6 c
字体
! c1 A: l4 A6 O游戏的字体主要集中在以下这些文件里面,有些字体在不同的目录里有2份.
& R/ F% z, X0 h6 L5 b4 [( [每个图片共有256个字符图片.每个图片的高度是宽度的2倍。4 y' b9 ^* i2 f/ O
OpaliumFontLarge.bmp- B _& w% {" _9 M
OpaliumFontMedium.bmp& h9 m% T) u) z& S1 A& o) |
OpaliumFontSmall.bmp, p1 O1 y# v+ d
OpaliumFont.bmp: b' w8 X0 P9 r
StartupFont.bmp
9 p6 L1 J8 m9 _ e0 z9 {0 ~5 o( d& I
汉化思路
, p) O4 G3 Z: U, S我看了一下lua脚本,想了一下,想出了以下这个汉化方法。
9 d" a* e" I& R以显示16X16汉字为例
) E5 j1 a6 u/ D把256个图片改造为256个小模板。每个模板的大小是高1个单位,宽8个单位。
& J# t4 i: c8 ]) m/ |! A+ J( q7 A每个1X1的单位就用于显示字符里面的1个点。1个16X16汉字需要32块模板即可组装完成。3 V& ^7 K( ?3 X+ }
有人也许会说,原始图片的高度和宽度都不小啊?. ^' h4 a) J) a+ a3 N
其实没有关系,我们可以在lua脚本中用缩放来控制字符的高度和宽度,并且用修改lua脚本的方法来修改上下2行的位置。
- `4 t4 @$ H, o# A. U这样可以做到组成每个16X16汉字的32块模板之间没有接缝。& O0 N5 h" r% y1 c) Z, E
用这样的办法,我们就可以用单字节的图片字库显示出汉字来了。 |