这个游戏是单字节图片字库的游戏.
( l; s1 g P8 W3 d Z9 b. Z: b但是由于其中显示函数的部分使用了lua脚本,使汉化有了实现的可能性。. H, m+ M# t; F+ b. F3 v/ X
在\paks目录下有2个包文件,script.opk,background.opk。
& D: U6 U+ f1 ~ c* D9 d8 r: w' x用gobread解包后把script.opk,background.opk移走,把script目录和script目录移动到根目录游戏便
% D* ~( q, j0 x" u4 t9 `- c可以读取解包后的文件。
$ ^, k7 k' }' U+ b) O' }字幕文件在和script\dialog等目录里。
T# J: {: C: j8 f, O* q和显示有关的脚本主要集中在以下这个lua文件里! I" \: V" S" g% c
\gui\conversation\subtitlesmanager.lua% t- Z0 }2 \* p/ m9 z9 \
还有以下这个函数也是需要注意的重点5 W& Y Y1 m9 Y
function AutoWrap(text,maxlen)
: p6 J, _5 m" B: Z: a- y字体& Q1 k3 u! O- Z( e* x( n6 w
游戏的字体主要集中在以下这些文件里面,有些字体在不同的目录里有2份.
3 r% U# O9 F6 x) A每个图片共有256个字符图片.每个图片的高度是宽度的2倍。
( ]: }7 S; S8 b& m) r% {OpaliumFontLarge.bmp
# u4 r& l9 w* I1 }5 ~+ |1 vOpaliumFontMedium.bmp
: Q' b @5 H f u. t& j( C5 OOpaliumFontSmall.bmp0 ~; H3 ]$ _# y6 C* R5 Y2 b' H
OpaliumFont.bmp% O* W+ I m$ @: G
StartupFont.bmp8 U. t) x5 z2 J* _( J
@: i: L/ I- o, {汉化思路
9 @ C6 b4 ]8 f# m& P. ^! S l我看了一下lua脚本,想了一下,想出了以下这个汉化方法。8 l# R" G5 G$ A6 w5 X0 l
以显示16X16汉字为例8 D9 u0 ~- @$ [2 c% }# Z" A
把256个图片改造为256个小模板。每个模板的大小是高1个单位,宽8个单位。
4 l! k. g5 l9 I0 _# G8 `$ ~& O每个1X1的单位就用于显示字符里面的1个点。1个16X16汉字需要32块模板即可组装完成。1 T, f" H. _; N/ k; n9 i
有人也许会说,原始图片的高度和宽度都不小啊?1 c5 k. ]. G# M. w% D& W
其实没有关系,我们可以在lua脚本中用缩放来控制字符的高度和宽度,并且用修改lua脚本的方法来修改上下2行的位置。# y. p$ e- S( d/ D0 q
这样可以做到组成每个16X16汉字的32块模板之间没有接缝。9 I- k# i" _5 |0 ]) h; |3 @1 Y$ @1 j
用这样的办法,我们就可以用单字节的图片字库显示出汉字来了。 |