XNA強大的跨平台能力
早在TechEd 2009的中東會議的演講上,微軟就示範了一款跨Windows 7, Windows Phone 7 Series 和Xbox 360平台的冒險類遊戲——Platformer。這款遊戲對於熟悉XNA開發的程式員來說應該不陌生,因為這款遊戲一直是作為XNA的初學者開發模板通過給大家使用,可謂是入門的極佳資料。
Windows Phone 7版Platformer
PC版Platformer
Platformer提供了可完整啟動並執行原始碼,支援多平台的運行。比如說我們可以在Windows Phone 7上繼續Windows 7儲存的遊戲,並最終將存檔放到Xbox 360上完成任務,這聽起來是不是非常震撼。
手機、PC、Xbox之間的通用遊戲和通用存檔意義非常重大,意味著我們可以在地鐵或者公交上使用Windows Phone 7隨時隨地遊戲外,而後還可以將Windows Phone 7上的遊戲存檔通過網路直接上傳到遊戲體驗效果更好的Xbox 360或者PC上“再續前緣”。更好的訊息是,它又被移植到Silverlight了。示範地址如下:
http://silverlight.laumania.net/platformer/
而實現上面這一切都源於在Windows Phone 7平台上引入的XNA遊戲架構。XNA發展自遊戲界大名鼎鼎的DirectX,是微軟對於C#版DirectX的修正和擴充版本。起初該工具也只是面向業餘遊戲程式員所設計的遊戲開發套件。
第一版的XNA只支援Xbox和PC兩個平台,在XNA 3.1版中又引入了對Zune的支援。但是XNA遲遲未表態何時支援Windows Mobile平台,以至於眾多的遊戲開發人員認為微軟又一次拋棄了Windows Mobile。現如今微軟終於給了我們一個定心丸,XNA將成為Windows Phone 7主要的遊戲開發平台。
XNA同以往的遊戲開發套件相比,遊戲的開發效率有巨大的提升,成本和時間亦大副縮短,這是XNA最大的優勢和賣點。其實XNA和眾多的.Net Compact Framework程式員來說可謂是同宗同源,因為XNA本身就是構架於.Net Compact Framework,只不過該版本的.Net Compact Framework為支援Xbox晶片進行相應的移植和最佳化。因此大多數.Net Compact Framework開發人員可以快速切入XNA的學習和開發。
XNA的基礎庫也和Widows Mobile的.Net Compact Framework基本保持一致,只是額外添加了一些針對遊戲開發相關的類庫,因此Windows Mobile開發人員在遊戲開發上的學習和遷移難度極低,無需又一輪無根基的修鍊過程。
除此之外,使用XNA的好處就是C#的快速開發優勢,縱觀現在Windows Mobile上的遊戲開發方式主要有如下三類:
1、 Windows Mobile內建的DirectX Mobile、GAPI或GDI。
2、 Develant Technologies公司的GapiDraw套件。
3、 OpenGL ES。
現如今這些開發方式都已經有了相應的.NET版本封裝,於是乎越來越多的Windows Mobile遊戲都開始採用C#+.Net Compact Framework以及上述套件進行開發,據筆者所知的就有Flight Commander、Tower Defense等數十款,而且遊戲效果亦可與那些使用C++開發的遊戲媲美。但是上面三種遊戲開發方式各成體系,支援的功能也各有長短,因此選擇何種開發套件頗為為難。
再者,OpenGL ES和GapiDraw並無官方版的.NET封裝,因此第三方的封裝不可避免地存在一些缺陷,導致遊戲開發時才意識到問題。最後,就是這三種遊戲開發方式的介面並不一致,所以我們每次都無法避免重新學習的過程,開發經驗難以最大化地得到複用和積累。
而有.Net Compact Framework 開發經驗的程式員在使用XNA開發遊戲時雖然也存在一個重新學習過程,但是因為XNA底層封裝了遊戲開發中常用和較複雜的實現,因此極大地簡化了遊戲開發的難度。我們可以使用很少的代碼就可以實現遊戲動畫、衝突檢測和情境的捲軸滾動等問題。
除此之外,我們還開發的遊戲無需太大的改動就可以運行在PC、Xbox、Zune和Windows Phone 7、Silverlight平台上,一舉五得,何樂不為!好,廢話少敘,開始Platformer遊戲的學習征程吧。