这个游戏是单字节图片字库的游戏.. h! ]3 ?! G0 ]
但是由于其中显示函数的部分使用了lua脚本,使汉化有了实现的可能性。& s4 j a# o( ] M& M+ [
在\paks目录下有2个包文件,script.opk,background.opk。7 v* z3 |6 L4 U1 k4 l9 ?) L. t
用gobread解包后把script.opk,background.opk移走,把script目录和script目录移动到根目录游戏便: g+ I* e/ e+ s0 T
可以读取解包后的文件。
{1 @/ Y- a# P4 e4 D字幕文件在和script\dialog等目录里。* @* k, ?& h2 A
和显示有关的脚本主要集中在以下这个lua文件里
4 X" F0 X9 R0 }\gui\conversation\subtitlesmanager.lua
) r/ K8 Y' ^5 u还有以下这个函数也是需要注意的重点
% {$ F* ?' O. e/ B- u4 A4 lfunction AutoWrap(text,maxlen)% f- u' b! h/ _1 w& k2 D+ t
字体0 i) q z- c6 \9 ~6 f
游戏的字体主要集中在以下这些文件里面,有些字体在不同的目录里有2份.
# d8 B/ p, Z) V' c' e+ e每个图片共有256个字符图片.每个图片的高度是宽度的2倍。
) w# Q1 U1 F5 i/ O- ]' t0 U% AOpaliumFontLarge.bmp
! t2 d; B3 C! O3 Y$ _0 p7 hOpaliumFontMedium.bmp/ F5 \, v3 n5 d6 \
OpaliumFontSmall.bmp) t9 {" ]) ?7 R
OpaliumFont.bmp% ^9 |6 y9 B& v" ]/ _5 q
StartupFont.bmp
$ R+ ?7 f" e7 C: }4 v) x: I: A0 `7 \# y0 F2 Y* s' }/ }
汉化思路
' O, _& d: `, R( c) ?( w! r) M! q# a我看了一下lua脚本,想了一下,想出了以下这个汉化方法。
( r9 u1 r/ o$ F. q/ J1 L- f2 V以显示16X16汉字为例
+ r2 t3 x$ T# O U, J把256个图片改造为256个小模板。每个模板的大小是高1个单位,宽8个单位。
* b1 R6 t0 I5 y' _. q每个1X1的单位就用于显示字符里面的1个点。1个16X16汉字需要32块模板即可组装完成。
9 C# V2 |& D4 ~, m( A* P- ]有人也许会说,原始图片的高度和宽度都不小啊?( z/ p1 u( V& o, K! r! g+ B
其实没有关系,我们可以在lua脚本中用缩放来控制字符的高度和宽度,并且用修改lua脚本的方法来修改上下2行的位置。' r6 o1 \! b$ ]- ~: V9 n5 w
这样可以做到组成每个16X16汉字的32块模板之间没有接缝。
9 }' D, L! `" t: S$ Y3 _- q2 {用这样的办法,我们就可以用单字节的图片字库显示出汉字来了。 |