⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 g7.htm

📁 PC游戏编程
💻 HTM
字号:
<html>
<head>
<title>游戏制作</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
body {  font-size: 14px}
td {  font-size: 14px}
a:active {  text-decoration: none}
a:link {  text-decoration: none}
a:visited {  color: #FFFFFF; text-decoration: none}
a:hover {  text-decoration: underline}
-->
</style>
</head>

<body bgcolor="#e8ffe8">
<br>
<table width="85%" border="0" cellspacing="0" cellpadding="0" align="center">
  <tr>
    <td>2&nbsp;&nbsp;游戏实践讨论 &nbsp;<br>
      &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;现在有很多人对国产游戏事业是又爱又恨的。爱的是希望能够出现一批真正属于我们&nbsp;<br>
      自己的好游戏,恨的是这些游戏制作者们太不争气,到现在也没有做出来。我非常感谢他&nbsp;<br>
      们,因为假如没有他们,也就没有了我们。我也感到非常抱歉,因为我们的作品目前还不&nbsp;<br>
      能让人们满意。我想多说什么都是无用的,只有实事才能说话。前面我所说的大多是理论&nbsp;<br>
      上的内容,是我们在几年的游戏制作过程中总结出的经验。这些内容有些可能是错误的,&nbsp;<br>
      因为我们还没有从正面证明它,有些对我们至今仍然只是个美好的愿望,我们自己还没有&nbsp;<br>
      真正做到。所以请大家在阅读时针对自己的情况进行取舍。 &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;下面我利用我们曾经做过的一个游戏,具体分析它的制作过程和制作方法。希望借此&nbsp;<br>
      为那些关心游戏制作的人提供尽可能多的材料,让他们了解得多一些。也为那些有志于游&nbsp;<br>
      戏制作的人提供一些经验和教训,让他们少走一些弯路。要说明的是,我们在处理某些问&nbsp;<br>
      题的时侯,所使用的方法很可能是非常普通的,甚至是笨拙的,别人看来可能有更好的办&nbsp;<br>
      法。但是我不想与各位争论,假如您有什么更好的想法和办法,就把它用到你的游戏中去&nbsp;<br>
      吧,我希望每一个喜爱游戏制作的人都能够制作出更好的游戏来。 &nbsp;<br>
      &nbsp;<br>
      2.1&nbsp;&nbsp;制作概况 &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;赤壁&gt;作为瞬间工作室成立以来的第一个作品,是1997年7月上市的,这个版本称作&nbsp;<br>
      标准版。其后增加了网络功能,修改了一些Bug,增加了一些游戏事件,被称作增强版,&nbsp;<br>
      增强版于1997年底上市。在此期间,我们又制作了日文版,韩文版和繁体版,又为国内的&nbsp;<br>
      OEM厂商制作了相应的版本。据说&lt;赤壁&gt;全部的销售量超过了十万份,其中零售量超过一&nbsp;<br>
      万五千份。这是与前导公司所有员工的努力分不开的。 &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;赤壁&gt;的策划工作开始于&lt;官渡&gt;制作的后期,1996年6月。而程序开始的时间要晚一&nbsp;<br>
      些,在1996年9月。那时侯我们碰巧见到了另一部国产游戏&lt;生死之间&gt;的早期版本。这给&nbsp;<br>
      我们的震动非常大,因为这两个游戏的类型比较接近,而我们才刚刚开始这个游戏的制作&nbsp;<br>
      而已。从程序开始动工,到第一个版本发行,一共9个月,先后参与程序编写的程序员有5&nbsp;<br>
      人,总的工作量大约40个人月。程序代码的总量约为90000行,2.6MB。大部分用C++编写&nbsp;<br>
      ,少部分由C和汇编编写。我们使用Microsoft&nbsp;Visual&nbsp;C++&nbsp;4.0编译&lt;赤壁&gt;标准版,&nbsp;<br>
      Microsoft&nbsp;Visual&nbsp;C++&nbsp;5.0编译&lt;赤壁&gt;增强版。可执行文件大小约为500多KB。 
      &nbsp;<br>
      &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;赤壁&gt;的工作进度如下: &nbsp;<br>
      程序设计期:1996年9月初至1996年11月底。 &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;底层制作期:1996年12月初至1997年2月底。 &nbsp;<br>
      游戏编写期:1997年3月初至1997年5月底。 &nbsp;<br>
      游戏测试期:1997年6月初至1997年6月底。 &nbsp;<br>
      &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;日文版: 1997年8月。 &nbsp;<br>
      OEM版: 1997年9月。 &nbsp;<br>
      韩文版: 1997年11月。 &nbsp;<br>
      繁体版: 1997年12月。 &nbsp;<br>
      增强版: 1997年12月。 &nbsp;<br>
      &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;需要说明一点:那就是我们的所有程序全部都是自己完成的,没有使用任何其他人其&nbsp;<br>
      他公司提供给我们的代码。要知道,我们公司当时还没有能力去购买国外的游戏引擎,而&nbsp;<br>
      我个人连SoftICE都不会使用,更不要说跟踪研究别人的代码了。我们对别人的学习方式&nbsp;<br>
      非常简单和直接,就是观察。通过观察猜测它所使用的方法,然后考虑自己如何把它实现&nbsp;<br>
      。这可能是我想到的最笨的一种方法,如果一个程序员能力强,在制作游戏以前,详细分&nbsp;<br>
      析了解别的游戏的算法我想一定是非常有用的,他在制作游戏时一定可以节约不少走弯路&nbsp;<br>
      的时间。 &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;另外,我们对&lt;赤壁&gt;的测试时间也是很短的,在程序基本稳定之后,我们大概只剩下&nbsp;<br>
      两个星期左右的时间。所以有很多Bug。 &nbsp;<br>
      &nbsp;<br>
      &nbsp;<br>
      2.2&nbsp;&nbsp;模块划分 &nbsp;<br>
      &nbsp;<br>
      赤壁的程序分成五个大的部分和19个模块: &nbsp;<br>
      显示模块 &nbsp;<br>
      战场显示模块 &nbsp;<br>
      分为通用显示底层和游戏战场显示。 &nbsp;<br>
      通用显示底层是基于DirectDraw的一套函数。 &nbsp;<br>
      有关内容请详见DDApi.h,&nbsp;DDCompo.h。 &nbsp;<br>
      &nbsp;<br>
      游戏战场显示是根据游戏单元的类型,位置,状态,动画帧等数据将单元位图以适当&nbsp;<br>
      形式显示在战场的适当的位置上。要显示的内容有:地形,单元(士兵/建筑/将领),攻击&nbsp;<br>
      效果,魔法效果,远程武器物体,阴影等。 &nbsp;<br>
      主要功能有:对图素的压缩和读取,图像的显示,单元归属颜色的转换,边界剪裁,&nbsp;<br>
      遮挡关系,缩略图显示和响应,屏幕移动,阴影遮挡判断,攻击效果,魔法效果,远程武&nbsp;<br>
      器物体的显示和移动。 &nbsp;<br>
      有关内容请详见CBDraw.h,&nbsp;显示单元的位图 &nbsp;<br>
      CBDrawM.h,&nbsp;显示特殊效果,比如水。 &nbsp;<br>
      CBDrawOT.h,&nbsp;显示特殊物体。 &nbsp;<br>
      CBMini.h,&nbsp;显示缩略图。 &nbsp;<br>
      CBMap.h,&nbsp;图素的操作。 &nbsp;<br>
      CBShadow.h,&nbsp;阴影的计算和显示。 &nbsp;<br>
      CBOther.h,&nbsp;特殊效果的显示和计算。 &nbsp;<br>
      &nbsp;<br>
      界面显示模块 &nbsp;<br>
      根据游戏设计需要,在显示器相应的位置上显示游戏的各层界面。 &nbsp;<br>
      它分为两个部分:界面底层部分和游戏界面部分。 &nbsp;<br>
      界面底层是属于底层部分的通用函数库。它包括按钮,对话框,滑块,检查框等界面&nbsp;<br>
      元素的实现。 &nbsp;<br>
      有关内容请详见DDBitmap.h,&nbsp;显示位图的基类。 &nbsp;<br>
      DDButton.h,&nbsp;按钮。 &nbsp;<br>
      DDCheck.h,&nbsp;检查框。 &nbsp;<br>
      DDList.h,&nbsp;列表框。 &nbsp;<br>
      DDMenu.h,&nbsp;菜单。 &nbsp;<br>
      DDScroll.h,&nbsp;滚动条。 &nbsp;<br>
      DDText.h,&nbsp;文字。 &nbsp;<br>
      &nbsp;<br>
      游戏界面主要有:游戏主菜单,新游戏菜单,读取进度菜单,保存进度菜单,网络选&nbsp;<br>
      择菜单,系统设置菜单,任务提示菜单,结束菜单,错误处理对话框等。 &nbsp;<br>
      有关内容请详见Interfac.h,&nbsp;提供基本的游戏界面接口函数。 &nbsp;<br>
      Interfa1.h,&nbsp;处理所有的按钮Button信息。 &nbsp;<br>
      Interfa2.h,&nbsp;处理所有鼠标操作发出的消息。 &nbsp;<br>
      net_face.h,&nbsp;网络部分界面。 &nbsp;<br>
      Marco.h,&nbsp;所有按钮的消息ID。 &nbsp;<br>
      CBprompt.h,&nbsp;游戏战场中屏幕右方信息的显示。 &nbsp;<br>
      CBAarray.h,&nbsp;对游戏元素的查询。 &nbsp;<br>
      DDComUn.h,&nbsp;针对游戏中下达命令时的命令组。 &nbsp;<br>
      &nbsp;<br>
      过场动画模块 &nbsp;<br>
      显示公司标志,制作群,历时回顾,片头,片尾和过场动画。 &nbsp;<br>
      它有两个部分,第一是播放视频图像,第二是调用其它进程。 &nbsp;<br>
      有关内容请详见CBAvi.h,&nbsp;视频图像的播放。 &nbsp;<br>
      Mciapi.h,&nbsp;播放AVI文件的底层函数。 &nbsp;<br>
      VCMApi.h,&nbsp;高效率的播放AVI的底层函数。 &nbsp;<br>
      CBGame.h,&nbsp;播放结尾。 &nbsp;<br>
      Interface.h,&nbsp;程序状态的转换。 &nbsp;<br>
      &nbsp;<br>
      单挑显示模块 &nbsp;<br>
      武将单挑时出现的专门画面。本部分与原始设计有出入,原始设计中可以对单挑进行&nbsp;<br>
      操作,后来删减称为只播放一段Video。有关内容请详见CBAvi.h。 &nbsp;<br>
      &nbsp;<br>
      控制模块 &nbsp;<br>
      鼠标控制模块 &nbsp;<br>
      根据鼠标的位置设置鼠标的形状,对鼠标的操作对响应单元发出命令。 &nbsp;<br>
      主要内容有:鼠标点击检测,目的地模式,命令构造,可建造区域判定,鼠标形状转&nbsp;<br>
      换。 &nbsp;<br>
      鼠标点击检测,主要判断鼠标点击的位置是否在某个单元上或地形上。详见&nbsp;<br>
      CBMouse.h。 &nbsp;<br>
      目的地模式,主要控制鼠标选择了单元(命令主体)后,可能对单元下达的命令的模式&nbsp;<br>
      ,根据不同的命令可能需要不同的目的地类型和命令参数。详见CBCtrl.h。 &nbsp;<br>
      命令构造,通过鼠标的点击选择或按下某个,命令按钮,构造出具有命令主体,命令&nbsp;<br>
      ID和命令客体的命令,放到命令队列中,供执行。详见CBCtrl.h。 &nbsp;<br>
      可建造区域判定,在建造建筑时需要判断哪里可以建造哪里不可以,&nbsp;并且显示出来&nbsp;<br>
      。详见CBBuild.h。 &nbsp;<br>
      鼠标形状转换,鼠标移动到某个界面或某个单元上时,或处于命令构造阶段时,需要&nbsp;<br>
      对鼠标的形状做一定的改变,以显示当前的操作状态。详见CBMouse.h。 &nbsp;<br>
      &nbsp;<br>
      命令处理模块 &nbsp;<br>
      根据鼠标和人工智能发出的命令,传送给对象单元,并将其转化成为单元的相应状态&nbsp;<br>
      序列。 &nbsp;<br>
      根据单元状态,判断单元状况,更改单元的状态。 &nbsp;<br>
      详见CBCtrl.h,&nbsp;命令的构造保存和传递。 &nbsp;<br>
      CBRun.h,&nbsp;命令的执行。 &nbsp;<br>
      CBRDelay.h,&nbsp;命令执行时需要的一些变量。 &nbsp;<br>
      &nbsp;<br>
      &nbsp;<br>
      攻击计算模块 &nbsp;<br>
      根据敌我双方的攻防力量,计谋的实施和阵型计算每一次打击敌人生命的损失。 &nbsp;<br>
      详见CBRun.h,&nbsp;攻击计算。 &nbsp;<br>
      CBZhenFa.h,&nbsp;阵法计算。 &nbsp;<br>
      &nbsp;<br>
      行军控制模块 &nbsp;<br>
      根据单元的位置,速度,目的地和地形数据,计算行军路线,设置单元的下一步。详&nbsp;<br>
      见March_n.h。 &nbsp;<br>
      &nbsp;<br>
      网络控制模块 &nbsp;<br>
      游戏数据在网络上的传递,纠错。模拟机的建立和管理。详见Network.h。 &nbsp;<br>
      &nbsp;<br>
      策略模块 &nbsp;<br>
      君主策略模块 &nbsp;<br>
      计算机一方根据战场双方的力量对比和战斗模式计算对单元的生产,对敌人的攻击,&nbsp;<br>
      产生命令。 &nbsp;<br>
      详见TEmperor.h。 &nbsp;<br>
      &nbsp;<br>
      将领策略模块 &nbsp;<br>
      每一支部队根据将领的属性,士兵的状况调整战斗的方式或判断撤退。 &nbsp;<br>
      详见TGeneral.h。 &nbsp;<br>
      &nbsp;<br>
      本能策略模块 &nbsp;<br>
      士兵单元面对周围的情况产生固定的基本反应。 &nbsp;<br>
      详见Tai.h。 &nbsp;<br>
      Tbnbase.h,&nbsp;人工智能中需要的数据结构。 &nbsp;<br>
      CBEyes.h,&nbsp;人工智能与游戏主体结构之间的接口。 &nbsp;<br>
      &nbsp;<br>
      文件模块 &nbsp;<br>
      资料数据文件模块 &nbsp;<br>
      地形和单元图素的图像文件,相应控制数据文件。单元的各项属性数据文件,操作用&nbsp;<br>
      数据文件,界 &nbsp;<br>
      面位置数据文件。 &nbsp;<br>
      详见CBData.h,&nbsp;游戏中使用的单元属性全局数据结构。 &nbsp;<br>
      CBMap.h,&nbsp;游戏中使用的地图图素,单元图素全局数据结构。 &nbsp;<br>
      CBGame.h,&nbsp;游戏中使用的单元全局数据结构。 &nbsp;<br>
      存储数据文件模块 &nbsp;<br>
      存盘用数据,记录战场上的所有单元的状态和思考数据。 &nbsp;<br>
      详见CBGame.h,&nbsp;存盘。 &nbsp;<br>
      其它模块 &nbsp;<br>
      文件封装模块 &nbsp;<br>
      为减少程序使用的文件的数量,增加程序的安全性,将大量的图像文件和数据文件封&nbsp;<br>
      装起来,供程序调用。 &nbsp;<br>
      详见L_Allbmp.h,&nbsp;L_Image.h,&nbsp;L_Save.h,&nbsp;L_Scan.h,&nbsp;L_Text.h,&nbsp;Tools.h。 
      &nbsp;<br>
      &nbsp;<br>
      声音模块 &nbsp;<br>
      背景音乐和音效。有混音和音量控制。 &nbsp;<br>
      详见DsWave.h,&nbsp;播放WAV文件。 &nbsp;<br>
      文字模块 &nbsp;<br>
      在非中文系统下显示汉字,日文,繁体汉字和韩文。详见puthz.h。 &nbsp;<br>
      &nbsp;<br>
      地图编辑器 &nbsp;<br>
      为使美术人员方便快捷规范地制做战场地图,提供专门的地图编辑器。同时为整个游&nbsp;<br>
      戏的文件系统, &nbsp;<br>
      显示系统做技术上的准备。 &nbsp;<br>
      这是一个单独运行的程序,详见Mapedit。exe。 &nbsp;<br>
      &nbsp;<br>
      安装程序 &nbsp;<br>
      将游戏安装和卸载。详见Setup。exe。 &nbsp;</td>
  </tr>
</table>
<p align="center">&nbsp;</p>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -