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

📄 g4.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>游戏数据结构和算法: &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;有人讲程序就等于数据结构加算法。这句话很有道理。我们所编的程序其实就是把某&nbsp;<br>
      种格式的数据(图片,主角的参数)经过一系列的转换,成为计算机屏幕上的数据(游戏本&nbsp;<br>
      身)。所有的数据都需要以某种方式存储,这就是数据结构。而算法因为是与数据结构密&nbsp;<br>
      切相关的,所以虽然它们不属于同一个概念,我把它们放在一起设计。 &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;我们通常所使用的数据一般可以分成两个部分:数据库结构和当前结构。 &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;这里的数据库不是什么商业数据库软件,而是游戏中所使用到的所有数据的集合。我&nbsp;<br>
      还没有见到有哪个游戏在存储这些数据时使用商业数据库软件(比如FoxBase)。也许它们&nbsp;<br>
      都被隐藏起来了吧,我猜想。但不管怎样,其意义是一样的,我们需要把所有在游戏中用&nbsp;<br>
      到的数据都以一定的形式储存起来。同商业数据库一样,数据库的组成也是由字段组成,&nbsp;<br>
      即数据元素。每个数据元素一般是一个类库或结构,有若干的成员。数据元素所组成的数&nbsp;<br>
      组就是数据库结构中最主要的组成部分。 &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;数据库的内容很多,而且按照一定的规则排列,而真正需要显示和当前需要计算的数&nbsp;<br>
      据却很少,有些数据还是计算的中间结果,比如主角的位置,主角的动作等,这时侯就需&nbsp;<br>
      要我们另外存储一些数据。它往往是数据库中的某个字段(数据元素),或一些数据的组合&nbsp;<br>
      。 &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;如果把数据结构按照功能分类,我们还可以把它分成主数据结构,模块数据结构。它&nbsp;<br>
      们的定义域是不一样的。 &nbsp;<br>
      &nbsp;&nbsp;&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>
      我一般使用索引ID号来代替指针。具体的使用是这样的:数据库结构是以数据元素为单位&nbsp;<br>
      的数组,数据元素的索引(ID)就是它在数据库数组中的下标。所有其它结构对该数据元素&nbsp;<br>
      的保存都只保存了该元素的ID号。指针只在从数据库根据索引得到元素时使用。这样的好&nbsp;<br>
      处很明显,ID号是整型数据,可以通过该值的范围判断出是否有效,只要在其有效范围内&nbsp;<br>
      ,再通过指针取值肯定是有效的,几乎跟本不会出现非法指针的现象。 &nbsp;<br>
      &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;程序开发计划 &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;有了要做什么和怎么做,下面也就是需要什么时侯做和由谁来做了。 &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;一般我们都会制定一系列的里程碑。比如演示版,原型版(体验版),测试版和正式版&nbsp;<br>
      等。在这之间也可能会有其它什么版本。然后制定完成每一个版本所需要的时间,主要内&nbsp;<br>
      容和验收标准。除此之外,我们还有: &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;程序中每个模块的制作时间的表格, &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;每个程序员分工的说明,工作量说明。 &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;编程过程中可能出现的风险和问题的说明。 &nbsp;<br>
      &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;在写完总计划以后,我们还会有更加详细的月计划,阶段性计划,我们还会写程序进&nbsp;<br>
      度表。我们所做的一切都是为了游戏程序可以按时完成。 &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;影响开发时间的主要因素有很多: &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;·资金因素:这些钱至少应该支持到我们可以把游戏做完,而且能够把我们的游戏向&nbsp;<br>
      市场推出; &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;·市场因素:是否是销售旺季,是否有同类产品产生竞争,本类型,题材的游戏是否&nbsp;<br>
      还受欢迎; &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;·策划因素:游戏的复杂性有多大,内容有多少,策划的进度是怎样的; &nbsp;<br>
      &nbsp;&nbsp;&nbsp; ·美术因素:美术的制作进度是怎样的,何时可以提供需要的内容; &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;·技术因素:用户的计算机硬件是否已经准备好。我们的技术是否会过时,开发新技&nbsp;<br>
      术的风险会有多大。还需要制作哪些外围工具; &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;·人员因素:程序员水平如何,配合状况如何。 &nbsp;<br>
      &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;程序设计人员需要仔细考虑这些因素,才能根据具体情况制定比较完善的程序制作计&nbsp;<br>
      划。 &nbsp;<br>
      &nbsp;&nbsp;&nbsp;&nbsp;但是,很不幸,我从没有按时完成一个游戏,所以我目前尚不知道妨碍我们按时完成&nbsp;<br>
      进度的到底是计划不够好还是执行的人不够努力。总之,在做计划时一定要留有余地,而&nbsp;<br>
      且我的经验是我们完成游戏的时间一般比计划的要多20%到30%。可是如果按照这样的计划&nbsp;<br>
      去做游戏的话,一定会把投资人吓跑的。于是在现实生活中这种状况就变成了“先斩后奏&nbsp;<br>
      ”,写报告的时侯说时间很短,而到时侯我们就因为某些原因不得不拖期,反正钱也花了&nbsp;<br>
      这么多了,必须再增加投资而把它做完。所以无论是直接制作游戏的人或者投资制作游戏&nbsp;<br>
      的人,我都希望他们可以对这件事有个比较客观的了解。也许在将来制作游戏可以不必再&nbsp;<br>
      加班,制作计划也可以按时完成,但是至少在我们这里,还必须随时面对它们,依靠我们&nbsp;<br>
      顽强的毅力和坚忍不拔的精神把游戏做出来。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
      &nbsp;</td>
  </tr>
</table>
<p align="center">&nbsp;</p>
</body>
</html>

⌨️ 快捷键说明

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