zhigu 发表于 2006-12-14 13:37:00

什么是XNA ?

<table class="Item" cellspacing="0" cellpadding="0" width="100%" border="0"><tbody><tr><td class="ItemTitle"><div class="ItemTitle"><a class="TitleLinkStyle" href="http://xna.everdocument.com/blog/PermaLink,guid,32bbaf92-1c3d-483d-bdcc-42be5fc0bd4c.aspx"><font color="#000000">什么是XNA Framework</font></a></div></td></tr><tr><td class="ItemText"><div class="ItemText"><pre class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><a href="http://xna.everdocument.com/blog/ct.ashx?id=32bbaf92-1c3d-483d-bdcc-42be5fc0bd4c&amp;url=http%3a%2f%2fblogs.msdn.com%2fxna%2farchive%2f2006%2f08%2f25%2f724607.aspx"></a></span></pre><pre class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"></span></pre><pre class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"></span></pre><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"></span></font></font>&nbsp;</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">上星期我们发布了</span><span lang="EN-US"><font face="Times New Roman">XNA Game Studio Express</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">,以使学生和爱好者可以在</span><span lang="EN-US"><font face="Times New Roman">Windows</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">和</span><span lang="EN-US"><font face="Times New Roman">Xbox360</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">两个平台上用</span><span lang="EN-US"><font face="Times New Roman">C#</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">开发游戏。</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">是一系列帮助开发人员编写游戏的类库。在</span><span lang="EN-US"><font face="Times New Roman">beta</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">版即将到来之际我想来花点时间通过对</span><span lang="EN-US"><font face="Times New Roman">XNA </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的三个关键点的解释来说明一下</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">,也就是:</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的目标是什么,</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">是什么,还有它可以做什么</span></font></font></p><h2 style="MARGIN: 13pt 0cm;"><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial;"><font color="#000000">目标</font></span></h2><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><font color="#000000" size="3">在开发的时候我们想到的是实现两个主要目的:</font></span></p><h3 style="MARGIN: 13pt 0cm;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><font color="#000000" size="5">实现跨平台开发</font></span></h3><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的一个关键目标是实现游戏在</span><span lang="EN-US"><font face="Times New Roman">Windows</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">和</span><span lang="EN-US"><font face="Times New Roman">Xbox 360</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">分别运行的简易性,以让你可以先在</span><span lang="EN-US"><font face="Times New Roman">Windows</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">上开发一个游戏,然后简单的移植到</span><span lang="EN-US"><font face="Times New Roman">Xbox360</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">上去。我们的目标是提供一系列可以涵盖大约</span><span lang="EN-US"><font face="Times New Roman">95%</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">功能的跨平台</span><span lang="EN-US"><font face="Times New Roman">APIs</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">。这里要说的是由于某些原因两个环境间仍会有部分的不同,例如有些操作可能只在一个平台上有效。我估计大部分你开发的游戏是</span><span lang="EN-US"><font face="Times New Roman">100%</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">跨平台的。</span></font></font></p><h3 style="MARGIN: 13pt 0cm;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><font color="#000000" size="5">简化游戏开发</font></span></h3><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">制作游戏是一项有难度的工作。从学生和爱好者想要成为专业游戏开发人员更加困难。常常要在如何实现绘图,输入,运动等地方反复试验而浪费大量的时间和代码。</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的另一个目的就是使这一切变得容易起来。当我们在进行内部讨论的时候,我们经常提到开发体验的“头五分钟”。我们的想法是使你可以在头五分钟内开始编写你的游戏。你不必要考虑创建窗口,消息事件队列的弹出和处理,你不需要给出图片处理程序甚至掌握显示模式。你不需要创建一个图形设备然后在窗口重新定义大小和最小化的时候管理它。</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">替你处理了这一切。你要做的第一件事就是为你的游戏逻辑写代码。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">另一个问题是处理特定的游戏内容(</span><span lang="EN-US"><font face="Times New Roman">Content</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">),把一个内容导入到你的游戏中然后使它在运行时为你所用。</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的一项特性叫做内容管道(</span><span lang="EN-US"><font face="Times New Roman">Content Pipeline</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">)。通过它你可以极为简单的把一个内容引入你的游戏。关于这点将会在以后的文章作进一步的说明。不过想象一下,以后你可以像管理代码一样,将游戏的内容作为项目的一部分进行处理。内容管道将会为你处理内容的导入,编译和载入。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">实现“头五分钟”的另一个方面在于我们将会提供一些</span><span lang="EN-US"><font face="Times New Roman">Start Kits</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">,这些</span><span lang="EN-US"><font face="Times New Roman">Start Kits</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">将会作为一个项目模版包含完整的游戏操作,以及源代码和媒体文件。在新建项目对话框中你可以使用它们,并在上面进行修改。最终你将可以直接打开一个在编写中的游戏,进行改写和调整之后,按下</span><span lang="EN-US"><font face="Times New Roman">F5</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">就可以马上得到反馈。每一个</span><span lang="EN-US"><font face="Times New Roman">Start Kits</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">都会有完整的说明文档,还包含一些指导教你如何修改增加游戏的特性。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><font color="#000000" size="3">未来的版本中游戏开发进程的简化还将得到不断改进。而我们总的努力方向就在于不断地降低游戏开发的门槛,使更多的人进入到游戏开发者的行列中来。</font></span></p><h2 style="MARGIN: 13pt 0cm;"><font color="#000000"><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial;">层(</span><span lang="EN-US"><font face="Arial">Layers</font></span><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial;">)</span></font></h2><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">在描述</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">组成的时候,我们可以认为是一系列层次关系。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US"><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p></span></p><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p><p></p><h3 style="MARGIN: 13pt 0cm;"><font size="5"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">平台(</span><span lang="EN-US"><font face="Times New Roman">Platform</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">)</span></font></font></h3><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">平台是</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的最下一层。它由一系列底层的原生代码和托管</span><span lang="EN-US"><font face="Times New Roman">APIs</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">组成。在这一层中有些</span><span lang="EN-US"><font face="Times New Roman">APIs</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">就是</span><span lang="EN-US"><font face="Times New Roman">Direct3D 9, XACT, XInput</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">和</span><span lang="EN-US"><font face="Times New Roman">XContent.</font></span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US"><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p></span></p><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p><p></p><h3 style="MARGIN: 13pt 0cm;"><font size="5"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">核心框架(</span><span lang="EN-US"><font face="Times New Roman">Core Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">)</span></font></font></h3><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">核心框架是第一层,并且提供核心操作用来给其它层的进行扩展。如果你想要在直接使用托管</span><span lang="EN-US"><font face="Times New Roman">DirectX</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">,就应该是在这一层。在这一层次中包含了对图像,声音,输入和数据存储的处理。当我们要改进</span><span lang="EN-US"><font face="Times New Roman">XNA Framwork</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">,附加新的功能我们就要增建这一层。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font color="#000000"><strong><span class="3Char"><span style="FONT-SIZE: 16pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><font face="宋体">扩展框架(</font></span></span><span class="3Char"><span lang="EN-US" style="FONT-SIZE: 16pt; FONT-FAMILY: 'Times New Roman';">Extended Framework</span></span></strong><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><font size="3">)</font></span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">扩展框架主要致力于游戏开发的简化。当前这一层有两个主要的部分:应用模块(</span><span lang="EN-US"><font face="Times New Roman">Application Model</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">)和内容管道。我们将通过这一层使你可以更容易的开发游戏,同时便于扩展。</span></font></font></p><h3 style="MARGIN: 13pt 0cm;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><font color="#000000" size="5">游戏</font></span></h3><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">游戏部分是最高的层次。这一层包含你的游戏逻辑代码和内容。在这一层将你的游戏逻辑和内容相整合。</span><span lang="EN-US"><font face="Times New Roman">Start Kits</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">、游戏模版和游戏内容部件就属于这一层。</span></font></font></p><h2 style="MARGIN: 13pt 0cm;"><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial;"><font color="#000000">特性</font></span></h2><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">以上我们谈论了许多关于</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的目标以及它所划分的功能层次。但什么是</span><span lang="EN-US"><font face="Times New Roman">XNA</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">呢,让我们来看看。</span></font></font></p><h3 style="MARGIN: 13pt 0cm;"><font size="5"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">应用模块(</span><span lang="EN-US"><font face="Times New Roman">Application Model</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">)</span></font></font></h3><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">应用模块的意图在于抽象你的游戏所运行的平台,让你专注于游戏的编写。你不必关心创建窗口,管理消息队列,创建定时器或时钟和处理窗口消息。我们全都替你进行了封装。我们也提供一个</span><span lang="EN-US"><font face="Times New Roman">GraphicsComponent</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">(译注:图形组件,是一个类)以极为简单的方法对要绘图的图形设备进行创建和管理。在</span><span lang="EN-US"><font face="Times New Roman">Xbox360</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">上是不需要窗口和窗口消息的,这和</span><span lang="EN-US"><font face="Times New Roman">Windows</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">有很大不同,你也不必担心,因为在应用模块上两个平台是完全相同的。我们也提供通用模块让你简单的和其它人在游戏中合并</span><span lang="EN-US"><font face="Times New Roman">GraphicsComponent</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">,通过这样可以快速的建立可重用模块。</span><span lang="EN-US"><font face="Times New Roman">GameComponents </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">(译注:游戏组件集合,也是一个类)在你的游戏中可以由别人所写入。这样的处理在建立和快速运行或实现一个可重用的库的时候是很重要的。这一部分是我亲眼看着完善起来的,我相信我们将看到用户通过它实现许多神奇的东西。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US"><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p></span></p><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p><p></p><h3 style="MARGIN: 13pt 0cm;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><font color="#000000" size="5">图像处理</font></span></h3><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">我们的图像</span><span lang="EN-US"><font face="Times New Roman">APIs</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">是基于</span><span lang="EN-US"><font face="Times New Roman">Direct3D 9 APIs</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的。它们非常类似于</span><span lang="EN-US"><font face="Times New Roman">MDX</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">类型结构,但是经过了精心的重构和清理使它更容易使用,并且和</span><span lang="EN-US"><font face="Times New Roman">.Net</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的设计方针保存一致。这部分和</span><span lang="EN-US"><font face="Times New Roman">MDX</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">最大的不同的在于,我们决定取消固定函数式(</span><span lang="EN-US"><font face="Times New Roman">fixed-function</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">)的管理方式,而使用一种全渲染驱动可编程管道(</span><span lang="EN-US"><font face="Times New Roman">all shader-driven programmable pipeline</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">)</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">我们这样做是有原因的。首先,可编程管道是实时计算机图形的未来。</span><span lang="EN-US"><font face="Times New Roman">Direct3D 10</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">和</span><span lang="EN-US"><font face="Times New Roman">Xbox360</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">都不再为固定函数提供支持。当我们和一些早期的合作者和客户讨论这些问题的时候,我们还是多少有点惊讶,其实他们对于跨平台的关注大于对原固定函数的关注。由于害怕在</span><span lang="EN-US"><font face="Times New Roman">Windows</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">中用固定函数</span><span lang="EN-US"><font face="Times New Roman">APIs</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">开发的程序(也许开发人员都不确切知道),在移植到</span><span lang="EN-US"><font face="Times New Roman">Xbox360</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">上时立刻得到大量的编译错误。当知道你的代码在一开始就可以确实的跨平台运行,这实在是令人放心不少。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">我们还发现掌握渲染和特效是游戏编写中要迈出的一大步。所以我们尝试在托管</span><span lang="EN-US"><font face="Times New Roman">DirectX 1.1 </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">到</span><span lang="EN-US"><font face="Times New Roman"> XNA Framework (Beta 1)</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">中提供了一些移植向导式的</span><span lang="EN-US"><font face="Times New Roman">API</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">。例如</span><span lang="EN-US"><font face="Times New Roman">BasicEffect</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">类可以简单的通过设置属性,包含光照、纹理等等就可以在“五分钟”内实现对一个物体的呈现。使用</span><span lang="EN-US"><font face="Times New Roman">BasicEffect</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">而不需要直接去编写渲染,就可以很快地在屏幕上显示出一些东西。然后当你开始对渲染和特效较为熟悉,或者可以扩展类</span><span lang="EN-US"><font face="Times New Roman">BasicEffect</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的呈现功能时,你也可以直接用它们来写你自己的渲染和特效。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US"><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p></span></p><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p><p></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US"><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p></span></p><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p><p></p><h3 style="MARGIN: 13pt 0cm;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><font color="#000000" size="5">声音处理</font></span></h3><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">我们的声音</span><span lang="EN-US"><font face="Times New Roman">APIs</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">是建立在</span><span lang="EN-US"><font face="Times New Roman">Windows</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">和</span><span lang="EN-US"><font face="Times New Roman">Xbox360</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">通用的声音</span><span lang="EN-US"><font face="Times New Roman">API</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">——</span><span lang="EN-US"><font face="Times New Roman">XACT</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">上的。</span><span lang="EN-US"><font face="Times New Roman">XACT</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的理念和</span><span lang="EN-US"><font face="Times New Roman">Direct3D</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的渲染部分类似。声音的制作人员使用</span><span lang="EN-US"><font face="Times New Roman">XACT</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的工具创建好声音效果包(</span><span lang="EN-US"><font face="Times New Roman">packages</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">),并且配置好音量,重复次数,声道混音(支持</span><span lang="EN-US"><font face="Times New Roman">5.1</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">)等等。开发人员得到这样的包之后再载入它,然后就可以简单的通过包的名字来调用声音,而无须考虑缓存,流导入等其它管理细节。例如音效人员制作了一个包含几个</span><span lang="EN-US"><font face="Times New Roman">wav</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">文件,有</span><span lang="EN-US"><font face="Times New Roman">LFE</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">效果并且和其它通道混音的声音包“</span><span lang="EN-US"><font face="Times New Roman">BigExplosion</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">”。而程序员不需要知道这方面的细节,他只要得到“</span><span lang="EN-US"><font face="Times New Roman">BigExplosion</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">”,然后对它调用</span><span lang="EN-US"><font face="Times New Roman">Play</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">。漂亮!简洁!</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US"><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p></span></p><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p><p></p><h3 style="MARGIN: 13pt 0cm;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><font color="#000000" size="5">输入处理</font></span></h3><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">输入</span><span lang="EN-US"><font face="Times New Roman">API</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">建立在基于一般</span><span lang="EN-US"><font face="Times New Roman">Xbox360</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的控制器(译注:就是手柄)的</span><span lang="EN-US"><font face="Times New Roman">XInput API</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">之上,它也是跨平台的。输入提供一个立即模式(</span><span lang="EN-US"><font face="Times New Roman">immediate mode</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">)</span><span lang="EN-US"><font face="Times New Roman">API</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">而不需要初始化。不需要考虑获得或释放设备,设置共享模式等等。你只需在恰当的控制器类型上调用</span><span lang="EN-US"><font face="Times New Roman">GetState</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">就行了。我们提供了一个</span><span lang="EN-US"><font face="Times New Roman">GamePad</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">类型用来表示</span><span lang="EN-US"><font face="Times New Roman">Windows</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">和</span><span lang="EN-US"><font face="Times New Roman">Xbox360</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">上的</span><span lang="EN-US"><font face="Times New Roman">Xbox360</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">控制器。同时在</span><span lang="EN-US"><font face="Times New Roman">Windows</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">中还有键盘类型和鼠标类型。</span></font></font></p><h3 style="MARGIN: 13pt 0cm;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><font color="#000000" size="5">存储处理</font></span></h3><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">存储</span><span lang="EN-US"><font face="Times New Roman">API</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">提供了以平台无关方法来读取和保存游戏数据(例如保存游戏状态,高分值等等)的途径。在</span><span lang="EN-US"><font face="Times New Roman">Windows</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">中这不是什么问题,因为你可以使用</span><span lang="EN-US"><font face="Times New Roman">System.IO</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">。并且你可以通过环境(</span><span lang="EN-US"><font face="Times New Roman">Environment</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">)方法正确的为当前用户定位到存储的数据。在</span><span lang="EN-US"><font face="Times New Roman">Xbox360</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">上你需要使用</span><span lang="EN-US"><font face="Times New Roman">Profile</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">和存储设备来操作游戏状态,例如硬盘和记忆卡。</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的存储处理部分使这些变得很容易,并可以达到跨平台的效果。我们在</span><span lang="EN-US"><font face="Times New Roman">Windows</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">上对</span><span lang="EN-US"><font face="Times New Roman">Xbox360</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">这些操作进行了模拟,以使你用完全一样的代码在两个平台上读取和写入数据。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US"><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p></span></p><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p><p></p><h3 style="MARGIN: 13pt 0cm;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><font color="#000000" size="5">数学逻辑部分</font></span></h3><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">数学</span><span lang="EN-US"><font face="Times New Roman">API</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">提供了一些游戏中常用的数学类型,例如</span><span lang="EN-US"><font face="Times New Roman">Vector2, Vector3, Vector4, Matrix, Plane,</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">还有</span><span lang="EN-US"><font face="Times New Roman"> Ray</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">。我们也提供了一些卷绑定(</span><span lang="EN-US"><font face="Times New Roman">bounding volume</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">)类型例如</span><span lang="EN-US"><font face="Times New Roman">BoundingBox, BoundingSphere </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">和</span><span lang="EN-US"><font face="Times New Roman"> BoundingFrustum</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">。我们的绑定类型也包含交集和容积(</span><span lang="EN-US"><font face="Times New Roman">containment</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">)测试的方法。需要注意的是我们的数学库默认是右序的。这里我指的是在</span><span lang="EN-US"><font face="Times New Roman">Matrix</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">(矩阵)上的情况。例如我们只提供了一个对矩阵右序查看的</span><span lang="EN-US"><font face="Times New Roman">CreateLookAt </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">方法,而不是分别提供</span><span lang="EN-US"><font face="Times New Roman">CreateLookAtLH </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">和</span><span lang="EN-US"><font face="Times New Roman"> CreateLookAtRH</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">。我们这样设计的目的在于使其它外部内容和中间件的整合都较为统一而容易。如果大家都遵守这个约定那么按照这样开发的</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">和外部的</span><span lang="EN-US"><font face="Times New Roman">APIs</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">就可以较容易的联合使用。以上我说的是默认的时候,进行左序操作是无需其它条件的。如果你确实需要使用左序(或者其它方法)操作也可以,你只需要自己写操作代码。</span></font></font></p><h2 style="MARGIN: 13pt 0cm;"><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial;"><font color="#000000">展望</font></span></h2><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">目前我们注意力主要在刚发布到你手上的</span><span lang="EN-US"><font face="Times New Roman">XNA Game Studio ExpressV1.0</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">以及</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">上。但是我们也在考虑未来版本的特性。如前面提过的为了添加新的功能操作,我们将对</span><span lang="EN-US"><font face="Times New Roman">Core Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">层进行扩展。同时对</span><span lang="EN-US"><font face="Times New Roman">Extended Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">进行增建,使得用</span><span lang="EN-US"><font face="Times New Roman">XNA Game Studio Express</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">创建游戏更容易。我们也会推出</span><span lang="EN-US"><font face="Times New Roman">XNA Game Studio Professional</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">,以使开发者可以用</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">在</span><span lang="EN-US"><font face="Times New Roman">Xbox360</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">上开发商业游戏。请在下一个月中留意这方面的情况。</span></font></font></p><h2 style="MARGIN: 13pt 0cm;"><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial;"><font color="#000000">封装</font></span></h2><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">我提到</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的一个目标在于让编写游戏更容易,使你专注于你的游戏而不是平台。它到底有多简单呢?下面的代码显示了一个可运行的</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">游戏应用程序大体框架。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US"><font face="Times New Roman" color="#000000" size="3"></font></span></p><span lang="EN-US"><p><font face="Times New Roman" color="#000000" size="3"><p></p><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;"><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">public</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">class</span> SampleGame : Game<br/><br/>{<br/><br/><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">private</span> GraphicsComponent graphics;<br/><br/><br/><br/><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">public</span> SampleGame()<br/><br/>{<br/><br/><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">this</span>.graphics <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">=</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">new</span> GraphicsComponent();<br/><br/><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">this</span>.GameComponents.Add(graphics);<br/><br/>}<br/><br/><br/><br/><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">protected</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">override</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">void</span> Update()<br/><br/>{<br/><br/>}<br/><br/><br/><br/><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">protected</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">override</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">void</span> Draw()<br/><br/>{<br/><br/><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">this</span>.graphics.GraphicsDevice.Clear(Color.Blue);<br/><br/><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">this</span>.graphics.GraphicsDevice.Present();<br/><br/>}<br/><br/><br/><br/><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">static</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">void</span> Main(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">string</span>[] args)<br/><br/>{<br/><br/><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">using</span> (SampleGame game <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">=</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">new</span> SampleGame())<br/><br/>{<br/><br/>game.Run();<br/><br/>}<br/><br/>}<br/><br/>}<br/></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;">&nbsp;</p></font></p><p></p><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;"><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">public</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">class</span> SampleGame : Game<br/><br/>{<br/><br/><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">private</span> GraphicsComponent graphics;<br/><br/><br/><br/><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">public</span> SampleGame()<br/><br/>{<br/><br/><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">this</span>.graphics <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">=</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">new</span> GraphicsComponent();<br/><br/><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">this</span>.GameComponents.Add(graphics);<br/><br/>}<br/><br/><br/><br/><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">protected</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">override</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">void</span> Update()<br/><br/>{<br/><br/>}<br/><br/><br/><br/><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">protected</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">override</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">void</span> Draw()<br/><br/>{<br/><br/><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">this</span>.graphics.GraphicsDevice.Clear(Color.Blue);<br/><br/><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">this</span>.graphics.GraphicsDevice.Present();<br/><br/>}<br/><br/><br/><br/><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">static</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">void</span> Main(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">string</span>[] args)<br/><br/>{<br/><br/><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">using</span> (SampleGame game <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">=</span><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent;">new</span> SampleGame())<br/><br/>{<br/><br/>game.Run();<br/><br/>}<br/><br/>}<br/><br/>}<br/></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;">&nbsp;</p><p></p></span><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">感谢你花时间阅读这篇文章。我希望我已经讲明白了</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">到底提供什么。</span><span lang="EN-US"><font face="Times New Roman">Beta</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">版将会在几天内放出,所以欢迎您下载下来使用。然后告诉我们那些是你喜欢的部分,哪些部分是你不喜欢的或者不清楚的。我们期望能为你做出我们最好的产品。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span lang="EN-US"><font face="Times New Roman">XNA</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">团队等不及看看</span><span lang="EN-US"><font face="Times New Roman">XNA Game Studio Express</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">在你的手中可以产生出什么样魔力。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US"><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p></span></p><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p><p></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US"><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p></span></p><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p><p></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US"><font face="Times New Roman" color="#000000" size="3">Mitch Walker</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US"><font face="Times New Roman" color="#000000" size="3">program manager | xna framework</font></span></p></div></td></tr></tbody></table>
[此贴子已经被作者于2006-12-14 14:42:04编辑过]

zhigu 发表于 2006-12-14 14:40:00

<div class="post"><div class="postsub"><h2>原文</h2><h2>What is the XNA Framework</h2><div class="Section1"><span>Last week we announced XNA Game Studio Express, which is a product that enables students and hobbyist game programmers to create games using C# that will run on both Windows and their Xbox 360.&nbsp; The XNA Framework is the set of .NET libraries that developers will code against to build their games.&nbsp; As we get closer to the beta, I wanted to take a few moments and explain three keys to understanding the XNA Framework—namely, the goals of the XNA Framework, what the XNA Framework is, and what it provides.</span>
                                <br/><br/><div style="FONT-WEIGHT: bold; FONT-SIZE: 11pt;">Goals</div><div>We set out to accomplish two primary goals when developing the XNA Framework:</div><br/><div style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">Enable Cross-Platform Game Development</div><div style="FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">One of the key goals is to make it easy to develop games using the XNA Framework that will run on both Windows and the Xbox 360.&nbsp; We want to make it easy for you to develop your Windows game, for example, and then easily create an Xbox 360 version of it.&nbsp; Our goal is to provide a set of APIs that are about 95% normalized across the two platforms.&nbsp; There are some cases where we need to differentiate between the two because either the semantics are different enough that we shouldn’t hide it or there is specific functionality that is useful on one platform but not on the other.&nbsp; I imagine, though, that a high percentage of the games you create with the XNA Framework will in fact be 100% compatible across both platforms.</div><br/><div style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">Simplify Game Development</div><div style="FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">Making games is hard.&nbsp; It’s hard for professional game developers and especially difficult for a student or hobbyist who is just getting into game development.&nbsp; It often takes a lot of code, time, and trial and error just to get to the point where you can start to draw something on the screen, or get input and make something move.&nbsp; One of the other primary goals of the XNA Framework is to make this much easier.&nbsp; As we’ve talked about this internally, we often talk about the “first 5 minutes” of the experience with XNA Game Studio Express and the XNA Framework. Our goal is for you to be able to start writing <b>your game</b> within the first 5 minutes of starting a project.&nbsp; You won’t have to worry about creating a window. You won’t have to worry about a message pump or an Idle event.&nbsp; You won’t need to enumerate graphic adapters and display modes.&nbsp; You won’t have to create a Direct3D 9 device and manage it when the window is resized or the game is minimized.&nbsp; The XNA Framework takes care of all those things for you.&nbsp; The first thing you do is write code for <b>your game</b>.</div><br/><div style="FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">Another problem is content— specifically, getting content into your game and making it consumable at run time.&nbsp; A feature of the XNA Framework called the Content Pipeline will make getting content into your game extremely easy.&nbsp; Michael Klucher will be talking more about this feature in a future post, but think of it as being able to treat content just like you would your code, as a piece of your project.&nbsp; The Content Pipeline will take care of importing, compiling, and loading it for you.</div><br/><div style="FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">Another aspect of the “first 5 minutes” is a set of Starter Kits that we will be providing.&nbsp; A Starter Kit is a complete, fully functional game that includes all the source code and media available as a project template.&nbsp; They are available in the <b>New Project</b> dialog box and create a new copy of the game for you to then modify.&nbsp; The aim is that if you are just getting into game programming, you can dive into a complete game and change or tweak a couple of things here or there and get instant feedback as soon as you hit F5.&nbsp; Each Starter Kit will come with complete documentation, including a set of tutorials that will walk you through modifying or adding features to the game.</div><br/><div style="FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">Our efforts to simplify the game development process will continue to evolve through future releases. But our overall goal will continue to be lowering the bar for making games and opening up game development to an even broader set of would-be game developers.</div><br/><div style="FONT-WEIGHT: bold; FONT-SIZE: 11pt;">Layers</div><div>When describing the XNA Framework and what it's made of, it’s useful to think of it as a series of layers.</div><br/><div style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">Platform</div><div style="FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">The platform is the lowest layer and consists of the low-level native and managed APIs that the XNA Framework is built on top of.&nbsp; Some of the APIs included in this layer are Direct3D 9, XACT, XInput, and XContent.</div><br/><div style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">Core Framework</div><div style="FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">The core framework is the “first” layer of the XNA Framework and provides the core functionality that the other layers extend.&nbsp; If you had to associate something with Managed DirectX, it would be this layer.&nbsp; Found here are areas of functionality grouped into Graphics, Audio, Input, Math, and Storage.&nbsp; As we move forward with the XNA Framework, we'll build out this layer to provide additional functionality.</div><br/><div style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">Extended Framework</div><div style="FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">The main focus of the extended framework layer is making game development easier.&nbsp; Currently, this layer has two main components: the Application Model and the Content Pipeline.&nbsp; As we move forward with the XNA Framework, we'll extend this layer to make it even easier for you to write games and expand the target audience.</div><br/><div style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">Games</div><div style="FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">Games are the highest layer (even though we're at the bottom of this list!). This layer consists of your game code and content.&nbsp; Also found here would be things like Starter Kits, templates, and game components.</div><br/><div style="FONT-WEIGHT: bold; FONT-SIZE: 11pt;">Features</div><div>So we’ve talked a lot about the goals of the XNA Framework and how it’s layered by functionality.&nbsp; But what is <i>in</i> the XNA Framework? Let’s take a look:</div><br/><div style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">Application Model</div><div style="FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">The purpose of the Application Model is to abstract away the platform your game is running on and let you focus on writing your game.&nbsp; You don’t have to worry about creating a window, handling the message pump, creating a timer or clock, or handling window messages.&nbsp; We provide all of that for you.&nbsp; We also provide a <b>GraphicsComponent</b> that makes it extremely easy to create and manage a <b>GraphicsDevice</b>, which you use for rendering.&nbsp; On the Xbox 360, you don’t need a window or a message pump to handle window messages, but you don’t need to worry about that either because the programming model is the exact same on both platforms.&nbsp; This is also where we provide our component model, which allows you to easily incorporate <b>GameComponents</b> written by others into your game.&nbsp; This is a great way to get up and running quickly or to build a library of reusable components.&nbsp; This is one area that I’m excited to watch grow as I think we’ll see some amazing things from the community and our partners.</div><br/><div style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">Graphics</div><div style="FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">Our Graphics APIs are based on the Direct3D 9 APIs.&nbsp; They started out as very similar to the MDX set of types but have gone through some pretty major refactoring and cleanup to make them even easier to use and more consistent with the .NET Design Guidelines.&nbsp; One big change from MDX is that we’ve decided to remove support for the fixed-function pipeline in favor of an all shader-driven programmable pipeline.</div><br/><div style="FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">There are a few reasons why we made this decision.&nbsp; First, a programmable pipeline is the future of real-time computer graphics.&nbsp; Direct3D 10 does not offer support for fixed function.&nbsp; Neither does the Xbox 360.&nbsp; When we discussed this with some early adopters and customers, we were somewhat surprised when they stated that the cross-platform goal of the XNA Framework is more valuable than the fixed-function pipeline.&nbsp; The fear is that someone would start their game out on Windows and use the fixed-function APIs (perhaps without even knowing it) and get the game completed.&nbsp; Then they would decide to try and run it on the Xbox 360 and they would immediately get hit with dozens, if not hundreds, of compiler errors.&nbsp; It would be a better experience if you knew from the start that your code would work on both platforms from the start.</div><br/><div style="FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">We realize that moving up to writing shaders and effects is a big step, so we’re trying to ease that by providing the <i>API Migration Guide: Managed DirectX 1.1 to XNA Framework (Beta 1)</i>, as well as a <b>BasicEffect</b> type that is an <b>Effect</b> but exposes some easy to use properties such as lights and textures in a strongly typed manner so that the “first 5 minutes” experience is still in reach.&nbsp;You can, using the <b>BasicEffect</b>, get something up on the screen very quickly and easily without having to actually write a shader.&nbsp;Then when you feel comfortable with writing shaders and effects, or you’ve outgrown what type of rendering the <b>BasicEffect</b> offers, you can start writing your own shaders and effects and use those directly.</div><br/><div style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">Audio</div><div style="FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">Our Audio APIs are built on top of XACT, which is the Microsoft cross-platform audio API for Windows and the Xbox 360.&nbsp; The idea behind XACT is somewhat similar to shaders in Direct3D.&nbsp; Sound authors use the XACT tool to create “packages” of sound effects and configure things like volume, looping, channel mixing (including 5.1), etc.&nbsp; The developer then takes the package, loads it, and can easily play sounds by name, not having to worry about initializing buffers, streaming data in, or other management.&nbsp; The sound author can create a “BigExplosion” sound that consists of a few different WAV files, has an LFE effect, and mixes between the other channels.&nbsp; The programmer doesn’t need to know any of these details; he just gets the cue for “BigExplosion” and calls <b>Play</b> on it.&nbsp; Nice and simple!</div><br/><div style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">Input</div><div style="FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">The Input API is built on top of XInput, which is the cross-platform API that drives the common controller (Xbox 360 Controller).&nbsp; Input offers an immediate mode API that requires no initialization.&nbsp; No need to worry about acquiring or releasing a device, setting the sharing mode, etc.&nbsp; All you need to do is call <b>GetState</b> on the appropriate controller type and that’s it!&nbsp; We provide a <b>GamePad</b> type that represents the Xbox 360 Controller for Windows and the Xbox 360, as well as <b>Keyboard</b> type for both platforms and a <b>Mouse</b> type for Windows.</div><br/><div style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">Storage</div><div style="FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">The Storage API provides the way you can read and write game data (such as save games, high scores, etc.) in a platform neutral manner.&nbsp; On Windows, this isn’t a big deal since you have <b>System.IO</b> and the <b>Environment</b> methods that allow you to the correct location for the current user.&nbsp;On the Xbox 360, you need to associate game state with a profile and a storage device, such as the hard drive or a memory unit.&nbsp; Storage makes it very easy to do so, and, in keeping with the cross-platform goal, we “emulate” this on Windows so you can use the exact same code on both platforms to read and write your data.</div><br/><div style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">Math</div><div style="FONT-SIZE: 10pt; MARGIN-LEFT: 20pt;">Our Math API provides the types often used for game programming such as <b>Vector2</b>, <b>Vector3</b>, <b>Vector4</b>, <b>Matrix</b>, <b>Plane</b>, and <b>Ray</b>.&nbsp; We also include bounding volume types including <b>BoundingBox</b>, <b>BoundingSphere</b> and <b>BoundingFrustum</b>.&nbsp;Our bounding volume types include methods for doing intersection and containment tests.&nbsp; One thing to note is that our math libraries are right-handed <i>by default</i>.&nbsp;What I mean by that is on our <b>Matrix</b>, for example, we provide a <b>CreateLookAt</b> method, which provides a right-handed view matrix instead of offering a <b>CreateLookAtLH</b> and a <b>CreateLookAtRH</b>.&nbsp;The reason we’ve decided on going with this is to ease integration in both content and middleware components.&nbsp; If everyone can agree on the coordinate system, then it makes it much easier to use content or APIs from outside of the XNA Framework.&nbsp; I say “by default” because there is nothing that <i>requires</i> a right-handed system. So if you absolutely need to be left-handed (or something else) you can do so, you’ll just need to do some of the calculations yourself.</div><br/><div style="FONT-WEIGHT: bold; FONT-SIZE: 11pt;">Futures</div><div>We are super focused on getting v1.0 of XNA Game Studio Express and the XNA Framework into your hands, but we are also looking at what our future releases look like.&nbsp; As I mentioned earlier, we will look at extending the core framework layer by adding additional functionality and we’ll look at building out the extended framework area to make it even easier to create games using XNA Game Studio Express.&nbsp; We will also introduce XNA Game Studio Professional, which will enable developers to create commercial games for the Xbox 360 by using the XNA Framework.&nbsp; Look for more details about what this means in the coming months.</div><br/><div style="FONT-WEIGHT: bold; FONT-SIZE: 11pt;">Wrap Up</div><div>I mentioned that one of the goals of the XNA Framework is to make it easier to write games; to allow you to focus on your game and not the platform. How simple is it? Well, the code below results in a working application and illustrates the basic skeleton of an XNA Framework game.</div><br/><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="COLOR: blue; FONT-FAMILY: 'Courier New';">public</span><span style="FONT-FAMILY: 'Courier New';">
                                                <span style="COLOR: blue;">class</span>
                                                <span style="COLOR: teal;">SampleGame</span> : <span style="COLOR: teal;">Game</span></span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">{</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp; <span style="COLOR: blue;">private</span>
                                                <span style="COLOR: teal;">GraphicsComponent</span> graphics;</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;</span>&nbsp;</div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp; <span style="COLOR: blue;">public</span> SampleGame()</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp; {</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: blue;">this</span>.graphics = <span style="COLOR: blue;">new</span>
                                                <span style="COLOR: teal;">GraphicsComponent</span>();</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: blue;">this</span>.GameComponents.Add(graphics);</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp; }</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;</span>&nbsp;</div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp; <span style="COLOR: blue;">protected</span>
                                                <span style="COLOR: blue;">override</span>
                                                <span style="COLOR: blue;">void</span> Update()</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp; {</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp; }</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;</span>&nbsp;</div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp; <span style="COLOR: blue;">protected</span>
                                                <span style="COLOR: blue;">override</span>
                                                <span style="COLOR: blue;">void</span> Draw()</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp; {</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: blue;">this</span>.graphics.GraphicsDevice.Clear(<span style="COLOR: teal;">Color</span>.Blue);</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: blue;">this</span>.graphics.GraphicsDevice.Present();</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp; }</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;</span>&nbsp;</div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp; <span style="COLOR: blue;">static</span>
                                                <span style="COLOR: blue;">void</span> Main(<span style="COLOR: blue;">string</span>[] args)</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp; {</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: blue;">using</span> (<span style="COLOR: teal;">SampleGame</span> game = <span style="COLOR: blue;">new</span>
                                                <span style="COLOR: teal;">SampleGame</span>())</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; game.Run();</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">&nbsp;&nbsp;&nbsp; }</span></div><div class="MsoNormal" style="MARGIN-LEFT: 0.5in;"><span style="FONT-FAMILY: 'Courier New';">}</span></div><br/><div>Thanks for taking the time to read this post. I hope it explained what the XNA Framework is and what it provides.&nbsp; The beta will be released in just a few days, so please download it and take it for a spin. Then tell us what you liked, what you disliked, or what wasn’t clear—we want to make this the best product for you that we can.</div><br/><div>The team can’t wait to get XNA Game Studio Express into your hands and see what you do with it!</div><div class="MsoNormal">&nbsp;</div><div class="MsoNormal"><a name="_MailAutoSig"><b><span style="FONT-FAMILY: Verdana;">Mitch Walker</span></b></a></div><div class="MsoNormal"><b><span style="COLOR: #606060; FONT-FAMILY: Verdana;">program manager</span></b><b><span style="FONT-FAMILY: Verdana;">
                                                </span></b><b><span style="FONT-SIZE: 8pt; COLOR: gray; FONT-FAMILY: Verdana;">|</span></b><b><span style="FONT-FAMILY: Verdana;">
                                                        <span style="COLOR: #20c020;">xna framework</span></span></b></div><div class="MsoNormal"><span style="FONT-FAMILY: Verdana;">&nbsp;</span>&nbsp;</div></div><div class="postfoot">Published Friday, August 25, 2006 3:40 PM by <a id="ctl00___ctl00___ctl01___Entry___AuthorLink" href="http://blogs.msdn.com/user/Profile.aspx?UserID=41921">XNABlog</a>
                                <div><span id="ctl00___ctl00___ctl01___Entry___InlineTagEditorPanel"></span><input id="ctl00___ctl00___ctl01___Entry___InlineTagEditorPanel_State" type="hidden" name="ctl00$_$ctl00$_$ctl01$_$Entry$_$InlineTagEditorPanel"/></div></div></div></div><h3>Comments </h3><div id="comments"><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl00_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#724686">#</a>
                                <span>re: What is the XNA Framework<a name="724686"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Friday, August 25, 2006 7:24 PM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl00_NameLink" title="EastBeast314" href="http://blogs.msdn.com/utility/Redirect.aspx?U=http%3a%2f%2fwww.pixelvalley.net%2fEasTech.htm" target="_blank">EastBeast314</a>
                        </div><div class="commentsbody">Great information and just what I was hoping to hear! Thanks! </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl01_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#724770">#</a>
                                <span>That's a lot of code<a name="724770"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Friday, August 25, 2006 8:54 PM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl01_NameLink" title="dennyrolling" href="http://blogs.msdn.com/user/Profile.aspx?UserID=46431" target="_blank">dennyrolling</a>
                        </div><div class="commentsbody">but what would it actually do? create empty window? </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl02_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#724794">#</a>
                                <span>re: That's a lot of code<a name="724794"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Friday, August 25, 2006 9:15 PM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl02_NameLink" title="fuzzdawg" href="http://blogs.msdn.com/user/Profile.aspx?UserID=46432" target="_blank">fuzzdawg</a>
                        </div><div class="commentsbody">That's not much code at all. <br/>All it does is create a graphics context and load it into a "Game" application, into which the color blue is drawn into the window. <br/><br/>Especially since from the article it seems the XNA framework would take care of all the library initialization and such (audio, graphics, file I/O, etc...) <br/><br/>Cheers. </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl03_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#724905">#</a>
                                <span>re: What is the XNA Framework<a name="724905"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Friday, August 25, 2006 11:23 PM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl03_NameLink" title="JoelMartinez" href="http://blogs.msdn.com/utility/Redirect.aspx?U=http%3a%2f%2fcodecube.net" target="_blank">JoelMartinez</a>
                        </div><div class="commentsbody">Good to hear ... I just picked up a 360 a few days ago in preparation for this :-D </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl04_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#724921">#</a>
                                <span>re: What is the XNA Framework<a name="724921"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Friday, August 25, 2006 11:44 PM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl04_NameLink" title="miketuck3r" href="http://blogs.msdn.com/user/Profile.aspx?UserID=46443" target="_blank">miketuck3r</a>
                        </div><div class="commentsbody">joel, no need for a 360 to start with all can be done on the pc <br/><br/>the actual ability to upload code to the 360 is not expected until later in the year.., or is that the ability to share it? <br/><br/>I think my first task will be to create a controller test tool to represent the selection of each button with a visual action, then look at representing the analogue sticks graphically, baby steps :) </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl05_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#724933">#</a>
                                <span>Let's Kill Dave! : New details about the XNA Framework!<a name="724933"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Friday, August 25, 2006 11:54 PM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl05_NameLink" title="TrackBack" href="http://blogs.msdn.com/utility/Redirect.aspx?U=http%3a%2f%2fletskilldave.com%2farchive%2f2006%2f08%2f26%2fNew-details-about-the-XNA-Framework_2100_.aspx" target="_blank" rel="nofollow">Let's Kill Dave! : New details about the XNA Framework!</a>
                        </div><div class="commentsbody">PingBack from <a href="http://letskilldave.com/archive/2006/08/26/New-details-about-the-XNA-Framework_2100_.aspx" target="_new" rel="nofollow">http://letskilldave.com/archive/2006/08/26/New-details-about-the-XNA-Framework_2100_.aspx</a>
                        </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl06_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#725064">#</a>
                                <span>Mer om XNA Framework.<a name="725064"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Saturday, August 26, 2006 3:05 AM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl06_NameLink" title="TrackBack" href="http://blogs.msdn.com/utility/Redirect.aspx?U=http%3a%2f%2fblogs.msdn.com%2fjohanl%2farchive%2f2006%2f08%2f26%2f725063.aspx" target="_blank" rel="nofollow">Johan Lindfors</a>
                        </div><div class="commentsbody">F&amp;#246;rst och fr&amp;#228;mst vill jag tacka deltagarna under Sommarkollo presentationen om &amp;quot;Spelprogrammering med... </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl07_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#725083">#</a>
                                <span>re: What is the XNA Framework<a name="725083"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Saturday, August 26, 2006 3:28 AM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl07_NameLink" title="intraclast" href="http://blogs.msdn.com/user/Profile.aspx?UserID=46461" target="_blank">intraclast</a>
                        </div><div class="commentsbody">As a complete beginner to c#, but with basic programming knowledge, this is good news. I was wondering how much of the hard work XNA was going to do for us, and it looks like quite a lot. <br/><br/>I particularly like the idea of being able to play about with an existing game, and getting to learn the language by example, thats how I learnt to code for Neverwinter Nights. <br/><br/>There are going to be an awful lot of beginners out there with as little (or less) knowledge than me. I hope there will be lots of howtos and walkthroughs to stop us from getting frustrated. <br/><br/>Thanks for the update, a good read. </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl08_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#725126">#</a>
                                <span>Alt-Tab, display modes, timers<a name="725126"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Saturday, August 26, 2006 4:38 AM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl08_NameLink" title="PeterMackay" href="http://blogs.msdn.com/user/Profile.aspx?UserID=46465" target="_blank">PeterMackay</a>
                        </div><div class="commentsbody">Thanks for this post, there's some great info there. I really like the code sample too. <br/><br/>If you can say at this stage, do you know how we would handle: <br/><br/>1. Alt-Tab. In my games I would like to pause the action when the window loses focus. <br/><br/>2. Display modes. <br/><br/>3. Will it be possible to have a non fullscreen window? <br/><br/>4. Timers. I like to use time-based movement to maintain the same game speed despite the frame rates varying from PC to PC. How do I hook in a timer? <br/><br/>Many thanks, <br/>Peter </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl09_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#725360">#</a>
                                <span>gamedevnews &amp;raquo; Blog Archive &amp;raquo; More Details on the XNA Framework<a name="725360"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Saturday, August 26, 2006 10:45 AM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl09_NameLink" title="TrackBack" href="http://blogs.msdn.com/utility/Redirect.aspx?U=http%3a%2f%2fwww.gamedevnews.com%2f%3fp%3d65" target="_blank" rel="nofollow">gamedevnews &raquo; Blog Archive &raquo; More Details on the XNA Framework</a>
                        </div><div class="commentsbody">PingBack from <a href="http://www.gamedevnews.com/?p=65" target="_new" rel="nofollow">http://www.gamedevnews.com/?p=65</a>
                        </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl10_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#725589">#</a>
                                <span>re: What is the XNA Framework<a name="725589"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Saturday, August 26, 2006 2:28 PM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl10_NameLink" title="struckm" href="http://blogs.msdn.com/user/Profile.aspx?UserID=46493" target="_blank">struckm</a>
                        </div><div class="commentsbody">Are there going to be any API's regarding networking or being able to use the Live service. Thanks. <br/><br/>Mark </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl11_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#725615">#</a>
                                <span>First XNA Sample Code<a name="725615"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Saturday, August 26, 2006 2:56 PM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl11_NameLink" title="TrackBack" href="http://blogs.msdn.com/utility/Redirect.aspx?U=http%3a%2f%2fblogs.msdn.com%2fgarykac%2farchive%2f2006%2f08%2f26%2f725614.aspx" target="_blank" rel="nofollow">XNA Diaries</a>
                        </div><div class="commentsbody">Mitch (PM on the XNA team) has been doing a bunch of writing lately it seems - not on his blog, but on... </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl12_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#725624">#</a>
                                <span>re: What is the XNA Framework<a name="725624"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Saturday, August 26, 2006 3:07 PM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl12_NameLink" title="miketuck3r" href="http://blogs.msdn.com/user/Profile.aspx?UserID=46443" target="_blank">miketuck3r</a>
                        </div><div class="commentsbody">MArk check the XNA FAQ the networking code is not in the initial realese but will be added later, remember they have to create the manged code objects </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl13_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#725639">#</a>
                                <span>What is the future for Managed DirectX?<a name="725639"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Saturday, August 26, 2006 3:19 PM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl13_NameLink" title="TrackBack" href="http://blogs.msdn.com/utility/Redirect.aspx?U=http%3a%2f%2fblogs.chimpswithkeyboards.com%2fjonshute%2farchive%2f2006%2f08%2f26%2f2502.aspx" target="_blank" rel="nofollow">Jon Shute's Blog</a>
                        </div><div class="commentsbody"></div></div><div class="commentowner"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl14_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#725746">#</a>
                                <span>re: What is the XNA Framework<a name="725746"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Saturday, August 26, 2006 5:12 PM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl14_NameLink" title="XNABlog" href="http://blogs.msdn.com/utility/Redirect.aspx?U=http%3a%2f%2fblogs.msdn.com%2fmitchw" target="_blank">XNABlog</a>
                        </div><div class="commentsbody">Hi Peter, I answered your questions over in the XNA Framework forum. <br/><br/><a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=670758&amp;SiteID=1&amp;mode=1" target="_new" rel="nofollow">http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=670758&amp;SiteID=1&amp;mode=1</a>
                                <br/><br/></div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl15_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#725761">#</a>
                                <span>re: What is the XNA Framework<a name="725761"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Saturday, August 26, 2006 5:28 PM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl15_NameLink" title="PeterMackay" href="http://blogs.msdn.com/user/Profile.aspx?UserID=46465" target="_blank">PeterMackay</a>
                        </div><div class="commentsbody">Thanks :-) </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl16_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#725955">#</a>
                                <span>re: What is the XNA Framework<a name="725955"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Saturday, August 26, 2006 8:36 PM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl16_NameLink" title="dusda" href="http://blogs.msdn.com/utility/Redirect.aspx?U=http%3a%2f%2fdusda.com" target="_blank">dusda</a>
                        </div><div class="commentsbody">I can't wait for this to be released. I'm taking a introduction to game development class at Neumont University, here in Salt Lake City, UT. Working with Managed DirectX has been incredibly fun, but I look forward to seeing what I can do with XNA. As awesome as building a game engine is, there are a lot of annoyances (window behavior, resource management, etc) that it looks like XNA will be able to solve. <br/><br/>Is the XNA team interested in interns, by chance? Neumont has a program called Enterprise Projects; many students have worked with Microsoft on various projects through the program before. There are half a dozen or so of us about to hit Enterprise Projects this fall or next January that would be extremely interested in something like this. </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl17_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#725997">#</a>
                                <span>re: What is the XNA Framework<a name="725997"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Saturday, August 26, 2006 9:15 PM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl17_NameLink" title="Pipper" href="http://blogs.msdn.com/user/Profile.aspx?UserID=46513" target="_blank">Pipper</a>
                        </div><div class="commentsbody">This is nice and all, but I honestly think this will be a bit useless until we can get these on our 360s. Not many people have displays that can do 1920x1080, let alone the horsepower to match the 360. <br/><br/>I think the trying to keep it available for both platforms is a bit of a silly idea. When we're cranking out 360 games worth playing with XNA, there is no way many people will be able to play these games. <br/><br/>Hopefully the focus is mainly on the 360 end of things. People have already had many easy ways to make games on Windows for years already. Please dont let trying both platforms being compatable "hamper" XNA. <br/><br/>Most(?) of use are just interested in creating 360 games only. With little to no hope of even bothering to have them run on our Windows boxes. </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl18_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#726979">#</a>
                                <span>re: What is the XNA Framework<a name="726979"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Sunday, August 27, 2006 11:31 AM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl18_NameLink" title="crashlander" href="http://blogs.msdn.com/user/Profile.aspx?UserID=46544" target="_blank">crashlander</a>
                        </div><div class="commentsbody">"Most(?) of use are just interested in creating 360 games only. With little to no hope of even bothering to have them run on our Windows boxes." <br/><br/>I think if you took a poll you would find this if far from true! </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl19_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#727136">#</a>
                                <span>re: What is the XNA Framework<a name="727136"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Sunday, August 27, 2006 2:24 PM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl19_NameLink" title="miketuck3r" href="http://blogs.msdn.com/user/Profile.aspx?UserID=46443" target="_blank">miketuck3r</a>
                        </div><div class="commentsbody">Pipper the whole point is to have ONE development effort for BOTH platforms <br/><br/>The whole effort is to make it easier to develop for windows and xbox not to provide a console centric devleopment API <br/><br/>Development costs are spiraling upwards and especially as xbox live functionalty seems to be coming to vista aswell it makes sense <br/></div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl20_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#727814">#</a>
                                <span>Ponder This &amp;raquo; Blog Archive &amp;raquo; Prepare Yourself and No Content Pipeline<a name="727814"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Monday, August 28, 2006 12:29 AM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl20_NameLink" title="TrackBack" href="http://blogs.msdn.com/utility/Redirect.aspx?U=http%3a%2f%2fjoran.omark.org%2f%3fp%3d7" target="_blank" rel="nofollow">Ponder This &raquo; Blog Archive &raquo; Prepare Yourself and No Content Pipeline</a>
                        </div><div class="commentsbody">PingBack from <a href="http://joran.omark.org/?p=7" target="_new" rel="nofollow">http://joran.omark.org/?p=7</a>
                        </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl21_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#727950">#</a>
                                <span>XNA framework<a name="727950"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Monday, August 28, 2006 3:26 AM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl21_NameLink" title="TrackBack" href="http://blogs.msdn.com/utility/Redirect.aspx?U=http%3a%2f%2fbloggingabout.net%2fblogs%2fpatrick%2farchive%2f2006%2f08%2f28%2fXNA-framework.aspx" target="_blank" rel="nofollow">Patrick Bes Blog</a>
                        </div><div class="commentsbody">I see that the XNA team released an item on their blog with some more information on the XNA framework. </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl22_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#728016">#</a>
                                <span>Sharky&amp;#8217;s Blog &amp;raquo; Blog Archive &amp;raquo; Some juicy XNA info just out&amp;#8230;<a name="728016"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Monday, August 28, 2006 4:40 AM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl22_NameLink" title="TrackBack" href="http://blogs.msdn.com/utility/Redirect.aspx?U=http%3a%2f%2fsharky.bluecog.co.nz%2f%3fp%3d36" target="_blank" rel="nofollow">Sharky’s Blog &raquo; Blog Archive &raquo; Some juicy XNA info just out…</a>
                        </div><div class="commentsbody">PingBack from <a href="http://sharky.bluecog.co.nz/?p=36" target="_new" rel="nofollow">http://sharky.bluecog.co.nz/?p=36</a>
                        </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl23_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#728063">#</a>
                                <span>Ponder This &amp;raquo; Blog Archive &amp;raquo; The First Code Snippets<a name="728063"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Monday, August 28, 2006 5:13 AM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl23_NameLink" title="TrackBack" href="http://blogs.msdn.com/utility/Redirect.aspx?U=http%3a%2f%2fjoran.omark.org%2f%3fp%3d8" target="_blank" rel="nofollow">Ponder This &raquo; Blog Archive &raquo; The First Code Snippets</a>
                        </div><div class="commentsbody">PingBack from <a href="http://joran.omark.org/?p=8" target="_new" rel="nofollow">http://joran.omark.org/?p=8</a>
                        </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl24_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#728449">#</a>
                                <span>XNA Links - 08/28/2006<a name="728449"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Monday, August 28, 2006 11:09 AM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl24_NameLink" title="TrackBack" href="http://blogs.msdn.com/utility/Redirect.aspx?U=http%3a%2f%2fteamsystemrocks.com%2fblogs%2fmickey_gousset%2farchive%2f2006%2f08%2f28%2f1035.aspx" target="_blank" rel="nofollow">Mickey Gousset</a>
                        </div><div class="commentsbody">Mitch Walker via the XNA Team Blog - What is the XNA Framework? <br/><br/>Mitch Walker does a good job in this... </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl25_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#728513">#</a>
                                <span><a name="728513"></a></span></h4><div class="commentssubhead"><span class="commentspan"></span>Monday, August 28, 2006 12:02 PM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl25_NameLink" title="TrackBack" href="http://blogs.msdn.com/utility/Redirect.aspx?U=http%3a%2f%2fblog.3deurope.com%2findex.php%2f2006%2f08%2f28%2fxna-framework-details%2f" target="_blank" rel="nofollow">TrackBack</a>
                        </div><div class="commentsbody">PingBack from <a href="http://blog.3deurope.com/index.php/2006/08/28/xna-framework-details/" target="_new" rel="nofollow">http://blog.3deurope.com/index.php/2006/08/28/xna-framework-details/</a>
                        </div></div><div class="comment"><h4><a id="ctl00___ctl00___ctl01___Comments___Comments_ctl26_PermaLink" title="permalink" href="http://blogs.msdn.com/xna/archive/2006/08/25/724607.aspx#728769">#</a>
                                <span>re: What is the XNA Framework<a name="728769"></a></span>
                        </h4><div class="commentssubhead"><span class="commentspan"></span>Monday, August 28, 2006 2:55 PM by <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl26_NameLink" title="Pipper" href="http://blogs.msdn.com/user/Profile.aspx?UserID=46513" target="_blank">Pipper</a>
                        </div><div class="commentsbody">"Pipper the whole point is to have ONE development effort for BOTH platforms" <br/><br/>Actually, the whole point was to open us a console to homebrew. People have been able to have an easy way to program games on Windows for years already. But gaming has pretty much died out on the Windows platforms unless you're an MMORPG addict these days. It's not because of developement costs, it's because people have actually found that console gaming is where it is at, and has finally become powerful enough that they can play their once favorite PC games on their couch with their XBox360. People have been moving to OSX because gaming is less of a concern these days on the home computer. Gamers have migrated onto the consoles FINALLY. <br/><br/>This is why people are excited, now we can have a closed spec system to code on. We can write demos that push the hardware for the system to its limits, use all the cores, and all the interesting GPU functions that dont even exist on home PCs yet. The demos will be mind blowing, and show people the potential of the 360 so long as Microsoft doesn't keep the power from us so it can be "compatible" with Windows. <br/><br/>How many people do you know that have monitors that can output 1920x1080, and do insane 3D operations on their Windows box? The top 1% of gaming PC hardware owners most likely, this is who XNA will appeal to on the Windows side. <br/><br/>I'm sorry if this sounds like a rant, it's not. I appreciate what MS is trying to do. But i'm just pointing out he obvious here, people want to code on the console because it hasn't been available like this ever before. Windows, sure, no big deal, but a next gen console? Especially one that has hardware functions that can't even be replicated on a Windows PC yet? Sign me up! </div></div></div>

dgyc519 发表于 2006-12-20 14:39:00

<p>小弟在学XNA....</p><p>不过听说不是很有大前途的东西,毕竟是给个人开发着用的,还是坚持用DIRECTX+C++乖乖写</p>
页: [1]
查看完整版本: 什么是XNA ?