崔景鑫 吳 昊 楊明梅 吳嘯宇 薛 韡*
(防災科技學院信息工程學院,河北 三河 065201)
隨著計算機產業的興起,計算機逐漸走進大眾家庭,不可避免的,電子游戲也逐漸走入了我們的生活,電子游戲有利有弊,它可以培養解決問題的能力,豐富我們的精神文化生活,提高視覺空間技能和開發想象力,并且現如今電子游戲已經是年輕人社交內容中重要的一環,為青少年的社交提供了很大的便利。雖然電子游戲有使人沉迷地風險,但無論如何,電子游戲都已經在文化產業和日常生活中扮演了重要的角色,并且可以預見的是,電子游戲的前景無比廣大,未來將會迅速發展,也許有一天,電子游戲真的可以成為人們的第二世界。我們的闖關游戲關卡設計主要有兩種,射擊關卡和跑酷關卡,射擊關卡是戰斗關卡,玩家操縱角色與AI 戰斗,消滅AI 怪物取得勝利,跑酷關卡中玩家需要操縱角色躲避障礙在規定時間內到達終點。我們使用的主要開發工具是虛幻引擎,EPIC旗下的UE(Unreal Engine)系列引擎是目前世界上頂尖的游戲設計引擎,是整個游戲界運用范圍最廣,整體運用程度最高,次世代畫面標準最高的一款游戲引擎,占有全球商用游戲引擎80%的市場份額。虛幻引擎是全球最開放最先進的實時3D創作平臺。經過持續的改進,它已經不僅僅是一款殿堂級的游戲引擎,還能為各行各業的專業人生帶去無限的創作自由和空前的掌控力。UE 系列最新作UE5 更是一公布就火爆全球, 其中兩大核心技術紛紛迎來了很多行業工作者的研究與探討,被稱為“次世代引擎”。我們使用的UE4 引擎可以完美對接UE5 引擎,這為我們將來的持續開發帶來便利。本文立足于當前新興的單機聯機游戲市場,以藍圖(Blueprint)編程為主體,說明游戲在PC端需要實現的邏輯。在充分展示并運用UE4 完備的功能特性的前提下,設計游戲的UI 界面、關卡規則邏輯、AI 和障礙物邏輯及角色動畫播放邏輯,從而實現一個較為完整的游戲軟件。
游戲需要實現的功能大體可分為兩大部分,數據邏輯層和表現層。數據邏輯層是游戲的基礎部分,包括關卡邏輯、玩家控制邏輯、AI 和障礙物邏輯、UI 交互邏輯等。數據邏輯層需要通過藍圖逐個實現功能模塊,再通過模塊之間的調用、藍圖之間的通信從小到大構建完整的游戲框架并實現。數據邏輯層主要在虛幻引擎提供的Gameplay 框架中Gamemode、Playercontroller、Pawn、Acter 等藍圖中實現,部分功能還需要在自定義的藍圖類中實現。表現層在很多情況下都決定了一款游戲的上限,是玩家能夠最直觀分辨游戲好壞的評價標準。表現層包括人物模型、場景建模、UI 界面、光影聲音、游戲劇情等。人物模型和場景建模需要在建模軟件中制作并且使用規定的格式導入UE4 引擎中,我們使用的建模軟件主要是3DMAX 和Maya,3DMAX 是Discreet 公司開發的基于PC 系統的三維動畫渲染和制作軟件,Maya 件是Autodesk 旗下的著名三維建模和動畫軟件,兩者都是常見的實用建模軟件。將場景和模型導入引擎后,需要使用地形工具和草地工具對場景進行調整,為場景調整光影效果,增強表現力。合適美觀的UI 也是表現層的重要部分,UI 主要通過Photoshop 軟件制作。表現層主要由HUD、UserWidget和地形工具等引擎功能實現。
從完整的游戲流程來看,需要完成的功能大致有:進入游戲生成UI 界面,與UI 交互實現開始游戲、設置等功能,選擇關卡(手動選擇和隨機選擇),讀取關卡邏輯和加載生成關卡,例如勝利條件、AI 和障礙物的刷新位置、數量等,生成玩家人物模型并且可以控制(玩家相關內容是項目中重要的部分,由許多部分組成,例如模型、骨骼、動畫邏輯、攻擊和技能邏輯、生命值和死亡邏輯等,主要在Gameplay 框架中的PlayerController 和Character實現),生成AI 和障礙物,AI 可以攻擊玩家,障礙物通過碰撞觸發,玩家勝利或者失敗后有相應的UI 界面顯示和邏輯處理。
本游戲軟件的設計由場景關卡、游戲模式、玩家角色、用戶界面和AI 障礙物五部分組成。針對上述內容進行具體分析,需要完成設計的對象有:場景、關卡設計、角色和技能、AI 和障礙物、用戶界面等。
將場景導入引擎中后,需要進行適當的配置,為接下來的開發設計打下基礎。由于游戲設計的關卡有很多,而且后續可能還會增加關卡,所以場景要有獨特的風格,最好不要有過多的重復元素。場景導入后,需要將人物模型放入場景中來調整場景的大小,避免人物和場景中的物體等比例失常給玩家的游戲體驗帶來負面影響。場景中的光照、陰影、樹木草地、建筑地形等都需要進行調整,場景美觀是表現層的重要因素。此外,把場景的規模控制在一定范圍內也非常重要,場景太大可能會導致玩家通關的時間變長,為后續關卡設計帶來負面影響。(圖1)

圖1 部分場景展示
關卡設計主要分為兩部分,第一部分是對一個關卡中的游戲元素進行設計,需要設計的內容有關卡的類型、玩家起點、記錄點、終點、AI 和障礙物的刷新位置、AI 刷新的時間、關卡限定時間的長短等,總體來說,設計的原則是保證游戲性的同時控制游戲難度和時間適中,避免各個關卡重復過多但通關時間差距不要太大。這部分屬于策劃內容,文章中不再贅述。
第二部分是對關卡設計的具體實現,這一部分我們基本使用藍圖進行制作,主要使用了Gameplay 框架中的Gamemode 藍圖以及部分自定義藍圖類,如玩家的起點、記錄點、終點使用了相同的藍圖父類,父類實現了觸碰時記錄玩家位置Location 的功能,之后在由不同的子類藍圖繼承并添加不同的功能,比如終點需要觸發UI 界面的切換。(圖2)

圖2 記錄點藍圖類及其在場景中的實例
玩家角色(Character)是整個游戲中最重要的部分之一,每個角色的設計都包含了許多內容,但大體都是由同一個父類藍圖繼承而來。父類藍圖要實現的功能有基礎的操作動作邏輯、角色模型替換邏輯(每個角色的模型都不同,并且在不同類型關卡中模型也可能不同)、生命值和體力等數值邏輯、死亡和傷害邏輯等。(圖3)

圖3 角色父類藍圖“BP_Character”
動畫藍圖是角色的重要基礎,角色的動作基本是由動畫藍圖控制播放,動畫藍圖會逐幀檢測玩家的狀態,并通過狀態機來檢測需要播放的動畫,一般來說,玩家的移動(Walk、Run)、跳躍(Jump)、閑置(Idle)動畫都是由狀態機設置好播放的,攻擊和釋放技能的動畫則大多單獨制作動畫蒙太奇并在動畫藍圖中混合插入插槽由邏輯觸發播放。(圖4)

圖4 部分動畫藍圖邏輯
每個角色的藍圖自父類繼承而來后,還需要添加其他功能,例如二段跳、加速、攻擊、釋放技能等,動作功能需要制作動畫蒙太奇與邏輯匹配播放,攻擊和技能還需要設計制作相應的粒子特效等,增強表現力。由于同一人物在不同類型的關卡中模型技能等都可能有所不同,我們的解決方案是一個任務設計多個角色藍圖,一般有跑酷和戰斗兩個角色藍圖。
AI 怪物的設計和實現也是比較重要的部分,我們的設想中,戰斗關卡中的AI 分為三種類型,近戰AI,遠程AI 和BOSS,近戰AI和遠程AI 在沒有進入戰斗的時候會執行巡邏的邏輯,在地圖中規定的范圍內尋找玩家角色,BOSS 則在固定位置刷新并原地駐守,當玩家角色進入視野內時,近戰AI 和BOSS追擊玩家角色,遠程AI 則會在遠處攻擊玩家,并和玩家角色保持距離,在玩家角色靠近時試圖躲避玩家并反擊,每種類型的AI 又可以具體分為幾種類型,比如遠程AI 有彈道慢但是具備大范圍(AOE)的攻擊類型的法師AI,和單體攻擊但是彈道快的弓箭手AI。
為了實現上述設計,我們使用了UE4 引擎較為成熟的行為樹體系。虛幻4AI 行為控制采用事件驅動模式,需由行為樹和黑板(Blackboard)配合使用的,行為樹執行AI 邏輯,黑板通過變量來存儲數據。每個AI 都有自己的控制器(AIController),就像玩家通過PlayerController 控制Character 一樣,AI 通過AIController 來控制Character。雖然AIController 對相應的pawn 進行控制,但是AI 的主要邏輯是在行為樹中實現的,行為樹利用節點來控制邏輯并調用相應的功能。行為樹的節點分為Root、Composite、Task、Decorator、Service 五種,Root 是根節點,是一個行為樹的起點,一般來說,一個行為樹有且只有一個Root 節點,但其本身并沒有功能。Task 節點是任務節點,是行為樹的基礎節點。Task 節點就像一個個封裝好的函數,可以通過藍圖或代碼進行自定義,也有引擎封裝好的節點,一般一個Task 對應執行一個簡單AI 行為動作,比如AI 的移動等。Composite 節點對Task 進行簡單的邏輯順序控制,Composite 節點有三種節點分別是Selector、Sequence、Simple Parallel。Selector 是選擇器,它會對子節點進行選擇,當子節點有任一個返回成功時則返回成功,其他情況則返回失敗。Sequence 會按順序執行子節點,直到某一個節點返回失敗或者執行完畢,當有任一子節點返回失敗則返回失敗,順利執行完則返回成功。Simple Parallel 會同時執行兩個任務。Decorator 節點是裝飾器,可以附加在其他節點上,為附加的節點提供執行條件。
障礙物是跑酷關卡的核心內容之一。障礙物會在玩家角色與其碰撞時調用功能對玩家進行懲罰性的互動,一般來說,這種互動有減少生命值或者將玩家傳送到規定的地點等類型。為了實現障礙物的功能,我們需要為障礙物的藍圖類中添加一個碰撞盒子,當碰撞盒子與其他碰撞體重疊時,會用邏輯判斷這一碰撞體是否與玩家有關,從而判斷是不是玩家碰撞到了障礙物,并相應的執行后面的邏輯。(圖5)

圖5 障礙物的碰撞盒子
測試是軟件開發中必不可少的一個環節,我們在Windows10 系統上進行了多次測試,針對用戶界面、關卡、玩家角色、AI 障礙物、參數計算等多個方面進行調試和檢查。總體來說,游戲沒有明顯的bug,用戶界面交互效果正常,UI 之間的跳轉也沒有問題;關卡跳轉邏輯正常,場景的光照等設置正常;玩家操控流暢,動畫播放正常,AI 和障礙物邏輯功能基本實現,攻擊和技能的粒子特效和子彈邏輯功能都沒有問題;游戲中參數計算正確,沒有數值越界的不合理現象。
經過對相應功能模塊和界面的反復測試和調試,實現的這款基于PC 端的第三人稱闖關游戲,能夠滿足一般玩家的日常游戲體驗。軟件安裝簡單,運行流暢,界面的跳轉和輸入響應迅速,動畫播放正常,游戲參數顯示正確。游戲中還有一些地方值得優化:游戲目前還是一款單機游戲,后續可以添加聯機內容,增加游戲競技性和趣味性,可以擴大受眾,提高玩家的黏性;相關場景設計過于單調,后續可以適當添加更多的關卡并對關卡場景進行優化;游戲角色較少,后續還需設計開發更多角色。