这个游戏是单字节图片字库的游戏.
) \7 D3 Z4 g2 ~. q* ?8 b: K但是由于其中显示函数的部分使用了lua脚本,使汉化有了实现的可能性。
* a0 R ]$ w8 Q& `. q2 g9 a/ h在\paks目录下有2个包文件,script.opk,background.opk。
) T# ]4 e1 a$ U0 y# c用gobread解包后把script.opk,background.opk移走,把script目录和script目录移动到根目录游戏便3 `" V1 q! f9 U9 d
可以读取解包后的文件。3 d/ Q) ~: e# }' |6 ?; z4 F! V
字幕文件在和script\dialog等目录里。 w6 L9 m1 F; K- W7 n2 B( m: U
和显示有关的脚本主要集中在以下这个lua文件里
+ c+ \0 I V" O# y) D+ e\gui\conversation\subtitlesmanager.lua' M" p5 b% @8 k3 e3 q3 v) F( I
还有以下这个函数也是需要注意的重点
2 ?' Q! p5 x& { Z: K3 [function AutoWrap(text,maxlen)9 d$ K/ H( _+ |: @
字体! V1 @+ U: U0 f2 S
游戏的字体主要集中在以下这些文件里面,有些字体在不同的目录里有2份.
9 a- _6 G. P# y7 O每个图片共有256个字符图片.每个图片的高度是宽度的2倍。
& V& Z+ a8 h& d" p* @OpaliumFontLarge.bmp0 S2 R& _) m3 n* c( S
OpaliumFontMedium.bmp
2 f& D: \0 v( pOpaliumFontSmall.bmp! N+ Y, `7 @' w& c+ P! }0 s+ a/ \
OpaliumFont.bmp
* q8 `: ~* T1 ~; v4 w/ mStartupFont.bmp
) U0 R3 X1 b" P9 }
_. a/ I9 l) A. f* E% I汉化思路
" m7 i( N+ W! Z我看了一下lua脚本,想了一下,想出了以下这个汉化方法。' J. s/ g' ~3 K/ H# x: a9 g: G
以显示16X16汉字为例) l9 y4 H2 H8 x2 g" z, y# Z
把256个图片改造为256个小模板。每个模板的大小是高1个单位,宽8个单位。1 n) D$ r0 v, i% M5 \, U
每个1X1的单位就用于显示字符里面的1个点。1个16X16汉字需要32块模板即可组装完成。5 C' n2 f# [, r _; e4 g, e
有人也许会说,原始图片的高度和宽度都不小啊?" |# P- a# J5 o2 s0 {7 a; G
其实没有关系,我们可以在lua脚本中用缩放来控制字符的高度和宽度,并且用修改lua脚本的方法来修改上下2行的位置。
/ E, n/ l/ z Y; [3 O' s这样可以做到组成每个16X16汉字的32块模板之间没有接缝。0 n5 _% e1 ?8 q9 G3 J U+ S/ s: X
用这样的办法,我们就可以用单字节的图片字库显示出汉字来了。 |