認識 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 遊戲程式。