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