这个游戏是单字节图片字库的游戏.# |- a. ~+ l3 }0 k
但是由于其中显示函数的部分使用了lua脚本,使汉化有了实现的可能性。. u$ t6 y( E( t3 D, ]& r
在\paks目录下有2个包文件,script.opk,background.opk。
( ^$ a0 ^6 |2 z( p" [# _用gobread解包后把script.opk,background.opk移走,把script目录和script目录移动到根目录游戏便
3 V1 V/ P0 u0 t3 H- o可以读取解包后的文件。+ k9 J3 n7 ^. G1 x
字幕文件在和script\dialog等目录里。
! d k0 E, R4 `+ h; l* j/ g5 ?和显示有关的脚本主要集中在以下这个lua文件里9 q# s! w9 q7 B7 r, ]; [) H- C! E
\gui\conversation\subtitlesmanager.lua: C- [$ I4 A. c n+ `8 }
还有以下这个函数也是需要注意的重点
. W8 y1 g& P M- m1 i/ ^9 u/ u4 Efunction AutoWrap(text,maxlen)$ c: N" ^ e5 c
字体
2 I" u, u( |3 w3 p$ A @/ ^5 e游戏的字体主要集中在以下这些文件里面,有些字体在不同的目录里有2份./ r5 s$ q1 J+ [
每个图片共有256个字符图片.每个图片的高度是宽度的2倍。
; ~1 T; f. v% z5 H. l: x: Z, oOpaliumFontLarge.bmp
- A9 k% }% h7 QOpaliumFontMedium.bmp6 n. e. Y; H+ ]+ `9 \; `" t
OpaliumFontSmall.bmp4 M& x) @8 Y4 ~2 a. I. m
OpaliumFont.bmp
. q9 x) `9 V+ N) _7 d# c A" w XStartupFont.bmp
' w+ ~; B0 Z2 C! {2 f/ O! k/ U$ S, Q, c- V8 I, x- C
汉化思路
, @ J$ _& g( E2 N2 a' }) M0 S0 r( r我看了一下lua脚本,想了一下,想出了以下这个汉化方法。
' |) k( e2 p/ ?以显示16X16汉字为例) K: |. _; p Y3 h/ J6 [0 B R
把256个图片改造为256个小模板。每个模板的大小是高1个单位,宽8个单位。
; x/ |: i! u2 P4 Q- u每个1X1的单位就用于显示字符里面的1个点。1个16X16汉字需要32块模板即可组装完成。
1 f2 m3 t2 z& ^' f有人也许会说,原始图片的高度和宽度都不小啊?/ r, _8 {/ e# a# ^5 f, M) n; t
其实没有关系,我们可以在lua脚本中用缩放来控制字符的高度和宽度,并且用修改lua脚本的方法来修改上下2行的位置。
) F8 p$ }7 `) j& z这样可以做到组成每个16X16汉字的32块模板之间没有接缝。
# S/ i+ ]; I7 M7 }+ k用这样的办法,我们就可以用单字节的图片字库显示出汉字来了。 |