李竟
關鍵詞:unity3D;塔防;手機游戲;設計制作
國產游戲的發展可謂是突飛猛進,特別是手機游戲種類越來越多。市場調研報告顯示,估計在2023年,全球的手機玩家數量可突破30億,中國游戲市場發展前景廣闊。塔防游戲屬于較為典型的休閑游戲,受到諸多玩家的喜愛,其在設計過程Unity3D的應用必不可少,依托此技術能夠為塔防游戲的設計提供方向,優化設計思路,增強玩家的游戲體驗,推動3D手機游戲領域的快速發展。
1概述
Unity3D屬于游戲開發綜合類型工具,能夠為玩家打造輕松的游戲場景,通過三維視頻,建立實時動畫,搭建可視化平臺。Unity3D中包含編輯器、地形編輯、腳本、版本控制以及跨平臺發布多重功能,能夠形成物理引擎( PsysX).可以拒絕多個腳本語言運行,其中還內置Shader效果,便于開發者應用,游戲開發以后能夠向Android和iOS等手機平臺上發布,還可向PC端發布,或者利用Unity插件來發布網游。Unity3D和其他類型的游戲引擎存在顯著差異,即設計者更為關注游戲體驗感和可玩性,并非只追求設計簡單[1]。塔防游戲屬于益智類游戲,通過作戰地圖,使怪獸按照設定路線進行移動,而玩家則可根據設定位置創建炮塔,用特殊技能對敵人發起攻擊,最終獲得勝利。手機平臺中的《保衛蘿卜》《植物大戰僵尸》都屬于塔防游戲。當前,移動設備的運行性能日益提升,手機游戲也具備3D視覺體驗功能,為塔防游戲的開發提供了良好的環境。
2設計與制作策略
2.1《保衛羊村》制作與設計
2.1.1游戲設計內容
《保衛羊村》等塔防游戲就是利用Unity3D技術完成設計的。其設計思路是將人物角色劃分為“羊村武士”“灰太狼敵人”,二者分別作為防守方和進攻方。敵人根據地圖設計向左方移動,逐漸靠近羊村,并對基地發起攻擊,而攻守一方根據防守需求,完成武士角色的動態設置,創建角色展開防守,當武士能夠成功消滅一個敵人時,就可以獲得對應金幣,而金幣可以應用在防守投入中。若敵方進入羊村大門,則代表防守方失敗。
根據Unity3D塔防游戲的設計流程,要先創建模型和工程,之后建構場景,完成程序的編寫,通過測試以后相關功能才可實現。在建模階段,主要利用3DsMax軟件對游戲模型進行設計和制作。在本游戲設計中,進攻方、防守防的角色和各類武器、道具等都將被導出為FXB類型格式文件,之后使用PS軟件完成貼圖設計,最終導出PNG格式信息。重新建立Unity工程,并將其命名為“Sheep War”,之后創建文件Asserts,并將模型資源(包括PNC和FXB等)導人其中,隨后依次創建Material,Model,Prefab,Scenes,Scripts,對于以上文件采取分類管理措施。之后,設置不同游戲場景、劃分關卡,通過游戲管理器內部腳本輔助鏈接與管理[2]。
在游戲設計環節,需要依托核心技術完成腳本程序的編寫和地形建構,之后進行調試,調試通過以后發布作品,進入發布頁面,選擇游戲場景,默認加載項,之后在平臺內選擇對應的運行平臺屬性,即可發布。此時,用戶可將游戲下載到手機等設備進行試玩和測試。
2.1.2游戲設計技術
《保衛羊村》屬于塔防游戲,其設計階段的關鍵技術應用如下。
第一,創建地形。從菜單中選擇”Create terrian”,以平面地形的創建作為對象,借助編輯工具完成地形繪制,并且美化。地形編輯器擁有多種功能,借助“拉高降低”功能可建構山壑:依托“平滑工具”,能夠將地形的棱角去除:選擇“貼圖工具”還可自定義地形貼圖,設置綠色和黃色等顏色,或者種植各類植物:利用“細節工具”完成花草植被等細節元素的設置。在場景中,默認主攝像機,并選擇對象,將其屬性設定為Projection,垂直觀察,對于觀察位置進行調整,保證預覽窗口可以清晰觀察游戲運行鏡頭。點擊編輯菜單,在其屬性界面中設置Sky box Material,并將其命名為“Sunny one sky books”,此時設置場景即可出現“藍天白云”,營造游戲背景[3]。
第二,矩陣地圖的應用。需要在游戲的平面對象設置長寬值,并通過指定的腳本文件,在其中將二維數組定義出來,經過初始化生成地圖單元序列,使其初始化成地圖的平面矩陣。
第三,游戲管理器。通過創建空中游戲體,將其視為游戲管理器,將新建腳本的組件制定,完成Audio組件的配置,管理器可以設定為靜態實例,并且具有唯一性,這能夠保證游戲運行階段只存在一個靜態實例,對于游戲核心邏輯加以控制,具體涵蓋玩家得分、游戲對象、游戲狀態、界面數據、切換關卡、背景音樂等內容。
第四,敵人生成器。通過新建游戲對象,在腳本文件之內,根據不同關卡的預設時間、位置動態等,經過克隆來生存進攻方對象模型,也稱Prefabs,不同生成對象都可以根據運動行為移動,對防守單位進行攻擊。通過XML數據設計對生成策略進行預定義,進而模擬預設行為,對程序的讀取文件進行定義,根據等待時間、指定線路等編號來生成進攻對象。
第五,碰撞檢測。利用該技術輔助3D游戲設計,經過碰撞檢測,如果其運行效果良好,則角色處于特定場景中可平滑移動。如果出現擊打碰撞或者被武器擊中等場景,則會導致物體受損。常規條件下塔防游戲設計都是以第三人稱視角出發,在Unity3D模型內部設置組件,通過碰撞器完成觸發剛體、偵測內容之間的碰撞。如果碰撞事件能夠將事件函數觸發,此時可以將“Is trigger”選項勾選,并將邏輯代碼添加在觸發函數中,從而檢驗物體在碰撞以后的行為效果。
第六,音效設置。Unity3D模型的游戲場景音頻擁有兩種形式,即音樂和音效。游戲音樂可以作為背景音樂長期循環播放,所以設計階段可選擇MP3格式,這種設計方式不占用過多游戲的運行內存。而音效設計主要是突出游戲效果,如設計短暫爆炸聲音,可以選擇Wav等格式。具體設計流程是:勾選管理器對象,完成音源對象的創建,包括audio,component,audio source等,將audio屬性設為背景音樂,將其和bkmp3音樂關聯,借助update方法對背景音樂播放與否加以判斷。腳本內部使用“Play”將音樂全部播放。設計武器的時候,應該和創建音效對象關聯,當游戲過程出現碰撞時,可使用“Play one shot”,代表音效被播放一次[4]。
第七,游戲數據存儲。Unity3D能夠為兩種游戲提供差異化的數據存儲方式,相對便捷的設計方式就是直接保存,本地完成存儲和讀取,主要是利用“Player Prefs”來完成,其運行原理是通過“鍵值”保存數據,并將其存儲在文件內。運行過程類似于為每個數據命名,在其存儲于本地文檔之內以后,通過名字將存儲數據取出。若游戲涉及大量的數據運算,則需要利用Filelnfo方式完成復雜文件的讀寫操作。
2.2塔防游戲制作與設計實例
2.2.1游戲內容分析
本研究借鑒塔防游戲的設計思路,開發出適合手機移動端運行的塔防游戲,游戲本身的節奏快,適應玩家靈活應用閑暇時間體驗游戲樂趣。在設計過程中,應用Unity3D引擎,在原有3D塔防游戲基礎之上,增設攝像機移動功能,讓游戲畫質更為清晰。游戲規則為:地圖一側能夠以點生點的方式生成敵人,之后敵人按照既定的路線跑到地圖另一側,在敵人行走路線中,兩側玩家可以使用金幣完成炮臺建構,以此攻擊敵人,阻止其向終點移動。值得注意的是,若炮臺位置設定不合理,或者炮臺本身威力不夠,則敵人就會順利到達終點,此時玩家大本營被攻陷,游戲結束。
2.2.2游戲設計流程
在設計過程中,游戲功能模塊主要表現在敵人功能、防御塔功能、UI界面上,玩家需要先注冊賬號,之后登錄游戲界面,完成信息設置,主要包括游戲難度等級、背景音樂的音量等,以上設置結束以后,即可進入游戲界面。在左上角能夠顯示玩家持有金幣數量,右側設計三種炮彈的UI,當玩家點擊對應按鈕的時候,即可完成炮臺建造。炮臺建造完成以后,3s時間內第1波敵人出現,按照設定路線移動。玩家利用系統給的初始資金可以抵御敵人的第1波攻勢,之后獲得金幣,新建造炮臺。在游戲運行階段,玩家通過暫停按鈕進入暫停界面,該界面有“重新開始”“繼續游戲”“退出游戲”等按鈕,待敵人全部死亡之后,即可進入下一關卡。如若大本營被攻破,玩家血量為0,則游戲結束,彈出游戲界面。針對Game manager,選擇單列設計模式,便于控制游戲,還能節約系統資源。利用MVC設計,完成敵人、炮臺等設計,將二者的數據模塊、功能模塊分離,既可降低程序設計難度,還能將其維護性提高。游戲中的“類”主要有Game manager,負責場景加載、UI控制等整體控制功能:Bullet功能為追蹤子彈、減少敵人血量;Turret功能為發射子彈;Enemy功能為移動敵人、受傷死亡等[5]。
2.2.3游戲實現流程
Unity3D技術的應用和實現流程如下。
第一,Prefab也稱“預設體”,屬于Unity核心概念,可將游戲對象存儲于Prefab中,對象包含其組件下方所有游戲對象,借助Hierarchy示圖能夠實現復制粘貼預設體。在游戲開發階段,敵人、炮臺均利用Prefab進行設計,可以減少設計工作量。具體而言,在Unity中導人炮臺模型,后臺運行腳本可通過Turret編寫,并將其向目標上加載,通過測試以后,將后臺預設體對象拖人Project示圖中。
第二,核心控件Ugui。應用Ugui panel之后,板面控件能夠作為容器,允許其他UI控件在其中編輯,通過text文本組件,將玩家消滅敵人獲得金幣或者建造炮臺消耗金幣實時顯示,設置Button,Image組件建造炮臺,轉變圖片格式,通過填充呈現在界面上。建造不同炮臺時,可以將按鈕置于相同Toggle中,以確保UI數據傳人的準確性,玩家只能建造一種炮臺,以避免非必要錯誤。
第三,AI設計。敵人程序有兩類,即Enemy和Create Enemy,實現敵人創建,并在地圖中完成路點設定,生成前進路線,通過transform方法,讓敵人根據向量移動。炮臺設計需要實現點擊處即可建造,在Unity中設置physics,炮臺能夠鎖定首個敵人的攻擊范圍,所以程序設計需要添加trigger,將防御塔攻擊范圍明確,代碼中也需要添加One trigger Enter,敵人進入攻擊范圍之內,炮臺即可獲取攻擊對象,按照設計路線攻擊敵人。至于炮彈追蹤的算法應用,先假設炮彈和敵人的位置,獲得兩條向量,借助線性代數的向量減法,分析敵人所在位置,將該向量單位化處理,得到單位向量,游戲中的每一幀都采取該算法進行計算,隨著敵人移動,逐漸更新向量,保證炮彈能夠按照對應方向移動。
3結束語
在塔防游戲設計階段,設計者需要將玩家感受考慮其中,以保證游戲玩法多樣化,讓玩家即使處于相同的游戲環境中,也能夠獲得差異化的游戲體驗。通過對Unity3D技術的廣泛應用,可以開發出具備良好交互性的手機游戲,為玩家帶來更為優越的游戲體驗感,提高Unity3D技術的應用價值。