冒险解谜游戏中文网 ChinaAVG

标题: 纵向点阵模板复用法----图片AVG汉化新思路(2009.8.14更新) [打印本页]

作者: shane007    时间: 2009-8-13 22:31
标题: 纵向点阵模板复用法----图片AVG汉化新思路(2009.8.14更新)
最近又想出来一个新的汉化方法,不过还不成熟,在此先简单写一下,记录下来。
1 C! t+ \8 r2 n8 j$ b) x接下去还需要制作一些工具来统计和验证。
+ ]0 ]# Y& o$ b; d+ P8 x
4 f; l$ l, h! @% n前提 / N  y/ ~5 |0 x& I; Q1 ]8 Q" a
此方法的适用前提是相邻的2个字母图片之间可以做到无缝连结。
7 G9 W% s! }6 T* |或者是通过修改参数可以做到相邻的2个字母图片无缝连结。
$ q; l& ]/ f, q1 j# h% j要做到这一点应该不难。
0 s$ N& ^7 z/ [
5 O$ `6 X8 o* f9 I3 n2 Z' ?5 K基本思路 % k  @( x/ ^$ a, X5 _
一般的图片字库大约是定义了256个字母,用这些字母来拼凑出对话中的句子。 # E5 G7 C4 d$ Y9 I5 V
一个中文AVG中用到的不重复的中文字一般有1000-2000个,大大超出了256的范围。 " o8 g% l0 O7 A! v. K. D
有没有办法用256个小图片来拼凑出1000-2000个中文字呢? : d) k! a) \% ?+ M
我想出了一下的这个方法。我把它叫做纵向点阵模板复用法。 . f" |" W+ _* Z5 ~

: j: ~" O5 ]7 p7 N. ?这个思路来源于点阵字库。
' V9 m- g, h$ W1 ~! _: L我们先看一下8X8的中文点阵字库。8X8的中文点阵字库每个字是由8X8共64个点组成的。 : l0 Q" Q: a& U
这8X8共64个点中,每一列我们把它叫做一个纵向点阵模板。 5 W$ x, S: b4 B; N& @( E8 E
这样的纵向点阵模板最多有几种呢?对于1列是8个点的8X8中文点阵字库来说是2的8次方,
1 @- n6 o; m, |刚好是256种。 . f, Z/ e" K  k& J, f; K; ^: c# M
1 l, S( f; p0 M( |& s$ w/ u
我们把图片字库的每一个字母都定义为这256种纵向点阵模板中的一种。
& Z1 ?: a, V# ~% G$ r" W# m这样就能把所有的中文汉字都拼凑出来了。是不是很简单。
  d0 G, P9 z3 G- G0 ?; P8 R' O' ?- o# q2 _3 a7 s. y( g
一些问题   ]) v* O3 w% I" j: K
如果在8X8中文点阵字库的基础上定义纵向点阵模板的话,有以下几个问题。
9 t9 t  l( r9 Q1 j2 J. N1.8X8中文点阵字库比较小,所以不放大的话基本是看不太清楚的。 , o+ u4 S: B2 v, D, z
  一般来说,我们需要把定义的纵向点阵模板在横向和纵向都放大2倍。
! z4 I! k' ]& ]% Z' f6 X  这样基本可以看清楚了。也就是说1个点都变为4个点再定义到图片上。 7 g$ w$ s- K0 @* @
  对于一些看不太清楚的点可以手工修改一下,是它看起来更清晰一些。
4 Y2 j! e3 w8 o" j, y! G* V. {: {, C9 c% Z3 g8 B9 ^0 `3 d
2.字幕文件的大小将会是原来的8倍 ( y& W! b8 N3 o$ _. ]
  这个很好理解,原来表示一个字符需要1个图片,现在需要8个纵向的小图片才能拼凑出一个中文字。 4 E# ^4 a# c$ j. N* t. N8 d
  不过现在电脑的内存都比较大,载入一个10多M的字幕问题应该不大。 0 r- h; q, W# u9 H% i
  但是怕游戏内部有限制。
- q  [% T4 N8 r/ b% I0 T' V; e3 Q2 {6 g$ g' V
高于8X8点阵的情况
9 _6 N4 W% A) N; i# w由于8X8点阵比较小,看起来比较吃力,是不是有可能拼凑出高于8X8点阵的汉字呢?
0 W9 n8 I# s( |可能性是有的。 9 G$ s" o5 R( N" j
! p4 E5 j7 u+ ~7 f
1.假如游戏不仅在横向可以做到图片的无缝连结,还能在纵向的上下2行也能做到无缝连结的话。 . T1 B4 v" ~8 a. T
  我们就可以利用上下2行来拼凑出一个16X16点阵的汉字。
/ K3 @, W" y/ d9 u2 |7 R7 c  也就是说原来需要8个纵向的小图片,现在需要上下2行共2组共32个纵向的小图片来拼凑出一个汉字。
% A. ]) ^4 b( o7 k  这样的话,字幕文件的大小将会是原来的32倍。 6 F" ?+ M$ v9 `. T4 q
  这样做的效果应该是不错的,也不需要再放大了。
6 Y: W/ ^3 ?: C- e' [; r0 ]: L
3 B: q, V( j1 F( w) Q2.还有介于8和16的点阵,应该也是有可能性的。
  g8 K; j8 r# Q/ d5 m  ]9 Z  这就和具体的游戏有关系了。要看这个游戏使用到的不重复的汉字共有多少个。 , G$ x8 ^$ t; Y7 o3 \  F
  然后再用程序计算出最少要用多少个纵向点阵模板才能表示出这些汉字。
+ B. Y9 ?7 r: Q  如果要超过256个才行的话,就行不通了。 ! B& a5 t/ `% y! B$ I
+ W3 v1 A' N* E  ^
  这个新思路暂时先写到这里,欢迎看得懂的朋友提问和发表看法。
/ N9 _, J, K1 Y4 j
6 x- Q* x% r* U1 n-------------------------------------------------
" Z+ p; O1 X5 |) ~! T! R/ z2009.8.14更新
6 X* }6 Y( S9 P2 M8 Q6 d放上一张图,说明一下什么是左右和上下的无缝连结。' z: y! V* V( \  C' \; _
这张图片来自游戏静物前传,我把图片字库全部给涂上颜色。8 `: U& l0 K+ d: Q
放入游戏就看到了如下的效果。象这样的游戏应该还有不少。$ b* @7 J8 e/ m; I$ P- H: {
但是对于这个游戏来说,图片字库的宽度不知道是在什么地方被设置的。
* O: u% ]/ {! B- _" o2 o所以暂时无法使用本方法。- G* I0 R# G" d
[attach]13956[/attach]
作者: shane007    时间: 2009-8-14 16:19
2009.8.14更新
作者: clark    时间: 2009-8-14 20:46
图片宽度的定位能否解决?需要修改还是保持原样?' Z$ l" x1 k2 e/ d$ Z4 \$ w& p! F
特别是对于图片宽度的定位不是一个线性关系的。
作者: shane007    时间: 2009-8-14 21:09
回楼上的 , L% r, y3 ^' X) w- ], P  P3 a

5 c& v( C$ h' ]  {0 u图片宽度的定位能否解决?
1 i; J" x! k3 c: V, r对于静物前传这个游戏还没找到修改的办法。 1 t/ x3 W0 n6 }6 l, f
不过别的游戏应该可以。一般来说每个字母的图片的宽度被定义在一个XML文件里面,是可以修改的。 5 z  y+ q5 j3 H/ a& }. m

+ \, f* a3 I+ h0 f. `需要修改还是保持原样? 1 j# Y! l$ _! u$ H* i8 p
当然是要修改的。如果你看懂上面的方法的话,应该知道要把宽度都修改为1个像素。 / o' ?" P5 B! n7 Q. V3 M1 H
3 x3 d; Z4 Q( V3 i& `4 c4 _9 I
特别是对于图片宽度的定位不是一个线性关系的。 ( Z  G- W' ]' }7 l, \% X$ _
你这个问题我没看懂。你是指不等宽的图片吧? 4 e/ p& Z4 @+ E1 O/ ?5 k) w( U
把宽度都修改为1个像素就行。 6 [# R7 P8 R. A5 M8 }" ?6 Z6 g* V

9 U+ E- }, J! w( y5 B. e欢迎提问。
作者: clark    时间: 2009-8-14 21:25
版主回的真快啊!
1 [# n( F! z. u2 J( \$ v+ F鼓掌!!  U  k7 x8 V5 b% p! y+ @) m, s

3 S8 q( W8 @- v, A5 \谢谢回答。
作者: beegame    时间: 2010-3-14 16:24
我想了2天后,想明白了你这种方法。不清楚是不是,希望007给予解正
  V7 m+ m  Y" G! V' Q8 F: t2 V5 k8 q
以"我”字模板为例子 12X12,
3 J" x5 F' Z3 S% G1 M  y0 v( l9 H! F9 @" _+ v' `
[attach]15503[/attach]6 {# y1 k" @9 K

( g4 I$ e. x0 f( i4 x“我”字模板 * |/ M& x6 Q2 P8 @

) s6 m" S0 F" T [attach]15504[/attach]
" u: {4 B# c& \# q4 U4 Z1 `+ j) W* B' a( z# p
汉化测试的效果"美国”8x8
( i' x  D3 c- j, V& t+ L, N+ X9 y, d
[attach]15505[/attach]
作者: shane007    时间: 2010-3-14 20:09
看来你已经搞懂了一半。
. o. H3 J! ?5 u0 A6 x, b/ V4 l2 d1 {
2 T  K/ U7 W& |& Q每个模板的定义方法就像你的图片所示。
/ i# a& ~) u# z6 a但是,你把每个模板定义为1X12的大小,这是不对的。3 B6 J# ]/ |7 J1 M1 M
1X12的模板有多少种呢?有2的12次方也就是4096种,但是由于游戏是单字节的,7 s* r$ ]7 m5 a
显然无法定义这么多种模板,最多定义256种模板。2 z2 k2 ^% a$ s6 B+ @. }# D# N+ O3 k
1 o4 x8 p4 C3 W3 t' o2 A
所以,我们要把模板定义为1X6大小的,每个汉字由24个1X6的模板来拼而不是12个1X12的模板。
7 [7 y" I5 R7 a5 f& P  ?, r6 |也就是说一个汉字也分上下2行来拼。
作者: shane007    时间: 2010-3-14 20:09
看来你已经搞懂了一半。
4 Y, F: [" e" }1 C7 w* C
( O+ }, g* I* r! l每个模板的定义方法就像你的图片所示。
$ P6 O- E" h1 }8 V0 Z但是,你把每个模板定义为1X12的大小,这是不对的。
, y, o1 r, b. a8 f1X12的模板有多少种呢?有2的12次方也就是4096种,但是由于游戏是单字节的," m- w( t+ P8 F2 ^  r
显然无法定义这么多种模板,最多定义256种模板。/ I4 C+ m8 h7 }, b6 ?  f
' I- W; X3 K% `1 Z, H- R1 p9 e6 `
所以,我们要把模板定义为1X6大小的,每个汉字由24个1X6的模板来拼而不是12个1X12的模板。
' w* J: C8 f. o0 `; G6 Q; [也就是说一个汉字要分上下2行来拼。




欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/) Powered by Discuz! X3.2