坦克大战毕业论文(6)

2019-03-10 15:35

康小武:游戏(坦克大战)软件的开发

和管理任务列表和任务对象。现在我们使用是基于对象的模式,因此我们使用了对象组合的方法,而其中我们的资源系统则成了这些对象的中介者。

使用这样的任务系统意味着我们可以使用对象组合而不是集成的方法来创建一个架构。我们的任务系统通过任务的接口控制任务对象,而我们的任务则通过调用对象接口来工作。这同时也以为着我们的架构不会有一个倒置的控制结构,而这往往是使用模板方法所固有的特性。取而代之的是我们的任务对象会来控制软件。或许这个架构可说成是一个对象架构,而不是一个类架构,但是毫无疑问他是一个架构。

《设计模式》这本书上讨论了很多对象组合的有点,也着重提出了面向对象设计的两个原则:

1. 对于接口编程,而不是对实现编程。 2. 尽量采用对象组合而不是集成。 2.4.4 基于帧的和基于函数的设计

有很多类型的软件对于帧定时不关心,在这些软件中函数可能要花费数秒,数分钟或者更长的时间才能完成。这种基于函数的操作比基于帧的操作更容易编程实现。

绝大多数游戏都必须有音频和视频方面的相应,还有在每帧里面计算许多动画和细节。没当一幅视频图像以及一段音频缓冲渲染的时候,我们也就创建了一帧。游戏可能以美妙50帧或者60帧的速度进行渲染。这种基于帧的操作要求游戏分在很小的时间片断上面执行。如果要进行一个耗时操作(超过了1/60S),它就必须被分成很小的片断或者是作为一个后台任务来运行。

对于我们的架构来说,基于帧的操作需要一个帧系统类,这个类可以通知我们的任务系统类什么时候应该调用与帧同步的任务。我们的任务系统也要能处理非帧同步的任务,这些任务我们称之为“异步任务”。

由于帧系统控制了什么时候应该调用帧同步的任务,我们也可以提供手动播放每帧和选择特定帧率的功能了。这既可以帮助检查动画播放效果的细节,也对其他的调试和测试有用。 2.4.5 动态和静态操作顺序

有很多类型的软件操作需要以一种特定的顺序执行。对于这些操作,我们必须以预定的顺序来调用函数,或者使用预定的顺序把任务提交到我们的任务系统里面

16

中原工学院信息商务学院毕业设计(论文)

去。这是一个静态顺序的例子。

游戏总是由于一组相互关联的显示和它们之间的转移组成的,它们之间一般没有预定的顺序,取而代之的是由玩家来决定下一步将会发生什么。这就是一个动态操作的例子。我们让任务对象能访问任务系统和提交新任务,这样我们的架构就提供了一个动态操作的顺序。

2.4.6 动态和静态对象生命期(以及所有权)

在一个层次化的系统里面,我们可能会发现父类会拥有一些为其派生类所使用的对象,而派生类也会创建一些其父类一无所知的对象。通常这些对象的生命周期是出层次化的结构内定的,而且继承的子类也无法动态地创建和删除它们。在这种意义上,这些对象的生命期就是静态的。

在一个基于对象组合的架构里面,想要知道什么时候一个对象拥有另一个对象就比较乱了。为了解决这个问题,我们可以将对象所有权的管理责任分给资源系统来做。如此一来,每个任务都可以随时按需连接系统资源而不必承担管理的责任了。我们把对象所有权的管理责任交给资源系统,把对象访问的责仟交给对象,这样就可以避免所有权方面的混淆。

我们可以在资源系统里面增加任务命令来使得这些对象的生命期动态化。我们可以要求资源系统以集合的万式取出和存入一批对象。例如,需要载入对象的任务开始之前,我们可以发出一个取出集合的命令?在这些任务结束了以后,我们可以再发出一个存入集合的命令。另外一个方法就是我们在应用程序的整个生命期都持有对象以时刻备用。

2.4.7 任务的水平集成和垂直集成

在一个层次化的系统中间,有可能看上去总有某些对象在控制着我们,而且我们与其他对象的关系是固定不变的,感觉任务就像是不直组织起来的,任何系统向高层的改变都会对系统底层的部分带来深远的影响。

在一个对象组合的系统里面,我们的程序结构看上去比较地扁平,而且我们与其他对象的关系也更加动态化,感觉任务更像足是水平式组织的,村于系统里某些对象的改变对于其他的系统里面的对象影响很小或者根本没有。

17

康小武:游戏(坦克大战)软件的开发

2.5 游戏设计中应该注意的问题

2.5.1 深度vs宽度

你一次提供给玩家的选项越多,你就会冒更大的风险,因为它可能会吓走害怕复杂界面的玩家。一个同时提供很多数目选项的用户界面称为一个宽阔的界面。如果你一次只提供几个选项,并且要求玩家依次做出多次选择来得到他想要的选项,这样的用户界面称为深长。

宽阔的界面允许玩家搜索整个界面来寻找他所需要的,但是在那样宽阔的排列中找到感兴趣的选项会花费一定的时间。一旦玩家知道了在哪里找到这些按钮或则调整盘,他就可以再次快速地找到它们。那些在培训上花费了一定时间(有时候相当长)的玩家会发现使用宽阔的界面非常有效;他们可以快速的定位他们需要的命令。一个商业客机的驾驶舱就可以看做是一个非常宽阔的界面;对这样大量的排列在一起的设备,飞行员几乎可以立即把他的手放在他需要使用的按钮上,这也使得飞行更加安全。另一方面,飞行员需要培训很长时间来记住所有的按钮。

深长的界面通常通过一个分层的目录或者对话框串来提供它们所有的选择。用户可以快速的明白每一个目录提供的内容。他不能提前知道他需要使用什么样的目录序列来得到他想要的选项,所以目录的命名和组织应该非常一致,这样才能正确地引导他们。即使他学会了怎样找到一个特定的选项,他每次也必须依次通过这些目录来得到这个选项。另一方面,使用一个设计的非常好的深长的界面几乎不需要什么培训。

同时提供一个宽阔的界面和一个深长的界面是一个不错的主意;深长的让新玩家使用,宽阔的让有经验的玩家使用。在PC上你可以通过为经常使用的功能设置快捷键来实现这个功能。PC键盘上的按键数目之多,可以让你很容易的构建一个宽阔的界面。控制台游戏机,由于可用的控制器按钮比较少而且没有鼠标来指示屏幕元素,所以它提供的创建宽阔的界面的机会就比较少。

如果你只能提供一种界面,我们推荐你在你的界面的广度和深度上应该大致平等;但是如果可以的话,一定要避免通过多于三或者四级目录才能得到某个选项。当确定怎样组织目录的时候,根据访问的频率对它们进行分类。最经常使用的元素最多应该使玩家通过一步或者两步就可以获得。最不经常使用的元素就可以放在目录层次中的最下层了。

18

中原工学院信息商务学院毕业设计(论文)

2.5.2 立即存盘的取舍

最近很多游戏发布的时候缺少了一个至关重要的特性,与其他游戏特性的缺少相比,这个产生的用户抱怨是最多的。是什么东西会产生这么严重的印象呢?不是别的,就是游戏的任何地方都能存盘的特性。在任何需要的时候都能保存游戏,这已经成为了游戏玩家的一个共识:而一旦游戏缺乏了这个特性,大家都会牢骚很大,抱怨个不停。

然而,某些游戏是可以不需要这个功能的。如果你要求在其中的任何地方都能保存游戏的话,有些游戏就根本没有意义了。你能想象在泡泡龙(Buble Bobble)中随心所欲在任何时候保存游戏么?不幸的是,现在大部人游戏不能怪不是可以逃避此特性的幸运儿。

可能有人会说如果允许在任何地方保存游戏的话,游戏的难度就会大大降低,这样将影响或是严重损失一个游戏耐玩度。这个理由由于不实现此功能来说倒是说的过去。大多数游戏采用的取代方法只能允许在某些特定的地方才能存盘,此时很容易向导一些信息,简化了存盘的实现。不幸的是,这个方法一般都会对整个游戏产生很坏的影响。玩家会感到被骗了,而且经常会觉得这个特性是故意被省略掉的以让他们不停的玩一个20分钟的片断来增加游戏的时间。有个更好的方法,那就是允许游戏在任何地方存盘,但是在游戏中某些关键的地方则要去掉这个功能,例如在和关底BOSS打的时候。 2.5.3 立即存盘为何如此困难

要在游戏中的任何地方都能存盘是一个让人头疼的任务——对于外行来说好像很简单,但是一档你深入进去着手来做的时候,你就会发现它会设计到一些难题。在一个游戏中,即使采用了很高明的对象重用策略,内存也会被分成碎片,而对象列表也会被搞的乱七八糟。因此,在任何时刻几乎都不可能搞清楚是否在内存中的某个地方某个对象正在被创建。解决此问题的一个方法是把游戏中的所有指针都换成句柄,而他们则可以利用一个查找表找出相应的对象来。不过,如果你没有使用句柄的话,还有另一个方法,那就是在存盘的时候把所有的指针转化都转化为句柄,然后在载入的时候在把句柄转化为指针。值得注意的是,这种方法要求在存盘之前与载入之后做一些额外工作。

还有一个大问题就是判断每个对象应该保存些什么信息。一旦决定了以后,就需要对每个对象类型都编写一些函数来进行数据的读写。由于大多数游戏里都有很

19

康小武:游戏(坦克大战)软件的开发

多类型的对象,因此这可能会是一个繁重的工作。此外,一旦有了任何数据结构的变化,所有的存盘记录就都没用了,而且还要编写信的代码。这就是为什么存盘功能往往被延期处理直到项目收尾才做的原因。在最坏的情况下,存盘的代码将没有被正常测试或是由于要按期结束游戏开发的压力而被完全忽略掉了。 2.5.4 独立于文化的游戏设计

除了要保证界面是为了日标语言进行设计的之外,还要保证你的游戏不要在与文化相关的方面作任何不成立的假设。举个例子,如果你的游戏中的角色沿路的左边驾驶的话,美国玩家就会惊异地发现车辆居然从他们的右边迎面驶来,除非你能在开始就告诉他们这一点。还有,如果你在用户界面亡有个“呼叫”按钮使用了一个图标表示它的功能,那最好能使用一个相对通用的图标,而不要使用一个老式的转盘电话的图标或者是传统的英国电话手作图标。 2.5.5 游戏设计与文化和政治敏感问题

最后一个问题是文化和政治敏感件的问题。虽然很多游戏的场景是设置在一个虚幻或者科学幻想环境中的,但是游戏本身可是在真实世界里发行的,一不小心它就会违背文化传统或舌是政府标准。举个例子,如果你至开发一个有暴力主题的游戏的话,那就可能需要考虑把调子降低一点,或名是提供一个过滤的方法去掉可能的侵犯性的内容,这要视你针对的市场而定。

20


坦克大战毕业论文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:临床试验观察表(CRF)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: