[Monogame] 透過Monogame開發XNA的Windows Store App

摘要:[Monogame] 透過Monogame開發XNA的Windows Store App

前言

 


首先給不知道什麼是Monogame的朋友們來個導讀,

http://www.wpcentral.com/xna-dead-long-live-xna

微軟已經宣告了XNA在官方平台上的死刑,但總有一群不死心熱心的人想要繼續用XNA,

簡單說,Monogame使用OpenGL與DirectX(僅在Windows上)重新做了一個可以跑XNA程式碼的引擎,

最重要的是,它能夠跨平台,iOS、Android、Mac、Linux當然也包括了Windows 8,

事實上 "Write Once, Play Everywhere" 就是它們的官方標語,

顯然它們的目標並不是只要XNA is live這麼簡單而已,

不過沒關係,我們暫且只要知道可以繼續在Windows Store和Windows 8 Phone上寫XNA就行啦

 

 

安裝

 


首先要安裝Monogame本體

http://monogame.net/downloads  由於這篇主題是開發Windows App,就選for Visual Studio吧

以及必需的參考組件SharpDX

http://sharpdx.org/download/

目前的版號是Monogame 3.0.1與SharpDX 2.5.0,

但它們一直有在持續更新,建議像我一樣的XNA廚們(?)可以隨時關切

至於安裝動作就是很簡單的下一步到底,非常方便。

 

 

資源

 


Monogame目前有個罩門就是它們沒有辦法直接編出像以前一樣的xnb資源檔,

以往的XNA專案,我們在資源專案中加入現有項目,Visual Studio就會自動幫我們匯入,並且編譯,

所有的XNA管線資料都會被編譯成副檔名為xnb的檔案(這也就是為什麼我們在匯入資源時都不必標明副檔名)

那麼在Monogame中要使用這些資源該怎麼辦呢?

 

方法一,請正牌XNA幫忙做

如果原本就有裝好XNA的套件(傳統在VS2010,或是參考我上一篇XNA in VS2012皆可),

隨意開啟一個XNA遊戲專案,然後像往常以樣把需要的資源匯入,直接編譯遊戲,

那麼那些資源就會被編譯好出現在 遊戲名稱\遊戲名稱\遊戲名稱\bin\x86\Debug\Content\ 裡面

方法二,使用專用小工具

請到這裡下載 http://xnacontentcompiler.codeplex.com/

基本上就是很輕便的小工具,把路徑選好,類型選好,按下Compile就會編譯,

不過如果有大量的資源要匯入會有點累,基本上我比較喜歡方法一

 

拿到這些xnb資源後,在專案中加入這些檔案後就大功告成,因不需要仰賴Content專案了,管理起來很直接

如果沒有Content資料夾就自己創一個,把那些xnb用"加入現有項目"匯進來,

接著要修改一點檔案建置動作,如下

將建置動作 從""改為"內容"   (英文是Content)

複製到輸出目錄改成永遠複製(Always Copy)或有更新複製

這樣就完全沒問題了,盡情在Windows 8 App上開發XNA吧!

 

 

其他疑難雜症

 


開啟MonoGame Windows Phone 8 Project後,直接跑模擬器編譯就會出現如下錯誤

如果要使用模擬器開發的話需要修改 建置→組態管理員 ,將方案平台改為x86就可以順利開啟模擬器了

 

 

開啟MonoGame Windows OpenGL Project後,直接運行發現如下錯誤

我實驗過,錯誤所描述的那個路徑下還是找到的這個SDL.dll,

我把這個不知道為何錯誤的SDL.dll移除掉,然後手動加入那個路徑下的,就沒出什麼問題

但後來甚至發現,這個SDL.dll直接刪掉不管都沒差。

這個問題在網路上也搜到不少人在討論,這麼明顯的問題MonoGame竟然沒有提出解決,

顯然OpenGL in Windows這部分MonoGame並沒有很重視

(事實上也沒錯,如果要開發原生在Windows上的XNA,那就使用原版XNA就好啦)

 

 

結語

 


以上就是有關於在Windows 8上使用MonoGame的心得,

MonoGame似乎是個很愛微軟產品的團隊,它們另外出的產品 http://xamarin.com/

就是一款主打用C#開發各種跨平台App的編譯器

如果你也是微軟技術的愛好者,MonoGame團隊的後續作品相信都相當值得期待