摘 要:利用Unity游戲開發引擎來設計一款休閑策略塔防游戲《保衛蘿卜》,游戲系統分為兩大模塊,游戲基礎模塊和游戲邏輯管理模塊,兩大模塊細劃分為資源管理模塊、數據存儲模塊、頁面UI管理模塊、游戲邏輯模塊和關卡模塊。其中游戲邏輯模塊是整個游戲的核心模塊,數據存儲管理模塊和關卡管理模塊為游戲提供了靈活的擴展能力,可以通過 xml 文件對關卡進行配置,將游戲的邏輯與實現相分離。運用算法實現怪物自動尋路,運用對象池技術實現子彈的優化,腳本動態加載地圖讀取關卡,按照游戲的開發思路,從相關知識介紹、游戲設計、游戲實現到游戲測試一步步展開工作。
關鍵詞:Unity;塔防;算法;對象池
1 引言
隨著互聯網技術的迅速興起和發展,人們生活質量在不斷的提高,人們對生活品質也在不斷增加。當前計算機電腦的普及,玩電腦游戲已經成為人們娛樂的主要方式之一[4]。選擇一款獨特的、吸引人的、畫面精美的游戲已成為一種主流。盡管目前市場上存在各種游戲,但塔防游戲市場仍然相當大。 因為它的特殊之處在于人們在游戲過程中沉浸其中,而且難度越大,挑戰性越強,越刺激。而且對于工作的人來說,也不可能花費大量時間用在游戲上,他們會在休閑時間,來享受這短暫的快樂,所以像這款保衛蘿卜塔防游戲就剛好迎合了他們的需求。
2 工具及關鍵技術介紹
2.1工具介紹
Unity是近些年來十分熱門的游戲專業開發引擎之一,包含各種開發工具,可發布多平臺的一個全面整合的專業游戲引擎,它可以一邊運行一邊調試,在運行調試過程中可以讓開發者挖掘到其中的樂趣,不斷迸發想法,不斷學習。
一個完整的Unity程序是由若干個場景組合而成的,每個場景都由許多游戲對象組成,每個游戲對象可以有若干個組件,腳本也是組件之一,通過腳本控制場景中的物體,跳轉場景等等是主要的操作手段,可以說,腳本即是大腦。
Unity簡單直觀的設計界面,高度的兼容性,使得游戲開發者能高效的完成工作。因此,Unity成為了目前國內大部分游戲開發者的首選工具。
2.2關鍵技術介紹
(1)對象池
對象池的應用在于減少內存開銷,其原理就是把可能要反復用到的對象,先存在一個“池子”里,要用的時候就調出來,不用的時候就放回去[5],比如炮塔的子彈就是用的對象池技術。
(2)自動尋路算法
自動尋路算法意思是從某點自動到另一個點的算法[3],一般用于解放玩家雙手,自動尋找某個NPC等,在塔防游戲中,自動尋路一般用于怪物身上,通過在地圖上設置尋路點,通過判斷這些點來使怪物沿著一條固定的路徑前進。
3需求分析
人們生活節奏越來越快,游戲已經成為人們生活中必不可少的一部分,人們通過玩游戲放松自己、消遣時間,而游戲的種類也是越出越多,通過對學生發放的100份調查問卷得出,針對“你喜歡哪款類型的游戲”這一問題中得出,47位同學選擇了塔防游戲這一選項,可見塔防游戲并非沉寂,塔防游戲時間短,無論何時何地就能隨時玩一把,而且代入感強,使玩家沉浸其中,緊張又刺激,隨著關卡越高難度也越來越難,這一點更能帶領玩家要強的本質。
4游戲設計
保衛蘿卜是一款休閑策略類塔防游戲,怪物會沿著一條道路前進,玩家通過建立炮塔攻擊怪物來保衛蘿卜不被怪物吃掉,不同關卡難度不同,關卡越高,難度越大[1]。玩家進入游戲后,在主菜單選擇游戲模式,跳轉到關卡界面,可以查看幫助和返回主界面,默認玩家只能選擇第一關,后續關卡為鎖定狀態,玩家只有在通過第一關后才能進入第二關,當所有關卡都通關后,跳轉通關界面,玩家可以選擇重新開始游戲或者清檔,重新開始游戲闖過的關卡可以直接進入;清檔后相當于初始化,回到游戲最初狀態,關卡鎖定。
4.1游戲總體設計
本設計為2D策略塔防類游戲,場景界面元素通過Unity5.6自帶的插件UGUI,導入外部資源包,在場景中創建Canvas畫布為基礎,ITween插件輔助界面動畫顯示,腳本進行控制。整個游戲系統分為兩大部分:游戲基礎模塊和游戲邏輯管理模塊,游戲基礎模塊又分為資源管理模塊,數據存儲模塊和頁面UI管理模塊,資源管理模塊中包含著游戲的全部資源,包括動畫、特效、2D圖形,關卡配置文件等。游戲邏輯管理模塊包含著游戲最重要的邏輯模塊。
4.1.1游戲框架設計
Unity中的每個場景都以樹狀層次結構組織游戲對象,每個游戲對象可以有多個組件。 因此,整個游戲系統都要符合這種規范,在這種規范下為了滿足設計的高內聚、低耦合,采用MVC模型來設計游戲的層次結構 ,使得游戲結構變得清晰簡單有條理,之間互不影響、互相隔離開來,方便日后的功能擴展。
4.2游戲詳細設計
4.2.1 地圖編輯器
地圖是游戲中重要的一部分,在本游戲中更是如此,通過MapEditor類和Map類實現在編輯器內對地圖關卡的加載關卡、讀取關卡XML數據、清除塔位、消除路徑、保存關卡數據等操作,創建Map類來保存地圖相關屬性,通過OnDrawGizmos方法計算地圖的大小,通過對地圖的計算繪制行列,將地圖分割成等大小的格子。創建地圖尋路點和怪物的尋路路徑,通過鼠標左鍵點擊格子可以添加塔位,鼠標右鍵點擊刪除塔位,設置尋路路徑。
4.2.2 讀取、保存關卡
在塔防游戲里,關卡是游戲的核心,關卡中地圖的數據就顯得尤為重要。通過加載關卡文件,顯示出關卡,關卡文件中包含關卡名稱、怪物行走路徑點、可放置的塔的位置以及出怪的數量信息等、在編譯器里可以對地圖進行編輯,修改路徑,炮塔塔位的數量,位置信息等,修改完畢后我們可以將修改的數據保存到地圖中。
4.2.3游戲對象
本游戲有三大游戲對象,蘿卜,子彈和炮臺,對各個游戲對象創建相對應的腳本來實現游戲對象的屬性,蘿卜怪物的相關信息,炮塔的創建、升級、攻擊、銷毀,子彈的跟蹤等等。在游戲界面,主角蘿卜是處于一個動態的存在,蘿卜在正常狀態會眨眼睛,處于正常狀態,在被怪物攻擊了之后會全身抖一下,進入被攻擊狀態,Role類中保存了蘿卜和怪物血量信息和死亡條件。炮塔有兩個狀態,一個是沒有怪物在范圍內時,炮塔會處于正常靜止狀態,當有怪物進入攻擊范圍時,炮塔會跳轉到攻擊狀態,自動搜尋敵人轉向。
5 結語
本文闡述了基于Unity游戲開發引擎,開發一款策略塔防類游戲-保衛蘿卜。以培養學習者自主學習、單獨思考、動手能力為基準,以對象池技術、自動尋路算法及動態加載等技術設計并實現基于Unity的塔防游戲保衛蘿卜。該游戲運行流暢,性能穩定,不需要網絡,由于Unity的跨平臺性,可隨時隨地打開。
參考文獻:
[1]穆海明,劉盼,劉興華.基于Unity的游戲開發[J].通訊世界,2016(08):288-289.
[2]張國鋒.基于Unity的游戲開發研究[J].電腦迷,2016(10):2.
[3]蔣愷.淺談游戲中自動尋路算法的實現與應用[J].中國新通信,2018,20(02):235-236.
[4]程明智.王一夫.Unity游戲開發技術.北京:國防工業出版社.2012-8:230
[5]汪永好.對象池技術的原理及其實現[J].計算機與信息技術,2016(11):56-58.