裴小星的博客

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

第6章 声音和音效

  对于XNA Framework 4.0,有好几种方法来实现声音效果。在之前的XNA版本中,开发者使用一个名为“跨平台音效制作工具 ”(XACT)的专用声音工具。使用XACT,开发者可以汇集声音文件来被内容管道处理并且使用XNA Framework的音频API来实现声音效果。在XNA 3.0中,XNA小组添加了一组独立的API来进行Microsoft Zune的开发。在XNA 4.0中,这两种方法仍然可以使用。XACT更健壮和强大,但它只能用于使用了“HiDef”设置的游戏,而简化的声音API来两种设置中都可以使用。在这一章里,我会向您展示如何用两种方法实现声音效果。

  既然简化的音频API支持所有的平台,为什么还要用更复杂的XACT呢?在许多方面,XACT为您提供了一个迷您的声音工作室,您可以简单地编辑声音的音量、音调、循环和其它属性而不用处理任何代码。另外,还有一些您会在本书中用到的很棒的XACT特性。

  XACT的实现比简化音频API提供了更多的特性,代价就是它更加复杂。为了让您更好地学习它,这一章中的大部分例子和本书剩下的部分都会使用XACT进行声音处理。不过,简化的音频API也会在本书的例子中使用。您可以随意的在本书接下来的部分使用简化音频API而不是XACT,但是请注意您声音部分的代码将会和这些例子中使用的有所不同。

第7章 人工智能基础

  您已经创建了一个精灵管理器来绘制和更新程序中的所有精灵。不过,目前您拥有的全部就是一些在程序启动时创建的骷髅球精灵。甚至更糟,那些精灵都没有移动——它们只是呆在原处不停地自转。这并不能算是做了什么,您需要加入一些动作和其它激动人心的东西。在这一部分,您会添加一些代码来随机地产生自动精灵,并使它们飞过屏幕,迫使玩家四处移动,并花点功夫来避免撞上它们。

  与其一波一波地创建对象或一次创建所有对象,您更希望它们在一个随机区间内被创建。这将为游戏添加一些多样性,并且使玩家保持猜测。要做的第一件事就是创建一些变量来帮助您定义创建自动精灵的频率。

第8章 整合

  到目前为止,您已经构建了一套可靠的设计,并有了一个良好的开始,未来它可能变成一个相当酷的游戏。再次重申,游戏的主题是:让玩家控制一个精灵,尽量避免在追逐精灵飞过屏幕的时候碰到它们,并设法抓住躲避精灵。现在您需要增加一些得分规则和游戏逻辑,并做一些其它的微调来让您的游戏成为您希望的样子。

  在本章里,您需要做的第一件事情就是增加一些得分规则。当您编写一个游戏程序并着手研究得分规则时,第一步是去决定哪些事件会触发得分的变化。有时某种类型的武器击中了玩家,得分将发生变化。有时,玩家自己击中某些物体,或者玩家完成某些任务(即回答对某个问题、解决了一个难题,等等)时,您也会去改变得分。

  在这个游戏中,当一个敌对的精灵离开屏幕而没有冲撞到玩家(意味着玩家成功地躲开了那个精灵)时,您将改变得分。

  由于这种得分机制,您需要为每一个敌方精灵设置分数。某些精灵可能比其它精灵值更多的分数,这取决于它们的速度或其它一些因素。

  除了决定如何计算分数,您还需要在屏幕上绘制得分。我们将会先解决这个问题,然后看看如何在一个敌方精灵穿越屏幕时调整得分。

  除了在游戏中增加得分计算和学习用SpriteFont类绘制文本之外,在本章中,您还将通过为每个类型的精灵引入不同的精灵位图和声音的方式为您的精灵增添一些变化。您还需要一张背景图片,研究游戏状态,以及在游戏中增加能力提升功能。

第9章 3D游戏开发

  正如您在这本书里看到的那样,用XNA里面的2D图像就能做许多很酷的事情了。然而,得益于当今强大的显卡和处理器,最近3D图像领域已经取得了长足的进步。随便拿一款最近的第一人称射击游戏,只要您的硬件支持,在任何特定时间游戏所能达到的精细水准和屏幕上飞过的物体数目将让您为之震惊。3D图像确实是未来发展的方向,如果您想认真地从事游戏开发,这可能正是您需要花大量的时间和精力去关注的。

第10章 3D模型

  在上一章,我提到如果您有足够的图元(就像您前一章中用到的三角形)就可以在XNA中绘制任何您想绘制的东西。尽管这是对的,但是当您试图绘制一艘飞船、一条龙或者别的物体时,您需要在代码中定制不同的顶点,并且需要几百甚至几千个三角形,您将会为此头痛不已。

  通常情况下,当绘制复杂物体时,将用到3D模型。从本质上来说,3D模型就是构成图元所需的顶点的集合。在模型中,也可以使用颜色和纹理。这些模型通常是在XNA外通过第三方建模应用程序来创建的。用于创建3D模型的著名的工具有:3D Studio Max,Maya,Blender,Lightwave和Modo。Blender是一个功能完善的免费工具,深受我XNA课上学生的喜欢。Blender可以从http://www.blender.org下载。另外一款著名建模免费工具是XSI Mod Tool,它可作为XNA的一个插件。XSI Mod Tool可以在网站http://www.softimage.com/products/modtool下载。

  用这些建模软件创建的模型可以保存成好几种文件格式——在不同软件之间可以相互兼容的。XNA支持.X和.FBX格式的3D模型。在XNA项目中加载和绘出这些模型文件,能使您不需关注每个特定的顶点和纹理就能绘制和操作精细复杂的图像。从而使您可以将精力集中在平移、旋转、操纵模型或者游戏可玩性等问题上。

第11章 创建第一人称摄像机

  摄像机是三维游戏中的一大要素,选择最好的摄像机并进行正确的操作,能决定一个游戏的成败,它就跟游戏的故事情节、配乐和图像一样重要。尽管对摄像机的操作如此重要,却经常跟个人喜好有关(某些玩家很上手的摄像机可能并不会被其它玩家所喜欢)。因此,许多游戏允许玩家们切换到不同的视角,让他们能够选择最适合他们的游戏方式的摄像机。

  本章,我们将操作第一人称摄像机,讨论在三维空间(比如飞行模拟器)移动摄像机和在地面移动摄像机的相关问题。

第12章 3D碰撞检测与射击

  现在开始这一章的学习,请集中精力,我们紧接着在11章中所完成的代码来到了最后的一个阶段。在上一章中,您创建了一个可自由飞行移动的摄像机,并讨论分析了它与地面摄像机的不同。之后,您采用了本书的3D章节的代码,为游戏创建了一个自定义摄像机。本章,您将添加一些游戏逻辑和支持进行射击和碰撞检测。我们有许多要做的,让我们开始吧!

第13章 HLSL基础

  让我们将开发游戏搁置一会儿,来谈谈高级着色器语言(HLSL)。在XNA之前,DirectX允许开发人员通过固定功能管道(FFP)来直接发送指令至图形设备。在一段时间内,工作效果的确不错,但随着显卡和硬件变得越发复杂,FFP也不那么有效了。由于硬件增加了许多功能,因此FFP需要变得更精细与复杂,方能让开发者取得硬件的最佳效果。

第14章 粒子系统

  本章中,将回到您所构建的贯穿本书大部分3D章节的3D游戏中。特别是,将在您的游戏中添加一些粒子特效。游戏开发人员可以利用粒子特效创造令人兴奋的、真实的特殊效果——开发人员把它们用在例如烟、火焰、爆炸、魔幻以及其它特效上,可以使游戏经历更令人兴奋,也更有吸引力。

  首先,让我们谈谈粒子。什么是粒子?在游戏开发术语中,粒子通常代表粒子特效中的一个单一成分。火焰中的一个火花,烟流中的一个分子,以及魔幻效果中的一个闪光,都是粒子的实例。在一个特殊效果中集合了多个粒子就叫做粒子特效。

  粒子引擎是粒子特效的驱动机构。通过施加外力,例如重力或其它因素,粒子引擎操纵多个粒子创造出粒子特效,从而使粒子以现实中的方式运动。

  学习本章后,您将创建一个制造爆炸粒子特效的粒子引擎,可以插入到游戏中,当敌船受到枪击时启动。

第15章 包装您的3D游戏

  我们开始吧——现在您处于您的首个3D游戏开发的最后阶段。它看起来很好,听起来不错,而且玩起来也很棒,剩下要做的就是增加一些游戏逻辑并完结。首先第一位的是,您需要游戏开始时的启动界面。另外,您需要为游戏玩家提供某种指示器,提示她已经到达了游戏的另一个等级,因此,为什么不在两个等级之间也使用启动界面呢?最后,您需要一个界面用来显示游戏结束时的最终分数。听起来解决这些问题的一个很好的方案是创建启动界面游戏组件,让您可以在屏幕上显示文本。那样的话,您就可以在上述的三个目的上使用相同的类—让我们面对它吧,重复利用代码,也可以为您自己省去很多时间和精力。

第16章 部署到Xbox 360上

  学习XNA与使用XNA框架编写游戏最重要的原因之一是开发人员可以使用它开发自己的游戏并在Xbox 360上运行。在XNA之前,开发爱好者想要将开发PC游戏所需的工具用于制作次世代控制台上的游戏是几乎不可能的事情。现在,开发人员既可以专门为Xbox 360做开发,也可以直接把为PC写的代码移植到Xbox 360(通常即使需要修改的话,也只需要修改很少的代码)。开发人员不仅可以为次世代控制台开发游戏,有了XNA框架,他们还可以只用一个开发环境和同一个代码库,就开发出可以在PC和Xbox 360上运行的游戏。

  此外,Xbox LIVE商城现在已允许用户同全球网友分享游戏了。过去从未对控制台开发开放过这么广阔的机会。XNA创作者俱乐部的成员将被允许提交需要审查的游戏,以确保游戏是安全的和可玩的。一旦游戏被Xbox创作者俱乐部的同行们确认通过了,开发人员就可以为他的游戏定价了。然后游戏就可以通过Xbox LIVE商城供全球用户下载购买了。正是成为XNA游戏开发人员的好时机,嗯?前面肯定会有激动人心的时刻等着我们!

  本章节涵盖了在Xbox 360上部署项目所需的步骤,以及以该平台为目标对象时应该考虑的细节。

第17章 针对Windows Phone 7的开发

  以微软的Windows Phone 7系列版本为中心的炒作与关心已经持续了很多年。通过Windows Phone操作系统的早期版本,微软已经打入了移动通信设备销售市场。但是Windows Phone 7的目标是让微软登上长期被iPhone控制的市场的副驾驶的位置。

  对于开发人员来说,Windows Phone 7提供了早期不可能实现的功能:在Silverlight和2D与3D中使用XNA编写大量的,交互的应用。拥有大量的特色,例如480×800屏幕分辨率,光滑的触摸屏界面与内置的加速器,开发人员在Windows Phone 7上的可能性几乎是无止境的。

  本章是专门针对Windows Phone 7上的游戏开发。不是在Windows Phone 7中导入前面章节中的游戏,而是您需要从零开始构建一个新游戏。尽管如此,大部分的代码还是会跟之前章节中的代码类似,所以,我会尽快的略过大部分代码并且集中在Windows Phone 7开发的独特特征上。

第18章 多人游戏

  本节中,我们将讨论在您的游戏中实现多人游戏功能的不同方法。首先,我们来学习如何在游戏上添加分屏显示功能,然后我们将试着用XNA框架联网API建立一个新游戏。

  在您的游戏上添加多人游戏功能的一种方法是在一个显示器(适用于PC)或电视(适用于Xbox 360)上实现分屏显示。分屏显示通常支持一个,两个,三个,或四个玩家同时在一台机器上进行游戏。

  XNA的多人游戏连接使用Windows LIVE平台的Xbox LIVE和Games。您可能会对Xbox LIVE的工作方式有一些熟悉,但是Windows LIVE的Games对于您来说是全新的。本质上,Windows LIVE使用和Xbox LIVE相同的方式把Windows游戏和游戏代号与在线身份连接起来。事实上,他们使用相同的在线游戏代号与身份。在本章的后面您也将看到,Windows LIVE平台的Games甚至使用了一系列跟Xbox 360操纵台极为相似的屏幕来进行注册和其它账户维护活动。

posted on 2011-01-15 21:58  裴小星  阅读(1053)  评论(1编辑  收藏  举报