冒险解谜游戏中文网 ChinaAVG

标题: 通用图片字库生成工具制作思路 [打印本页]

作者: shane007    时间: 2010-7-10 08:18
标题: 通用图片字库生成工具制作思路
关于通用图片字库生成工具,我也早有一个制作思路。
$ x% t9 Q0 Q9 z$ U( n* S  ?1 c0 m* H5 w- }! A6 Y+ X, x
先写出来,仅供大家参考。; z; Y6 J' D6 n) P% u3 }% d2 u# L
其实,要把工具做得通用化,关键是要在字库定义文件上下功夫。
. C& n* Y+ V% ~$ `9 U9 ^% p所以我设计了以下这样一个大致流程。8 z- j' X5 n# m6 F

5 S1 \2 v  P  B$ _1.图片字库的图片部分生成/ D" e9 e+ P( r8 i
对于不同类型的图片字库,其核心是相同的,即定义了一个图片字符的集合,让游戏能根据图片字库定义文件从图片字库中找出对应的字符所
" R! P7 Z& c: y7 _4 ~4 P在的区域。6 e7 m: _$ U' F. r' b2 N% T; s5 _
$ V8 i' V1 h! `# R/ ]8 R1 k3 c
因此我设计了一种通用图片字库定义格式。
% T" \# C) `% V8 L& r+ s$ R  x0 r这个格式是一个类似csv文件的结构,每行用逗号分割,对应一个字符的所有属性。6 t5 n/ M  ^1 G# U( |/ X
一个字符的所有属性有大约有20多种,比如字符的宽度,高度,间距等等,我们可以事先收集1批游戏的字库定义文件,* a: `. Z) t, t; ]  v, [9 M5 s
把各种属性总结归纳出来即可。
0 i* ~7 K. t3 G3 r2 K( T& Z& H2 Z( a: Y' T- ?& l+ Y/ A
所以,第1步操作是这样的2 G  \, v) I& s) f5 B- p
图形界面的主程序MakeFont.exe
# O' y, {) S5 ^6 R输入:所有不重复的字符列表AllChars.txt,以及图片的大小,字符宽高等各种参数: C% E# W) ~. V4 l0 ?- j; O  B4 E
输出:字库图片font.png,字库信息文件fontinfo.txt,通用图片字库字符定义文件define.txt  l/ [+ F! j! q! C4 B4 }
     字库信息文件fontinfo.txt保存了整个图片的信息,比如图片的宽度高度等等。7 ]& y9 Z3 B: C4 |! r0 Z# E8 [
     define.txt中以上面描述的格式保存了所有字符的所有可能的属性。
7 h4 f7 p6 M$ p4 K0 d& p$ m     每行对应一个字符。由于要把工具做成通用的,我们无法预知最终需要哪些属性,$ d& p3 y5 T. N
     所以只能把所有属性都生成出来。
' _" N: s8 a2 J; u, y     如果完成了这1部,就已经是一个很强大的工具了。
; h4 _  i0 Z' Q1 O: U4 s  s8 q     会编成的朋友可以制作一个小程序,把define.txt转化成游戏需要的定义文件的格式。
9 k1 l4 P; u- T# Y, N     当然,我们的目标是要制作出一个让不会编成的朋友也会轻易使用的工具,  [' T1 _7 O, b8 h6 h( m
     所以我们还需要制作一个define.txt到游戏需要的定义文件的格式的转换工具。  B8 |: d' ^" R# c
- o0 w- u1 q' ~  K+ Q7 \
2.图片字库的定义文件文件生成7 ?! g! K1 s& u+ b
  define.txt有了,下一步需要把它转换为游戏需要的定义文件的格式。
% h, }, }3 d) M3 l  我们把图片字库的定义文件分成以下2类。
. R0 n6 j/ y$ e$ G2 I7 j4 V9 o4 H  p2 y- D& Z
  a.文本类型0 p* C. n4 d; {' n1 q
    通常这一类型的定义文件用*.xml,*.txt等作为文件名.
2 D, e" h1 I8 z- o    6 h2 V9 ]& G4 v+ L2 j: w
    我们先取得游戏的定义文件,一般这个定义文件都有一定的格式。' B. H4 }1 v3 K  {
    我们可以在这个格式的基础上做出1个模版template.txt。模版分固定部分和循环部分。
$ [- u( Z. H# I5 B    循环部分定义了每个字符的属性,这些属性用活动的tag来表示.  C( B6 Q! I# a
    我们可以制作一个图形界面的工具map.exe,用这个工具可以设置活动的tag和define.txt的哪个属性相对应。9 n$ I0 T2 x! [) H  e7 ], \+ c& ]' B
    然后生成一个map.txt。/ Z, M$ ]( ?0 w& `+ z
    最后根据fontinfo.txt,define.txt,template.txt,map.txt 生成出我们需要的*.xml或*.txt定义文件。" n& d8 U3 r/ r$ z0 T4 x4 D

- \- x4 |0 v$ {' u  b.16进制文件类型' ~+ s# n- R+ E9 B1 d$ l
    通常这一类型的定义文件用*.fnt等作为文件名.6 y- s8 v- ?0 p
    制作过程也和文本类型的类似。只不过有些环节和文本类型略有不同。+ l& e- g8 j4 a
    我们把假定的文件名略微改一下。
; P' Y  R. V) Y1 l3 P    map_bin.exe,template_bin.txt,map_bin.txt
) D9 N, A  h( [* b    最后根据fontinfo.txt,define.txt,template_bin.txt,map_bin.txt 生成出我们需要的*.fnt等定义文件。
作者: bandaot    时间: 2010-7-10 12:57
你说的生成define.txt这一步比较简单, 关键还是define.txt到字库定义这一步怎么做到通用的问题
作者: shane007    时间: 2010-7-10 13:25
引用第1楼bandaot于2010-07-10 12:57发表的  :
" h$ {6 o  R" X9 G$ E  D你说的生成define.txt这一步比较简单, 关键还是define.txt到字库定义这一步怎么做到通用的问题

作者: shane007    时间: 2010-7-10 13:27
引用第2楼shane007于2010-07-10 13:25发表的 :   y6 N" R3 K- M: L. V+ @

. Y9 e, i3 J! G5 h7 p- L
/ g2 }' o# T# z9 z# i, R, U

- u. Z- x1 T: Z6 G) v' {' p; T" L3 F  O4 I. _8 W
是的,这个map.exe的功能就比较难做了。
* ^' u+ n9 |! @我想可以先支持几种经常被使用的格式,然后慢慢增加。4 }$ b- w, D* H9 g
要做成完全通用的估计很难。




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