摘要:[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
目前的版號是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團隊的後續作品相信都相當值得期待