这个游戏是单字节图片字库的游戏.
. y l; i3 u! f但是由于其中显示函数的部分使用了lua脚本,使汉化有了实现的可能性。+ b/ y% r' X5 N. s* ^; l f
在\paks目录下有2个包文件,script.opk,background.opk。/ u4 A% k" {( N# }7 Y D% x4 |/ z* u
用gobread解包后把script.opk,background.opk移走,把script目录和script目录移动到根目录游戏便
0 E7 f5 U" X0 W: J) j5 o7 v可以读取解包后的文件。9 S- i) u ~* ^
字幕文件在和script\dialog等目录里。
/ h* S* W$ X U1 E, V; J0 Z! F和显示有关的脚本主要集中在以下这个lua文件里/ M! x- B/ ~: N# F$ e
\gui\conversation\subtitlesmanager.lua
0 n* C9 j( d8 S& n" ~还有以下这个函数也是需要注意的重点
8 _$ S( H8 ?! A9 N: z2 m" Hfunction AutoWrap(text,maxlen)
6 e6 L1 Y. m8 d" J4 ] ?$ V字体0 h* t: g' y9 ?* N& a1 X
游戏的字体主要集中在以下这些文件里面,有些字体在不同的目录里有2份.& b% l: ~5 l% M' I0 V2 k
每个图片共有256个字符图片.每个图片的高度是宽度的2倍。2 J9 M1 s+ Z' S
OpaliumFontLarge.bmp
4 E# `" `% l7 y1 O) T4 pOpaliumFontMedium.bmp/ U0 K0 I# |. c* h/ l: ^
OpaliumFontSmall.bmp% w) F# X# W( I
OpaliumFont.bmp
+ s. n$ Y9 ?. n( o3 cStartupFont.bmp$ q4 ^: y# s$ e2 Y X0 o
9 _8 ~" H. i' k1 y6 Z汉化思路
" ]0 p. H8 ` Q4 A5 z0 l/ S* x我看了一下lua脚本,想了一下,想出了以下这个汉化方法。9 B5 c6 P3 {, v" M! X1 {" \5 w
以显示16X16汉字为例9 ~6 L5 P8 t2 k8 ]# T1 u; |
把256个图片改造为256个小模板。每个模板的大小是高1个单位,宽8个单位。2 C4 |- u& V. |9 D) R7 y0 C
每个1X1的单位就用于显示字符里面的1个点。1个16X16汉字需要32块模板即可组装完成。9 _6 I4 V6 X. W- w' @' H5 E
有人也许会说,原始图片的高度和宽度都不小啊?! T5 v1 J* k8 J
其实没有关系,我们可以在lua脚本中用缩放来控制字符的高度和宽度,并且用修改lua脚本的方法来修改上下2行的位置。
& Y3 ~4 T; f" R8 u: h$ N7 q这样可以做到组成每个16X16汉字的32块模板之间没有接缝。
7 t1 n# {' o4 q/ L" {用这样的办法,我们就可以用单字节的图片字库显示出汉字来了。 |