这个游戏是单字节图片字库的游戏.
9 X' m' p# v( i% p/ _6 v但是由于其中显示函数的部分使用了lua脚本,使汉化有了实现的可能性。: S) t S$ W2 |9 B( k- b
在\paks目录下有2个包文件,script.opk,background.opk。# Z( o# f+ ]8 P8 ]. F
用gobread解包后把script.opk,background.opk移走,把script目录和script目录移动到根目录游戏便& s3 l$ @4 J% l8 j
可以读取解包后的文件。
6 f( I6 \: z0 K字幕文件在和script\dialog等目录里。# M$ ]3 T0 l/ S
和显示有关的脚本主要集中在以下这个lua文件里
: U' h A8 |0 v0 M, Q\gui\conversation\subtitlesmanager.lua+ e: K- N5 }# M" Y. t
还有以下这个函数也是需要注意的重点2 _# c' t- i! `) Y( f
function AutoWrap(text,maxlen)5 ?, `% M& p8 x
字体
6 G3 O/ O9 ]8 T% P( X游戏的字体主要集中在以下这些文件里面,有些字体在不同的目录里有2份.
! E6 x7 x |/ p1 M$ ~每个图片共有256个字符图片.每个图片的高度是宽度的2倍。( `4 U$ K; `: h% [1 B
OpaliumFontLarge.bmp
: N! G4 s8 h" V& K3 S+ hOpaliumFontMedium.bmp
) b9 `# L- m! C+ I i" J+ A6 `OpaliumFontSmall.bmp+ F7 o: |: Z! l2 ]/ ~( U$ p
OpaliumFont.bmp4 B7 v9 [5 G3 ~; X% V/ w
StartupFont.bmp
) k7 B: R! v" j# {" z# p
& C. U% U( P8 {2 T" f, L1 V( Y汉化思路
9 M" d8 l8 b& { I# m' p& T7 H我看了一下lua脚本,想了一下,想出了以下这个汉化方法。
. n! j* ^% |" ^1 Z) M+ G! s以显示16X16汉字为例* q2 Y6 c2 W P+ d3 G
把256个图片改造为256个小模板。每个模板的大小是高1个单位,宽8个单位。. l$ H5 x5 N2 v2 N
每个1X1的单位就用于显示字符里面的1个点。1个16X16汉字需要32块模板即可组装完成。. _; W6 n8 z. f7 c" v4 i
有人也许会说,原始图片的高度和宽度都不小啊?( K5 d% W7 u5 c. V8 O5 H
其实没有关系,我们可以在lua脚本中用缩放来控制字符的高度和宽度,并且用修改lua脚本的方法来修改上下2行的位置。
1 S0 K1 ^( j/ J这样可以做到组成每个16X16汉字的32块模板之间没有接缝。
( d( x% E; d5 G" Z用这样的办法,我们就可以用单字节的图片字库显示出汉字来了。 |