这个游戏是单字节图片字库的游戏.
2 [$ `/ @- ^% `: R7 b0 k但是由于其中显示函数的部分使用了lua脚本,使汉化有了实现的可能性。
& l3 V3 O$ Y- J) C0 x/ G7 F在\paks目录下有2个包文件,script.opk,background.opk。
7 B! _# f3 _( w: Q1 p1 D+ a0 R; }* S用gobread解包后把script.opk,background.opk移走,把script目录和script目录移动到根目录游戏便" L1 Y9 g, d# V% @- K# y2 }. p3 K N
可以读取解包后的文件。
& }# a4 o9 i- ~, S, g$ t字幕文件在和script\dialog等目录里。& v6 M7 P. V% B
和显示有关的脚本主要集中在以下这个lua文件里$ J a D$ z% ^
\gui\conversation\subtitlesmanager.lua/ f* i4 ], @9 p, n3 ? K6 p: P$ C3 J6 `
还有以下这个函数也是需要注意的重点% [& B% i- o+ u" w: I* [. r
function AutoWrap(text,maxlen)
8 y+ o- X9 V& @# f+ |! P: R* N( D& P& K4 M字体8 P& G( Z/ o& s: f4 g
游戏的字体主要集中在以下这些文件里面,有些字体在不同的目录里有2份.4 W' N+ p( m7 J1 B2 O, R5 V
每个图片共有256个字符图片.每个图片的高度是宽度的2倍。
4 t6 M$ Z6 M& s. x; ]) N" p f5 N5 f% r1 nOpaliumFontLarge.bmp
0 m( o+ P* c2 K6 M6 h0 M& g6 `; JOpaliumFontMedium.bmp
/ y3 R$ _9 W8 X" @! y8 \' IOpaliumFontSmall.bmp6 K6 ~+ j! D' S# F2 r
OpaliumFont.bmp u& y6 h7 |3 l+ Q
StartupFont.bmp7 ~$ F) l2 z5 ^0 [& F: i# e3 |# r
* {, a2 i' g# [8 r7 Y3 y
汉化思路
6 @/ c. i8 o$ M8 T我看了一下lua脚本,想了一下,想出了以下这个汉化方法。" l; M3 o! S" c4 p5 X
以显示16X16汉字为例
7 T; J3 c# r5 P2 A2 L5 }把256个图片改造为256个小模板。每个模板的大小是高1个单位,宽8个单位。
* S |# v4 _7 \; S每个1X1的单位就用于显示字符里面的1个点。1个16X16汉字需要32块模板即可组装完成。
R( b& _1 j/ L: B+ t有人也许会说,原始图片的高度和宽度都不小啊?
8 }' t* }' x7 j. @+ u其实没有关系,我们可以在lua脚本中用缩放来控制字符的高度和宽度,并且用修改lua脚本的方法来修改上下2行的位置。8 q; h Y- Z) I# d
这样可以做到组成每个16X16汉字的32块模板之间没有接缝。+ }8 q7 O0 k. d, h, p% s I
用这样的办法,我们就可以用单字节的图片字库显示出汉字来了。 |