您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關如何基于MonoGame開發太空大戰小游戲,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
最近突發奇想,下載了Microsoft Small Basic并編寫了兩個圖形變換的小程序,希望能夠讓兒子對科技產生興趣(當然,成為像我一樣的碼農可不是我的初衷)。 撿起自己入門電腦編程時學會的第一門語言 GW Basic,下載完Small Basic后寫的第一個圖形程序就是一個五彩繽紛的小球在屏幕上亂跳的程序,看上去有點像DOS下小球病毒爆發時的現象(不好意思暴露自己年齡了),而第二個程序則在窗口中顯示了一個可以用鼠標控制的飛機圖案,兒子當時看得很認真。心想,干脆自己做一款打飛機的游戲給兒子玩玩吧,考慮到Small Basic在圖形處理方面畢竟還是相對薄弱,所以我就憑著以前對Microsoft XNA的研究經驗,在Visual Studio 2013中借助MonoGame實現了一款簡單的太空大戰小游戲。
先簡單介紹一下MonoGame吧。它是針對Microsoft XNA 4的開源實現,它能夠支持諸如Xbox360、Windows、Windows Phone、iOS、Android、Mac OS X、Linux、Windows 8 Metro、Windows 10等多種平臺。目前正在完善針對PlayStation Mobile、樹莓派以及PlayStation 4的支持。在圖形系統方面,MonoGame允許開發者選擇基于OpenGL或者DirectX。您可以到MonoGame的官網介紹網頁上了解更多有關MonoGame的歷史信息。
在兩年前我曾打算模擬一個類似魂斗羅的游戲,當時使用的是Microsoft XNA Game Studio 4,后來由于魂斗羅游戲地圖處理有問題,我也沒有繼續深究這個游戲了。于是,在之后的一段時間中,我曾經也想過業余時間做個別力所能及的小游戲自娛自樂一下,可惜被告知Microsoft XNA Game Studio已經被微軟拋棄了,最后一個支持它的VS版本是Visual Studio 2010,于是經過一番搜索,我開始了自己的MonoGame之旅。
剛開始的時候,MonoGame讓我抓狂,因為它缺失一項最重要的功能:Content Pipeline。如果你要使用MonoGame,你必須繼續使用Microsoft XNA Game Studio,并使用XNA的Content Pipeline將所需的材質、聲音、動畫、字體等素材編譯成xnb文件,然后再到MonoGame中調用。這是非常讓人難以接受的,所以,當時我也基本打消了繼續使用MonoGame的念頭。
然而,經過開源社區的努力,新版本的MonoGame已經全面支持Content Pipeline了,您可以從MonoGame所創建的解決方案管理器中找到游戲的Content文件,并雙擊它來打開Content編輯器:
應該說,使用最新版的MonoGame,已經可以滿足開發中等規模的游戲需要了,盡管它仍然存在一些程序缺陷(Bugs)。
MonoGame的介紹到此為止,限于篇幅我也就不深入講解了。請您先移步到下面這段視頻,看看我做的Starwar太空大戰游戲是不是像模像樣:
【點擊此處觀看視頻】
怎么樣?還可以吧?不管怎么樣,能夠吸引到小朋友就行。^_^
請【點擊此處】下載游戲的安裝包。注意,在安裝的過程中會提示安裝OpenAL(一套開放的音頻庫),單擊確認安裝即可。在安裝完成后,你可以通過開始菜單啟動游戲配置程序以及Starwar太空大戰游戲。
在啟動游戲配置系統時,會出現一個用戶賬戶控制(User Access Control)的對話框,單擊“是(Yes)”即可,然后會打開配置界面:
配置完成單擊確定按鈕后,再進入開始菜單選擇Starwar打開游戲即可:
用鼠標移動飛機,單擊左鍵發射激光攻打敵機,游戲任意時刻按ESC鍵退出。
本游戲的源代碼是公開的,地址是:https://github.com/daxnet/Starwar。您可以使用Git客戶端將源代碼克隆到本地,注意,要正確編譯源代碼,您的計算機需要滿足以下條件:
安裝Visual Studio 2013
安裝MonoGame 3.4
.NET Framework:版本4.0
說明:游戲資源均來自于網絡。
背景音樂:《沙羅曼蛇》游戲第二關Remix BGM(來自http://v.youku.com/v_show/id_XNTcyNDUxODAw.html?from=s1.8-1-1.2)
星空背景:來自XNA資源網(http://xnaresources.com/)
子彈發射、爆破聲效:來自XNA資源網(http://xnaresources.com/)
其它圖片(主機、敵機、子彈):來自Bing搜索結果
游戲基于Visual C#采用面向對象設計,在游戲業務中,參與游戲的對象統稱為精靈(Sprite),以下是本游戲各種不同類型的精靈類依賴圖:
Sprite:所有精靈類型的基類
LaserSprite:表示激光子彈的精靈
ParallaxStarSprite:表示移動的星星的精靈,在整個游戲過程中,星星精靈會不斷下落,以呈現一種我機正在向前飛行的效果
BackgroundSprite:星空背景精靈,整個游戲過程中一動不動
EnemySprite:敵機精靈
SpaceshipSprite:我機精靈
AnimatedSprite:動畫精靈,會通過給定的一張包含每幀圖片的精靈表(Sprite Sheet)產生動畫效果
SpritePool:精靈庫,用于管理顯示在屏幕上的指定類型的精靈。當精靈出現在屏幕上時,精靈的IsActive屬性為true,此時該精靈可以被加到精靈庫中,以便統籌管理;當被管理的精靈從屏幕上消失(坐標超出屏幕邊界),精靈庫將會釋放該精靈的資源,并將其從庫中移除。精靈庫保證了整個游戲過程中所產生的對象在一定范圍內
SpriteGenerator:精靈動態生成器,用于每隔一定的時間,在屏幕的任意地方產生一個精靈,并讓其以任意速度朝著一定的方向前進。比如敵機和星星,都是由精靈動態生成器隨機產生的,產生的精靈會被添加到SpritePool中,由SpritePool托管其生命周期
實現代碼在此就不貼了。
以上就是如何基于MonoGame開發太空大戰小游戲,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。