目录 u!1/B4!'O
h4 vm{ho
2 游戏实践讨论 1xTTJyoq
2.1 制作概况 |I1+"Mp
2.2 模块划分 #x~_`>mDN
2.3 游戏引擎 A&N*F "q
2.4 关键讨论 rYGRz#:~+
2.5 希望 CW0UMPE5
MsjnRX:c3u
)w"0w(
2 游戏实践讨论 )iSy@*nY
OoaY
现在有很多人对国产游戏事业是又爱又恨的。爱的是希望能够出现一批真正属于我们自己的好游戏,恨的是这些游戏制作者们太不争气,到现在也没有做出来。我非常感谢他们,因为假如没有他们,也就没有了我们。我也感到非常抱歉,因为我们的作品目前还不能让人们满意。我想多说什么都是无用的,只有实事才能说话。前面我所说的大多是理论上的内容,是我们在几年的游戏制作过程中总结出的经验。这些内容有些可能是错误的,因为我们还没有从正面证明它,有些对我们至今仍然只是个美好的愿望,我们自己还没有真正做到。所以请大家在阅读时针对自己的情况进行取舍。 `P.CNYR<J
下面我利用我们曾经做过的一个游戏,具体分析它的制作过程和制作方法。希望借此为那些关心游戏制作的人提供尽可能多的材料,让他们了解得多一些。也为那些有志于游戏制作的人提供一些经验和教训,让他们少走一些弯路。要说明的是,我们在处理某些问题的时候,所使用的方法很可能是非常普通的,甚至是笨拙的,别人看来可能有更好的办法。但是我不想与各位争论,假如您有什么更好的想法和办法,就把它用到你的游戏中去吧,我希望每一个喜爱游戏制作的人都能够制作出更好的游戏来。 C EqZ:c
treXOC9^B8
2.1 制作概况 &;v!oe
<赤壁>作为瞬间工作室成立以来的第一个作品,是1997年7月上市的,这个版本称作标准版。其后增加了网络功能,修改了一些Bug,增加了一些游戏事件,被称作增强版,增强版于1997年底上市。在此期间,我们又制作了日文版,韩文版和繁体版,又为国内的OEM厂商制作了相应的版本。据说<赤壁>全部的销售量超过了十万份,其中零售量超过一万五千份。这是与前导公司所有员工的努力分不开的。 7a<_BJXx
kZ[mM'u#
<赤壁>的策划工作开始于<官渡>制作的后期,1996年6月。而程序开始的时间要晚一些,在1996年9月。那时侯我们碰巧见到了另一部国产游戏<生死之间>的早期版本。这给我们的震动非常大,因为这两个游戏的类型比较接近,而我们才刚刚开始这个游戏的制作而已。从程序开始动工,到第一个版本发行,一共9个月,先后参与程序编写的程序员有5人,总的工作量大约40个人月。程序代码的总量约为90000行,2.6MB。大部分用C++编写,少部分由C和汇编编写。我们使用Microsoft Visual C++ 4.0编译<赤壁>标准版,Microsoft Visual C++ 5.0编译<赤壁>增强版。可执行文件大小约为500多KB。 o}~3JBnT
\_ -DyD#3
<赤壁>的工作进度如下: :]c=pH
程序设计期:1996年9月初至1996年11月底。 x/ I;nMY
底层制作期:1996年12月初至1997年2月底。 Yu3_=:
<C
游戏编写期:1997年3月初至1997年5月底。 `d*b]2
游戏测试期:1997年6月初至1997年6月底。 e2Jp'93o'
!6E:5=L^
日文版: 1997年8月。 @^CG[:|
OEM版: 1997年9月。 lzfDH=&
韩文版: 1997年11月。 G(\Ckf:
繁体版: 1997年12月。 ragSy8M
增强版: 1997年12月。 1nB@zBQu-
z%};X$V`J
需要说明一点:那就是我们的所有程序全部都是自己完成的,没有使用任何其他人其他公司提供给我们的代码。要知道,我们公司当时还没有能力去购买国外的游戏引擎,而我个人连SoftICE都不会使用,更不要说跟踪研究别人的代码了。我们对别人的学习方式非常简单和直接,就是观察。通过观察猜测它所使用的方法,然后考虑自己如何把它实现。这可能是我想到的最笨的一种方法,如果一个程序员能力强,在制作游戏以前,详细分析了解别的游戏的算法我想一定是非常有用的,他在制作游戏时一定可以节约不少走弯路的时间。 `Zf9$K|
另外,我们对<赤壁>的测试时间也是很短的,在程序基本稳定之后,我们大概只剩下两个星期左右的时间。所以有很多Bug。 W)-hU~^OM
RVP 18ub.S
2.2 模块划分 k7Oy5$##
3bts7<K=
赤壁的程序分成五个大的部分和19个模块: k4R4YI"jV
显示模块 U;gp)=JNT
战场显示模块 qGa<@ b
分为通用显示底层和游戏战场显示。 Qa?aL
通用显示底层是基于DirectDraw的一套函数。 .)`-Hkxa
有关内容请详见DDApi.h, DDCompo.h。 @?/\c:cp
o+^Eu}[.
游戏战场显示是根据游戏单元的类型,位置,状态,动画帧等数据将单元位图以适当形式显示在战场的适当的位置上。要显示的内容有:地形,单元(士兵/建筑/将领),攻击效果,魔法效果,远程武器物体,阴影等。 /"MJkM.~E
主要功能有:对图素的压缩和读取,图像的显示,单元归属颜色的转换,边界剪裁,遮挡关系,缩略图显示和响应,屏幕移动,阴影遮挡判断,攻击效果,魔法效果,远程武器物体的显示和移动。 P6we(I`"2
有关内容请详见CBDraw.h, 显示单元的位图 XnY"oDg^>
CBDrawM.h, 显示特殊效果,比如水。 )E`+BH
CBDrawOT.h, 显示特殊物体。 ][t6VA
CBMini.h, 显示缩略图。 BD'NuI
CBMap.h, 图素的操作。 d*%Mv[X:<