这个游戏是单字节图片字库的游戏.
! e( V" V9 N+ |7 e0 l( C但是由于其中显示函数的部分使用了lua脚本,使汉化有了实现的可能性。( n( ~5 d- l) s) t9 ^( o
在\paks目录下有2个包文件,script.opk,background.opk。4 @. c4 c& C7 P! m" z- i: a
用gobread解包后把script.opk,background.opk移走,把script目录和script目录移动到根目录游戏便
- v: B' o% ~( H6 M可以读取解包后的文件。( z8 k& S. U; W, r- [6 Q/ |
字幕文件在和script\dialog等目录里。
$ T9 w$ a- ~/ I6 ?* w- G; b7 u和显示有关的脚本主要集中在以下这个lua文件里
' e& a( E( d% R" J) |8 x! H\gui\conversation\subtitlesmanager.lua
8 ?1 O( [9 a- P r还有以下这个函数也是需要注意的重点
; l0 U# {4 Y! n. ?function AutoWrap(text,maxlen)
8 t# g: R/ ~! f; i T字体
- y) a9 y9 H/ X m' j游戏的字体主要集中在以下这些文件里面,有些字体在不同的目录里有2份.
4 W0 O- r$ B: ^) n( {: ?每个图片共有256个字符图片.每个图片的高度是宽度的2倍。
2 Z5 t- a$ D, v. eOpaliumFontLarge.bmp
. _: f8 R0 o/ w3 zOpaliumFontMedium.bmp" x0 d6 ^2 v( W2 t4 e
OpaliumFontSmall.bmp5 E5 o0 p F$ ?2 N
OpaliumFont.bmp ^# z- i' i# b* ] ]. `8 A Q- N
StartupFont.bmp4 M; q$ {$ W. s. G
- b6 z, f( W% B+ y4 B汉化思路
/ V! a$ Y t$ o5 n我看了一下lua脚本,想了一下,想出了以下这个汉化方法。
/ d5 e' h" X) y/ P/ k以显示16X16汉字为例
- b0 R4 V1 T6 r: \! N {把256个图片改造为256个小模板。每个模板的大小是高1个单位,宽8个单位。
5 r! ]8 ?9 |0 ^8 z每个1X1的单位就用于显示字符里面的1个点。1个16X16汉字需要32块模板即可组装完成。
# c3 l( H" `- ]7 N3 k' k有人也许会说,原始图片的高度和宽度都不小啊?
+ M" C) g/ z, b+ ?( q" z& q其实没有关系,我们可以在lua脚本中用缩放来控制字符的高度和宽度,并且用修改lua脚本的方法来修改上下2行的位置。
y4 G* b+ C1 ]9 i" [$ n/ C这样可以做到组成每个16X16汉字的32块模板之间没有接缝。: [0 d% D, V3 U. @% c, X
用这样的办法,我们就可以用单字节的图片字库显示出汉字来了。 |