这个游戏是单字节图片字库的游戏.
' z7 J) N4 X( Z4 K+ Q: D但是由于其中显示函数的部分使用了lua脚本,使汉化有了实现的可能性。
0 C, M5 l9 ^" [& \6 N在\paks目录下有2个包文件,script.opk,background.opk。2 ?4 N! c/ E _) y& ~+ C$ Q8 {
用gobread解包后把script.opk,background.opk移走,把script目录和script目录移动到根目录游戏便
) X" ~/ b3 y8 e% ?9 {可以读取解包后的文件。- U& s8 V; Q" V1 y5 U# X1 w
字幕文件在和script\dialog等目录里。
& ^! ]* o; X: }9 W h3 B, [和显示有关的脚本主要集中在以下这个lua文件里
1 i6 E* ~; T2 t2 b\gui\conversation\subtitlesmanager.lua
( {# O% y, C5 e, Q$ F6 T还有以下这个函数也是需要注意的重点
; O. C' a1 W8 `5 C+ Sfunction AutoWrap(text,maxlen)
- T9 F. ?2 [! Z4 @5 D字体: l4 ?( v, _/ |' \8 e3 i
游戏的字体主要集中在以下这些文件里面,有些字体在不同的目录里有2份.
! W' z* W! f2 e5 u3 Z2 m: A每个图片共有256个字符图片.每个图片的高度是宽度的2倍。
" w" m1 R. O6 z1 r9 p7 H9 ^9 MOpaliumFontLarge.bmp& ?2 j+ z* B [* o
OpaliumFontMedium.bmp
% Y k6 L& }( [# ^( TOpaliumFontSmall.bmp1 ?6 E% m/ {- i5 T
OpaliumFont.bmp+ U7 f6 v' b2 p8 P, w4 U% u8 x" ?
StartupFont.bmp
+ j( X0 U' z( o8 A8 \6 ^2 @" `$ H4 X$ n3 h l7 Q
汉化思路# X5 J- }: q9 p. Q; X0 f* i% F
我看了一下lua脚本,想了一下,想出了以下这个汉化方法。: e! f2 C$ I; I1 X7 ~7 B
以显示16X16汉字为例3 k. U/ E% s# c2 i% ~8 _; y
把256个图片改造为256个小模板。每个模板的大小是高1个单位,宽8个单位。
/ y; j6 c% U( `每个1X1的单位就用于显示字符里面的1个点。1个16X16汉字需要32块模板即可组装完成。
5 z8 \0 W8 X* E9 g$ f0 B有人也许会说,原始图片的高度和宽度都不小啊?; N9 J7 i+ S# X2 a) K- s, v3 f2 c
其实没有关系,我们可以在lua脚本中用缩放来控制字符的高度和宽度,并且用修改lua脚本的方法来修改上下2行的位置。% [$ w# |4 y2 v- {& Z
这样可以做到组成每个16X16汉字的32块模板之间没有接缝。
* f6 g& ?# \5 E: j K/ C用这样的办法,我们就可以用单字节的图片字库显示出汉字来了。 |