认识 XNA Game Studio 4.0

 

摘要

早在 Microsoft Pocket PC 和 Microsoft Smartphone 的年代,Microsoft 就已经支持程序设计师在智能型装置上设计游戏程序,只不过那个年代设计游戏程序依靠的是功能很基本的 GAPI (Game API)。到了 Windows Mobile 5.0 的时代,程序设计师已经可以利用 Microsoft 提供的 DirectX 技术设计高效能的 2D 和 3D 的游戏,不过对使用 C# 程序语言开发应用程序的程序设计师,利用 DirectX 技术开发游戏还是有一点隔阂。Microsoft 后来虽然推出了能够支持 C# 程序设计师设计游戏的 XNA,协助程序设计师开发 Windows 平台与 Xbox 游戏机上的游戏,但是尚不能协助程序设计师设计能够在智能型手机上执行的游戏,直到 XNA Game Studio 4.0 版问世,支持智能型手机游戏程序设计方面才又往前迈进一大步。在这一篇文章中我们将要为大家介绍 XNA Game Studio 4.0 的基本功能与支持游戏设计的特性和优势,做为使用 XNA Game Studio 4.0 版设计游戏程序的基础。

认识 XNA

XNA Game Studio 是一个整合式的游戏开发环境,能够支持程序设计师使用 C# 程序语言,搭配其提供的工具和类别库设计游戏程序,其第一版发表于 2006 年 12 月,这个版本只能支持程序设计师开发能够在 Windows 平台和 Xbox 游戏机上执行的游戏程序。和第一版隔了大约只有一年,Microsoft 就于 2007 年 12 月推出了 XNA Game Studio 2.0 版,这个版本能够与包括 Visual Studio 2005 Express 版在内的任何 Visual Studio 2005 版本整合,让程序设计师可以使用熟悉的 Visual Studio 2005 进行设计游戏程序的工作,而且可以允许在 Windows 平台或 Xbox 360 游戏机上执行的游戏透过网络联机功能使用 Xbox Live 服务。Microsoft 于 2008 年 10 月推出的 XNA Game Studio 3.0 版不但能够与包括 Visual Studio 2008 Express 版在内的任何 Visual Studio 2008 版本整合,以进行设计游戏的工作,同时也加入了对 Microsoft Zune 数字播放器的支持,让程序设计师设计好的游戏程序可以部署到 Zune 装置上执行。除此之外,XNA Game Studio 3.0 版是第一个提供 Xbox Live 社群支持的版本,也是第一个支持 C# 3.0 和 LINQ 语法的版本,同时也是第一个提供试用模式的版本,允许程序设计师利用 XNA Game Studio 3.0 为所开发的游戏程序加入试用版的功能,以及利用 Xbox LIVE 服务开发多人在线游戏。Microsoft 于 2009 年 11 月推出的 XNA Game Studio 3.1,首开先河的推出影片播放功能,也改进了音效与音乐播放功能,其支持 Xbox LIVE 服务提供的 Party 功能允许最多 8 个人进行聊天并分享图片。除此之外,XNA Game Studio 3.1 也支持 Xbox 360 游戏的使用者使用其支持的化身 (Avatar) 功能。

最新版的 XNA Game Studio 4.0 版发表于 2010 年 9 月。这个版本支持除了可以支持程序设计师开发能够在 Windows 平台和 Xbox 360 游戏机上执行的游戏程序以外、也能够协助程序设计师开发最新的 Windows Phone 7 智能型手机平台的游戏,同时也支持 3D 硬件加速,于游戏开发阶段设定欲套用的 Effect,易于回复至原始状态的内建状态对象,图形放大、缩小、与旋转支持,多点触控输入,麦克风输入,具缓冲功能的音效播放功能,并且允许程序设计师利用 Microsoft Visual Studio 2010 程序开发工具开发 Windows Phone 7 智能型手机的游戏程序。

XNA Game Studio 游戏开发支持

了解了 XNA Game Studio 各个版本的功能和特性之后,接下来我们要为大家介绍 XNA Game Studio 支持游戏开发的工具、Framework、以及游戏支持处理功能。

从前述的介绍,我们已经了解 XNA Game Studio 是一个整合游戏开发平台、开发工具、与类别库的游戏开发工具包,其中除了内含可以用来设计游戏程序的 Visual Studio 2010 程序开发工具以外,另外还包含了以下的工具:

  1. Microsoft Cross-Platform Audio Creation Tool 3 (XACT3):XACT 是一个由 Microsoft 开发的跨平台的音效建立工具,可以协助您建立游戏程序需要使用的音效资源。
  2. XNA Framework Remote Performance Monitor:XNA Framework Remote Performance Monitor 是一个可以在游戏运行时间分析游戏效能的工具,协助程序设计师分析游戏程序的执行效能。

[说明]

如果开发者的计算机未安装 Microsoft Visual Studio 2010,则开发者的计算机在安装 Windows Phone Developer Tools 套件的时候,Windows Phone Developer Tools 套件会自动在开发者的计算机中安装 Visual Studio 2010 Express for Windows Phone 程序开发工具,以便让开发者进行设计游戏程序的动作,如果开发者的计算机已经安装有 Microsoft Visual Studio 2010,则开发者的计算机在安装 Windows Phone Developer Tools 套件的时候会为 Visual Studio 2010 安装新的项目模板,协助程序开发者使用已安装的 Visual Studio 2010,搭配新的项目模板开发可以在 Windows 平台、XBOX 360 游戏机、以及 Windows Phone 7 智能型手机执行的游戏程序。

图1 所示即为已安装 Visual Studio 2010 的计算机在加装 Windows Phone Developer Tools 套件之后,在 [Visual C#] 项目底下多出 [XNA Game Studio 4.0] 项目型态选项的画面:

图1:选择 Windows Phone Developer Tools 套件提供的 [XNA Game Studio 4.0] 项目型态选项的画面

除了 Microsoft Cross-Platform Audio Creation Tool 和 XNA Framework Remote Performance Monitor 工具以外,XNA Game Studio 4.0 提供的 XNA Framework 是游戏程序执行时需要用到的主要功能。除此之外,XNA Game Studio 4.0 提供的 Content Pipeline 功能负责处理游戏程序执行时期需要使用的资源,包括 2D 图形、3D 模型、音效/音乐、以及字型等等。

Content Pipeline 功能能够利用内建的 Importer 汇入常见的游戏资源,而且也允许程序设计师制作自定义的 Importer,以处理游戏程序执行时需要用到的特定格式资源。有关 Content Pipeline 处理游戏资源的详细流程可以参考 [Windows Phone 7 智能型手机应用程序开发总览] 一文的说明。

[说明]

Content Pipeline 能够在应用程序建置阶段将游戏程序执行时需要使用的资源处理成二进制格式的资源,以便让游戏程序执行的时候直接加载并使用,有效提升游戏程序加载资源的效率,连带地提升 XNA Game Studio 4.0 制作的游戏程序的执行效率。

Content Pipeline 默认能够处理的资源型态包括以下所列的常见资源:

  • Autodesk FBX 格式的资源 (扩展名为 .fbx 的档案)
  • DirectX Effect 格式的资源 (扩展名为 .fx 的档案)
  • DirectX X 格式的资源 (扩展名为 .x 的档案)
  • 描述字型的资源 (扩展名为 .spritefont 的档案)
  • 纹理 (Texture) 档案,包括扩展名为 .bmp、.dds、.dib、.hdr、.jpg、.pfm、.png、.ppm、和 .tga 等常见的图形格式档案
  • Microsoft Cross-Platform Audio Creation Tool (XACT) 建立的声音档案 (扩展名为 .xap 的档案)
  • 扩展名为 .MP3、.WMV、和 .WMA 的音乐档案和影片档案
  • 描述游戏数据的 XML 文件

要使用 XNA Game Studio 4.0 设计游戏程序,您可以启动 Visual Studio 2010 Express for Windows Phone 或 Visual Studio 2010 应用程序开发工具,执行 [档案 | 新增 | 项目] 功能,屏幕上就会出现选择欲建立的项目型态的画面,请于左方窗口选择 [Visual C#] 项目底下的 [XNA Game Studio 4.0] 项目,于中间的窗口中选择 [Windows Phone Game (4.0)],表示要建立能够在 Windows Phone 7 智能型手机上执行的游戏程序。选妥项目类型之后请于 [名称] 字段输入项目名称,于 [位置] 字段选择存放项目文件的文件夹,做好之后按下 [确定] 键,执行建立项目的动作,等项目建立成功之后,您就可以在 [方案总管] 窗口中看到两个项目,如图2 所示:

图2:Windows Phone Game (4.0) 项目的内容

其中项目名称为 [项目名称 Content(Content)] 的项目就是负责准备 XNA 游戏程序资源的 Content Pipeline 项目。您只要将 Content Pipeline 预设能够处理的资源文件加入到 Content Pipeline 项目,该资源就会在项目建置的阶段被建置成二进制的资源格式,供游戏程序执行时加载使用。

使用 XNA Game Studio 4.0 设计游戏的优势

使用 XNA Game Studio 4.0 设计游戏程序具有众多的优点,除了可以支持使用高生产力的 C# 程序语言设计游戏程序以外,使用 XNA Game Studio 4.0 设计游戏还具有可以跨越平台和效能优良的优点,分别说明如下:

  1. 跨越 PC 个人计算机、Xbox 360 游戏机、以及 Windows Phone 7 智能型手机等平台的游戏开发解决方案。

    XNA Game Studio 4.0 支持程序设计师使用相同的程序写法设计能够在 PC 个人计算机、Xbox 360 游戏机、以及 Windows Phone 7 智能型手机等平台上执行的游戏,不需要为不同的平台学习不同的游戏设计方法,使用 XNA Game Studio 4.0 设计上述三种平台的游戏程序时,程序设计师只要注意游戏执行所在的平台的屏幕大小及方向的差异即可,应用程序功能的设计方式几乎完全相同。

    欲使用 XNA Game Studio 4.0 开发不同平台的游戏程序,程序设计师可以先使用 Visual Studio 2010 或 Visual Studio 2010 Express for Windows Phone 建立游戏项目,并设计妥游戏的功能,然后使用鼠标的右键点选 [方案总管] 窗口中的项目名称,再从出现的菜单选择 [Create Copy of Project for XXX] 功能 (其中的 XXX 代表:Windows、Xbox 360、或 Windows Phone),就可以依据目前项目的内容建立可以在指定平台上执行的游戏程序项目,Visual Studio 2010 或 Visual Studio 2010 Express for Windows Phone 就会为我们建立新的游戏项目,其做法如图3 所示:

    图3:依据现有的项目内容建立新的游戏项目的做法

[提示]

利用同一份源代码开发能够在 Windows 平台、XBOX 360 游戏机、以及 Windows Phone 7 智能型手机执行的游戏时可以善用条件编译语法来处理不同平台的程序写法差异,例如以下的范例就会使用条件编译语法区隔 WINDOWS 和 XBOX 的程序写法和 Windows Phone 7 程序写法的差异,减轻程序设计师维护多份程序项目的负担:

#if WINDOWS || XBOX
//遊戲在 Windows 平台和 XBOX 遊戲機執行時會執行的程式碼
#else 
     //遊戲在 Windows Phone 7 執行時會執行的程式碼
#endif

[特别注意]

执行 [Create Copy of Project for XXX] 功能 (其中的 XXX 代表:Windows、Xbox 360、或Windows Phone)虽然可以依据现有的项目内容建立新的项目,但是Visual Studio 2010或Visual Studio 2010 Express并未将现有的项目内容复制一份到新的项目中,而是让新的专案和现有的项目共享同一份源代码以及Content Pipeline项目,换句话说,当您修改现有项目的原始码时,相当于修改新建立的项目的原始码,免去维护多份源代码造成的负担。

  1. 使用 XNA Game Studio 4.0 设计游戏程序除了可以利用Pipeline Content功能在项目建置阶段处理游戏程序欲使用的资源,以提升游戏的执行效能以外,XNA Game Studio 4.0 经过长时间 (超过 3 年) 的效能调整,其功能在执行时具有良好的效能,例如 XNA Game Studio 4.0 提供的 Math 函数库中的各项数学功能皆经过效能优化的处理,而且在内存使用方面也可以有效降低游戏执行时产生的 Garbage,避免系统回收游戏程序产生的 Garbage 而影响到执行效能。

[结语]

在这一篇文章中我们为大家介绍了 XNA Game Studio 4.0 的基本功能与支持游戏设计的特性和优势,做为使用 XNA Game Studio 4.0 版设计游戏程序的基础。下一回我们将要为大家介绍如何使用 Visual Studio 2010 或 Visual Studio 2010 Express for Windows Phone 设计以 XNA 为基础的 Windows Phone 7 游戏程序。