《XNA高级编程:Xbox 360和Windows》5-1
摘要:第五章编写自己的XNA图像引擎 5.1本章概览 在本书的第一部分,您学习了XNA Framework,使用SpriteBatch类渲染2D图像,并且做了几个有趣的小游戏。现在,是时候探索更加令人兴奋的3D图像编程世界了。制作3D游戏比拼装一个2D游戏需要更多的工作量,如果没有3D图像技术的飞速发展,很多游戏都是不可能完成的。有些游戏也可以是2D的,例如即时战略游戏,而且大多数...
阅读全文
posted @
2010-05-11 22:19
AlexCheng
阅读(224)
推荐(0)
《XNA高级编程:Xbox 360和Windows》4-7
摘要:4.7 本章摘要 现在,您的小规模的游戏引擎拥有了三个新的命名空间,并且拥有很多将来项目中可以使用的辅助类,而其中TextureFont类对接下来的几章将特别有用。它不仅可以用于显示类似记分板这样的游戏数据,还可以用于单元测试。在单元测试中,它可以显示一些帮助性的文字告诉玩家所有可用的热键,尤其当您遇到问题时,还可以显示测试及调试信息。例如,一个camera类的单元测试可以输出came...
阅读全文
posted @
2010-05-11 22:18
AlexCheng
阅读(162)
推荐(0)
《XNA高级编程:Xbox 360和Windows》4-6
摘要:4.6 挑战:制作NextBlock游戏组件 本章并没有真正地去讨论NextBlock游戏组件,这样做是有理由的,因为我希望您自己去创建它。在本书的源代码中,NextBlock类是空的,您的任务就是去填充它并使之运行。本游戏中,NextBlock游戏组件已经被添加到了TetrisGrid类中,您也已经看到了所有的方法。如果您在实现自己的方式时有疑问,可以查看我写的XNA Tetris项...
阅读全文
posted @
2010-05-11 22:14
AlexCheng
阅读(194)
推荐(0)
《XNA高级编程:Xbox 360和Windows》4-5
摘要:4.5 Tetris,Tetris,Tetris! 关于辅助类和游戏组件已经讨论很多了,现在我们就来编写一个很酷的游戏。正是借助于这些辅助类,在这个新的游戏中,我们才能非常容易地在屏幕上输出文本,绘制sprites,处理用户输入以及播放声音特效。 在深入到Tetris游戏逻辑细节之前,仔细考虑一下游戏元素的布置会很有帮助,就像您在前几章所做的那样。起初我们并不是把所有的游戏...
阅读全文
posted @
2010-05-11 22:06
AlexCheng
阅读(264)
推荐(0)
《XNA高级编程:Xbox 360和Windows》4-4
摘要:4.4更多辅助类 上一章我们讨论了很多辅助类的知识,本章并不会特别详细地讲解Tetris游戏中要用到的两个新辅助类,因为它们是本书后面要用到的真正的类的精简版本。但它们还是很有用的,可以让您的游戏开发过程更加容易。 TextureFont类 您已经了解到XNA本身不支持字体,唯一一个显示文本的方式就是使用位图字体(也可能使用自定义的3D字体渲染方式)。在本书的前几个游戏中,...
阅读全文
posted @
2010-05-11 22:06
AlexCheng
阅读(208)
推荐(0)
《XNA高级编程:Xbox 360和Windows》4-2
摘要:4.2 Game类 前几章您已经使用过了Game类,但这些章主要讲的是从Program类和单元测试中调用Run方法来启动游戏,以及如何使用Initialize、Update和Draw等方法,并没有讨论基本的设计。当然,如果做的只是一些简单的游戏,掌握这些知识就够了。但随着游戏的规模逐渐变大以及需要更多的游戏特性,您或许就需要好好考虑游戏类的设计了。 Game类中提供了保存图...
阅读全文
posted @
2010-05-11 21:54
AlexCheng
阅读(213)
推荐(0)
《XNA高级编程:Xbox 360和Windows》4-3
摘要:4.3游戏组件 TetrisGame类使用继承自基类的Components属性(在Microsoft.Xna.Framework.Game类中)来保存所有的游戏组件,您可以向这个列表中添加任何继承自GameComponent类的自定义组件类,当游戏启动或者更新的时候这个自定义类会被自动调用。但是在绘制游戏的时候它是不被调用的,因为GameComponent类没有Draw方法。不过,...
阅读全文
posted @
2010-05-11 21:54
AlexCheng
阅读(200)
推荐(0)
《XNA高级编程:Xbox 360和Windows》4-1
摘要:4.1本章概览 本章主要讨论Game类的基本原理以及游戏组件的相关概念。下一章您将开发自己的图像引擎,但在这之前您还需要几个新的辅助类。其中BaseGame类用来实现更多的特性,而且它会使用到目前所有其他辅助类。该类继承自Game类(Microsoft.Xna.Framework.Game),以便使用所有现有的XNA特性。同样地,主测试类TestGame继承自BaseGame,用来执行...
阅读全文
posted @
2010-05-11 21:52
AlexCheng
阅读(149)
推荐(0)
《XNA高级编程:Xbox 360和Windows》3-10
摘要:3.10本章摘要 本章您学习到了大量的类,它们在以后的项目中会非常有用。单元测试也是一个很重要的知识点,以写单元测试开始游戏的开发会是个不错的选择。本章最后介绍了Breakout游戏。本章内容很多,不过幸好您可以跳过一些Breakout游戏的知识点,因为很多部分都可以重用上一章的Pong游戏。 下一章的重点将放在游戏编程上,介绍怎样使用组件来构建游戏。本章中您见识了使用辅助...
阅读全文
posted @
2010-05-11 21:50
AlexCheng
阅读(167)
推荐(0)
《XNA高级编程:Xbox 360和Windows》3-9
摘要:3.9挑战:改进Breakout游戏 您可以尝试给玩家设置更多的生命次数,还可以像上一章那样添加一个游戏菜单。您也可以把Breakout游戏作为一个测试平台,来检验目前已经实现的辅助类。例如,玩家每次升级或者打碎了一个砖块的时候,可以写一条日志消息记录下来。 下一章将介绍一个Input类,它可以更加容易地捕获控制器的所有输入。就像上一章一样,可以做一个非常好玩的改进:给Ga...
阅读全文
posted @
2010-05-11 21:48
AlexCheng
阅读(196)
推荐(0)
《XNA高级编程:Xbox 360和Windows》3-7
摘要:3.7其他辅助类 Helpers命名空间中还包括其他一些辅助类,大多数都像RandomHelper类一样简单,没有必要把它们都讲一遍,所以请你们自己看一下本章没有讲到的那些辅助类,如果想进一步了解它们可以使用其中的单元测试进行一些测试。 在介绍Breakout游戏之前,先简要地看看这样几个辅助类,它们在下面几章中会被反复地使用:SpriteHelper、EnumHel...
阅读全文
posted @
2010-05-11 21:43
AlexCheng
阅读(215)
推荐(0)
《XNA高级编程:Xbox 360和Windows》3-8
摘要:3.8 Breakout游戏 前面介绍了很多辅助类,现在是时候使用它们了。这里我将跳过游戏的构思阶段,Breakout游戏只有单人模式,对手则是砖块,所以可以把它说成是Pong游戏缩略版本。最初Breakout游戏是由Nolan Bushnell和Steve Wozniak发明的,并在1976年由Atari公司发行。在这个早期版本中,它仅仅是个黑白游戏,就像Pong游戏一样。但为了让它...
阅读全文
posted @
2010-05-11 21:43
AlexCheng
阅读(227)
推荐(0)
《XNA高级编程:Xbox 360和Windows》3-6
摘要:3.6 StringHelper类 StringHelper类是最大的辅助类之一,估计它是我写的第一个辅助类,因为针对字符串的处理操作非常多,很容易就可以想到一些方法来改善性能,更容易地处理字符串列表,输出字符串数据等等。 看一下StringHelper类的结构图(如图3-9所示),您会发现它的方法非常多,重载的方法支持很多不同类型的参数。它还包含大量的单元测试,...
阅读全文
posted @
2010-05-11 21:41
AlexCheng
阅读(230)
推荐(0)
《XNA高级编程:Xbox 360和Windows》3-5
摘要:3.5 RandomHelper类 看一下辅助类中的RandomHelper类,在单一项目中它用得不是很多,但几乎任何一个游戏都会需要产生一些随机数让游戏内容看上去没有太多的周期性,并让游戏富于变化。 在Breakout游戏中,您就需要一些随机数,这里的砖块(block)就是随机生成的。第一级的随机概率是10%,第二级是20%,以此类推,这样游戏级别不断提升,游戏也就变得更...
阅读全文
posted @
2010-05-11 21:38
AlexCheng
阅读(202)
推荐(0)
《XNA高级编程:Xbox 360和Windows》3-4
摘要:3.4 XNA 中的单元测试 在进一步学习辅助类之前,本节先来简单地讨论一下单元测试。上一章您已经学习了静态单元测试(static unit test),静态单元测试非常适用于快速检测输出结果、测试物理特性和控制器以及快速构建游戏。但是辅助类和组件不需要用户输入,这就要求您自己来处理它们。这是没有意义的,因为单元测试主要是为了改进应用程序的可维护性,并确保尽可能少地出现错误。例如,...
阅读全文
posted @
2010-05-11 21:36
AlexCheng
阅读(254)
推荐(0)
《XNA高级编程:Xbox 360和Windows》3-3
摘要:3.3记录错误信息 调试代码非常复杂,特别是渲染循环出错了,但您却得不到任何异常。只设置几个调试断点并不够,尤其是当游戏运行一段时间之后出现了错误,调试并不是合适的选择。您或许想知道每一帧都发生了什么,但又不想一步步地跟踪它。对于这类问题,您可以给控制台输出一些信息,不过这只能在Visual Studio中使用,而且当下次启动项目时这些信息就没了。 在我做过的比较大型的项目...
阅读全文
posted @
2010-05-11 21:30
AlexCheng
阅读(187)
推荐(0)
《XNA高级编程:Xbox 360和Windows》3-2
摘要:3.2管理内容管道 正如您在第一章中学到的,内容管道主要用来导入游戏资源,比如texture、模型、shader和声音文件。和Visual Studio(或XNA Studio)使用的其他文件不同的是,内容文件不仅仅是被添加到项目中就没事了,它们会被处理并编译成二进制内容文件,然后在游戏中加载它们(如图3-1所示)。 图3-1 过去,游戏编程人员必须得自己写内容导入器加载...
阅读全文
posted @
2010-05-11 21:30
AlexCheng
阅读(248)
推荐(0)
《XNA高级编程:Xbox 360和Windows》3-1
摘要:第三章 辅助类 3.1本章概览 我通常会把很多有用的小工具和类集中放在一个Helper命名空间中,慢慢地它们会变得非常有用。对于一个单一的项目来说,它们或许并不是最重要或最有使用价值的代码,但因为它们会被反复地使用,所以不管引擎的其它部分是否发生变化,辅助类总是引擎或项目中最稳定的部分。大多数辅助类和游戏编程都没有太大的关系,它们可以用于其它项目,甚至是Web应用。 正...
阅读全文
posted @
2010-05-11 21:28
AlexCheng
阅读(194)
推荐(0)
《XNA高级编程:Xbox 360和Windows》2-6/2-7
摘要:2.6问题解答 希望本章不会有太多的难题。本章主要接触了两个主要问题:单元测试和Sprites。或许在Xbox 360上运行游戏您还有些问题,我已经在第一章的结尾处写了一些提示和技巧,您可以去看看。 另外一个问题是理解为什么会抛出异常,并且要如何解决它。大多数人都不会有这样的问题,但对于少数不熟悉异常尤其是XNA异常的人来说却是个问题。您要紧盯着异常,查看完整的堆栈跟踪,看看是...
阅读全文
posted @
2010-05-11 21:25
AlexCheng
阅读(232)
推荐(0)
《XNA高级编程:Xbox 360和Windows》2-4/2-5
摘要:2.4在Xbox 360上试试 好了,游戏已经完成了,而且在Windows平台上也做了很多测试。就像我在第一章中解释的那样,要在Xbox 360上配置并运行XNA Framework需要几个关键步骤。如果Xbox 360上的XNA Game Launcher已经启动,您可以试着编译您的XNA Pong游戏并把它部署到控制台。 对于Xbox 360有特别重要的几点要谨记: ...
阅读全文
posted @
2010-05-11 21:14
AlexCheng
阅读(206)
推荐(0)
《XNA高级编程:Xbox 360和Windows》2-3(2)
摘要:2.3开始编写Pong 处理用户输入 正如您在第一章所看到的,在XNA中捕捉用户的键盘和Gamepad输入是非常简单的,单单为它写一个单元测试有点夸张了。您已经知道它是如何工作的,而且也只是想测试一下控制球拍的运动,所以没有必要写一个新的单元测试,完全可以使用前面的TestGameSprites,或许可以把它重新命名为TestSingleplayerGame。单元测试的内容还是一样...
阅读全文
posted @
2010-05-11 21:11
AlexCheng
阅读(257)
推荐(0)
《XNA高级编程:Xbox 360和Windows》2-3(1)
摘要:2.3开始编写Pong 游戏构思方面的问题都解决了,并且需要的文件也有了,是时候做些实际的编码工作了。首先查看一下SpriteBatch类,看看如何容易地管理所有的sprites。SpriteBatch类不仅能按照图像保存时的格式来渲染sprites,还能把它们放大或缩小,给它们重新着色,甚至能旋转它们。 当把菜单加进来之后,您就可以添加球拍了,并借助第一章处理键盘输入的方式来...
阅读全文
posted @
2010-05-11 21:07
AlexCheng
阅读(243)
推荐(0)
《XNA高级编程:Xbox 360和Windows》2-2
摘要:2.2游戏构思 讨论类似Pong这样的游戏的游戏构思听起来有些可笑,不过我会尽量将事情一般化来处理。在您开始编码之前有一件事非常重要,那就是您要仔细考虑您的游戏外观是什么样子,以及玩起来会有什么感受。游戏项目越大,设计过程就越重要。但我不是说如果您没有任何想法就不能写游戏或者应用程序,实际上,很多初学者都是以写东西开始,然后再一步一步地改进直到它看起来非常棒。问题在于,在第一次尝试的时候...
阅读全文
posted @
2010-05-11 21:05
AlexCheng
阅读(227)
推荐(0)
《XNA高级编程:Xbox 360和Windows》1-5/1-6
摘要:1.5问题解答 现在您已经知道了所有如何开始第一个XNA游戏项目的知识,如果您通读了本章内容,我强烈建议到www.wiley.com下载本章的示例代码并运行它。 如果您在安装DirectX、.Net 2.0或者XNA时有任何问题,可以到XNA论坛http://msdn.microsoft.com/xna/forums 寻求帮助。在书中给出所有的解答很困难,因为有很...
阅读全文
posted @
2010-05-11 21:03
AlexCheng
阅读(321)
推荐(0)
《XNA高级编程:Xbox 360和Windows》1-4
摘要:1.4 XNA相关 在结束这一章之前,还有一些关于XNA Framework和XNA Game Studio Express的提示和技巧。如您所见,虽然您现在可以进行编码了而且程序工作得也很棒,但是当您遇到了难题或者不知道怎么解决一个特定的问题时,在您的浏览器上拥有一些书签可以去查找还是很有必要的。另外,本节将讨论一些.Net和C# 的优点以及XNA和托管DirectX之间的区别。 ...
阅读全文
posted @
2010-05-11 21:00
AlexCheng
阅读(271)
推荐(0)
《XNA高级编程:Xbox 360和Windows》1-3
摘要:1.3从头开始 您已经准备好了一切,现在就让我们开始编码吧!本节您将在XNA Studio模板的帮助下创建一个简单的游戏项目,然后在Update和Draw方法中添加少量代码以实现一些小功能。在下一小节学习了SpriteBatch类之后,您将创建您的第一个游戏。 您的第一个项目 打开XNA Game Studio Express,在菜单栏中选择“文件→新建项目”,在弹出的新窗口...
阅读全文
posted @
2010-05-11 20:59
AlexCheng
阅读(403)
推荐(0)
《XNA高级编程:Xbox 360和Windows》1-2
摘要:1.2免费获取XNA Game Studio Express 要开始编写代码,您必须确保已经安装了一些工具,其中IDE是您快速开始的一个非常重要的工具。如果您已经安装并配置了XNA Game Studio Express开发环境,您可以跳过这一小节。这部分主要讲了一些提示和技巧,比如怎样在Visual Studio 2005 Professional版本中运行XNA。 系统需求 ...
阅读全文
posted @
2010-05-11 20:55
AlexCheng
阅读(383)
推荐(0)
《XNA高级编程:Xbox 360和Windows》1-1
摘要:第一部分 XNA Framework基础 第一章 XNA简介 欢迎进入XNA的世界。作为一个游戏程序员,你大概了解一些DirectX的知识以及XNA Framework的基础。这一章主要介绍怎样安装XNA Game Studio Express以及如何有效地使用它,同时也包含很多对即使已经了解这些基础的人也非常有用的技巧。 在接下来的几章中你将直接开始开发一些很酷的小游...
阅读全文
posted @
2010-05-11 20:53
AlexCheng
阅读(302)
推荐(0)
《XNA高级编程:Xbox 360和Windows》前言
摘要:前言 直到最近,把Xbox 360当作一个平台来开发家用游戏才成为可能。对于大多数人来说,创建控制台游戏是绝对不可能的,不仅因为SDK很贵,还因为根本就得不到这样的SDK,或者没有任何的开发信息可以使用。 这一切都已经改变了。微软新发布的XNA Framework使得开发家用跨平台(Windows和Xbox 360)游戏成为了可能。XNA不仅仅是一个新的框架,而且是现今最好...
阅读全文
posted @
2010-05-11 20:48
AlexCheng
阅读(293)
推荐(0)
XNA游戏开发之(七)——XNA游戏开发框架解析
摘要:Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 1 using System; 2 3 namespace AlexGameBase 4 { 5 static class Program 6 { 7 ...
阅读全文
posted @
2010-05-05 23:32
AlexCheng
阅读(346)
推荐(0)
XNA游戏开发之(六)——保存游戏数据
摘要:[原创]Alex 游戏过程中,通常需要存储游戏状态。在下次启动游戏时,重新载入游戏,继续游戏。 实现过程非常简单,首先建立一个结构体定义需要保存的游戏参数,然后通过XmlSerializer类将其保存为一个XML文档。 1 interface GameData 2 { 3 int GameID; 4 string PlayName; 5 DateTime ...
阅读全文
posted @
2010-05-04 16:47
AlexCheng
阅读(281)
推荐(0)