崔景鑫 吳 昊 楊明梅 吳嘯宇 薛 韡*
(防災(zāi)科技學(xué)院信息工程學(xué)院,河北 三河 065201)
隨著計算機產(chǎn)業(yè)的興起,計算機逐漸走進大眾家庭,不可避免的,電子游戲也逐漸走入了我們的生活,電子游戲有利有弊,它可以培養(yǎng)解決問題的能力,豐富我們的精神文化生活,提高視覺空間技能和開發(fā)想象力,并且現(xiàn)如今電子游戲已經(jīng)是年輕人社交內(nèi)容中重要的一環(huán),為青少年的社交提供了很大的便利。雖然電子游戲有使人沉迷地風(fēng)險,但無論如何,電子游戲都已經(jīng)在文化產(chǎn)業(yè)和日常生活中扮演了重要的角色,并且可以預(yù)見的是,電子游戲的前景無比廣大,未來將會迅速發(fā)展,也許有一天,電子游戲真的可以成為人們的第二世界。我們的闖關(guān)游戲關(guān)卡設(shè)計主要有兩種,射擊關(guān)卡和跑酷關(guān)卡,射擊關(guān)卡是戰(zhàn)斗關(guān)卡,玩家操縱角色與AI 戰(zhàn)斗,消滅AI 怪物取得勝利,跑酷關(guān)卡中玩家需要操縱角色躲避障礙在規(guī)定時間內(nèi)到達終點。我們使用的主要開發(fā)工具是虛幻引擎,EPIC旗下的UE(Unreal Engine)系列引擎是目前世界上頂尖的游戲設(shè)計引擎,是整個游戲界運用范圍最廣,整體運用程度最高,次世代畫面標準最高的一款游戲引擎,占有全球商用游戲引擎80%的市場份額。虛幻引擎是全球最開放最先進的實時3D創(chuàng)作平臺。經(jīng)過持續(xù)的改進,它已經(jīng)不僅僅是一款殿堂級的游戲引擎,還能為各行各業(yè)的專業(yè)人生帶去無限的創(chuàng)作自由和空前的掌控力。UE 系列最新作UE5 更是一公布就火爆全球, 其中兩大核心技術(shù)紛紛迎來了很多行業(yè)工作者的研究與探討,被稱為“次世代引擎”。我們使用的UE4 引擎可以完美對接UE5 引擎,這為我們將來的持續(xù)開發(fā)帶來便利。本文立足于當前新興的單機聯(lián)機游戲市場,以藍圖(Blueprint)編程為主體,說明游戲在PC端需要實現(xiàn)的邏輯。在充分展示并運用UE4 完備的功能特性的前提下,設(shè)計游戲的UI 界面、關(guān)卡規(guī)則邏輯、AI 和障礙物邏輯及角色動畫播放邏輯,從而實現(xiàn)一個較為完整的游戲軟件。
游戲需要實現(xiàn)的功能大體可分為兩大部分,數(shù)據(jù)邏輯層和表現(xiàn)層。數(shù)據(jù)邏輯層是游戲的基礎(chǔ)部分,包括關(guān)卡邏輯、玩家控制邏輯、AI 和障礙物邏輯、UI 交互邏輯等。數(shù)據(jù)邏輯層需要通過藍圖逐個實現(xiàn)功能模塊,再通過模塊之間的調(diào)用、藍圖之間的通信從小到大構(gòu)建完整的游戲框架并實現(xiàn)。數(shù)據(jù)邏輯層主要在虛幻引擎提供的Gameplay 框架中Gamemode、Playercontroller、Pawn、Acter 等藍圖中實現(xiàn),部分功能還需要在自定義的藍圖類中實現(xiàn)。表現(xiàn)層在很多情況下都決定了一款游戲的上限,是玩家能夠最直觀分辨游戲好壞的評價標準。表現(xiàn)層包括人物模型、場景建模、UI 界面、光影聲音、游戲劇情等。人物模型和場景建模需要在建模軟件中制作并且使用規(guī)定的格式導(dǎo)入UE4 引擎中,我們使用的建模軟件主要是3DMAX 和Maya,3DMAX 是Discreet 公司開發(fā)的基于PC 系統(tǒng)的三維動畫渲染和制作軟件,Maya 件是Autodesk 旗下的著名三維建模和動畫軟件,兩者都是常見的實用建模軟件。將場景和模型導(dǎo)入引擎后,需要使用地形工具和草地工具對場景進行調(diào)整,為場景調(diào)整光影效果,增強表現(xiàn)力。合適美觀的UI 也是表現(xiàn)層的重要部分,UI 主要通過Photoshop 軟件制作。表現(xiàn)層主要由HUD、UserWidget和地形工具等引擎功能實現(xiàn)。
從完整的游戲流程來看,需要完成的功能大致有:進入游戲生成UI 界面,與UI 交互實現(xiàn)開始游戲、設(shè)置等功能,選擇關(guān)卡(手動選擇和隨機選擇),讀取關(guān)卡邏輯和加載生成關(guān)卡,例如勝利條件、AI 和障礙物的刷新位置、數(shù)量等,生成玩家人物模型并且可以控制(玩家相關(guān)內(nèi)容是項目中重要的部分,由許多部分組成,例如模型、骨骼、動畫邏輯、攻擊和技能邏輯、生命值和死亡邏輯等,主要在Gameplay 框架中的PlayerController 和Character實現(xiàn)),生成AI 和障礙物,AI 可以攻擊玩家,障礙物通過碰撞觸發(fā),玩家勝利或者失敗后有相應(yīng)的UI 界面顯示和邏輯處理。
本游戲軟件的設(shè)計由場景關(guān)卡、游戲模式、玩家角色、用戶界面和AI 障礙物五部分組成。針對上述內(nèi)容進行具體分析,需要完成設(shè)計的對象有:場景、關(guān)卡設(shè)計、角色和技能、AI 和障礙物、用戶界面等。
將場景導(dǎo)入引擎中后,需要進行適當?shù)呐渲?,為接下來的開發(fā)設(shè)計打下基礎(chǔ)。由于游戲設(shè)計的關(guān)卡有很多,而且后續(xù)可能還會增加關(guān)卡,所以場景要有獨特的風(fēng)格,最好不要有過多的重復(fù)元素。場景導(dǎo)入后,需要將人物模型放入場景中來調(diào)整場景的大小,避免人物和場景中的物體等比例失常給玩家的游戲體驗帶來負面影響。場景中的光照、陰影、樹木草地、建筑地形等都需要進行調(diào)整,場景美觀是表現(xiàn)層的重要因素。此外,把場景的規(guī)模控制在一定范圍內(nèi)也非常重要,場景太大可能會導(dǎo)致玩家通關(guān)的時間變長,為后續(xù)關(guān)卡設(shè)計帶來負面影響。(圖1)
圖1 部分場景展示
關(guān)卡設(shè)計主要分為兩部分,第一部分是對一個關(guān)卡中的游戲元素進行設(shè)計,需要設(shè)計的內(nèi)容有關(guān)卡的類型、玩家起點、記錄點、終點、AI 和障礙物的刷新位置、AI 刷新的時間、關(guān)卡限定時間的長短等,總體來說,設(shè)計的原則是保證游戲性的同時控制游戲難度和時間適中,避免各個關(guān)卡重復(fù)過多但通關(guān)時間差距不要太大。這部分屬于策劃內(nèi)容,文章中不再贅述。
第二部分是對關(guān)卡設(shè)計的具體實現(xiàn),這一部分我們基本使用藍圖進行制作,主要使用了Gameplay 框架中的Gamemode 藍圖以及部分自定義藍圖類,如玩家的起點、記錄點、終點使用了相同的藍圖父類,父類實現(xiàn)了觸碰時記錄玩家位置Location 的功能,之后在由不同的子類藍圖繼承并添加不同的功能,比如終點需要觸發(fā)UI 界面的切換。(圖2)
圖2 記錄點藍圖類及其在場景中的實例
玩家角色(Character)是整個游戲中最重要的部分之一,每個角色的設(shè)計都包含了許多內(nèi)容,但大體都是由同一個父類藍圖繼承而來。父類藍圖要實現(xiàn)的功能有基礎(chǔ)的操作動作邏輯、角色模型替換邏輯(每個角色的模型都不同,并且在不同類型關(guān)卡中模型也可能不同)、生命值和體力等數(shù)值邏輯、死亡和傷害邏輯等。(圖3)
圖3 角色父類藍圖“BP_Character”
動畫藍圖是角色的重要基礎(chǔ),角色的動作基本是由動畫藍圖控制播放,動畫藍圖會逐幀檢測玩家的狀態(tài),并通過狀態(tài)機來檢測需要播放的動畫,一般來說,玩家的移動(Walk、Run)、跳躍(Jump)、閑置(Idle)動畫都是由狀態(tài)機設(shè)置好播放的,攻擊和釋放技能的動畫則大多單獨制作動畫蒙太奇并在動畫藍圖中混合插入插槽由邏輯觸發(fā)播放。(圖4)
圖4 部分動畫藍圖邏輯
每個角色的藍圖自父類繼承而來后,還需要添加其他功能,例如二段跳、加速、攻擊、釋放技能等,動作功能需要制作動畫蒙太奇與邏輯匹配播放,攻擊和技能還需要設(shè)計制作相應(yīng)的粒子特效等,增強表現(xiàn)力。由于同一人物在不同類型的關(guān)卡中模型技能等都可能有所不同,我們的解決方案是一個任務(wù)設(shè)計多個角色藍圖,一般有跑酷和戰(zhàn)斗兩個角色藍圖。
AI 怪物的設(shè)計和實現(xiàn)也是比較重要的部分,我們的設(shè)想中,戰(zhàn)斗關(guān)卡中的AI 分為三種類型,近戰(zhàn)AI,遠程AI 和BOSS,近戰(zhàn)AI和遠程AI 在沒有進入戰(zhàn)斗的時候會執(zhí)行巡邏的邏輯,在地圖中規(guī)定的范圍內(nèi)尋找玩家角色,BOSS 則在固定位置刷新并原地駐守,當玩家角色進入視野內(nèi)時,近戰(zhàn)AI 和BOSS追擊玩家角色,遠程AI 則會在遠處攻擊玩家,并和玩家角色保持距離,在玩家角色靠近時試圖躲避玩家并反擊,每種類型的AI 又可以具體分為幾種類型,比如遠程AI 有彈道慢但是具備大范圍(AOE)的攻擊類型的法師AI,和單體攻擊但是彈道快的弓箭手AI。
為了實現(xiàn)上述設(shè)計,我們使用了UE4 引擎較為成熟的行為樹體系。虛幻4AI 行為控制采用事件驅(qū)動模式,需由行為樹和黑板(Blackboard)配合使用的,行為樹執(zhí)行AI 邏輯,黑板通過變量來存儲數(shù)據(jù)。每個AI 都有自己的控制器(AIController),就像玩家通過PlayerController 控制Character 一樣,AI 通過AIController 來控制Character。雖然AIController 對相應(yīng)的pawn 進行控制,但是AI 的主要邏輯是在行為樹中實現(xiàn)的,行為樹利用節(jié)點來控制邏輯并調(diào)用相應(yīng)的功能。行為樹的節(jié)點分為Root、Composite、Task、Decorator、Service 五種,Root 是根節(jié)點,是一個行為樹的起點,一般來說,一個行為樹有且只有一個Root 節(jié)點,但其本身并沒有功能。Task 節(jié)點是任務(wù)節(jié)點,是行為樹的基礎(chǔ)節(jié)點。Task 節(jié)點就像一個個封裝好的函數(shù),可以通過藍圖或代碼進行自定義,也有引擎封裝好的節(jié)點,一般一個Task 對應(yīng)執(zhí)行一個簡單AI 行為動作,比如AI 的移動等。Composite 節(jié)點對Task 進行簡單的邏輯順序控制,Composite 節(jié)點有三種節(jié)點分別是Selector、Sequence、Simple Parallel。Selector 是選擇器,它會對子節(jié)點進行選擇,當子節(jié)點有任一個返回成功時則返回成功,其他情況則返回失敗。Sequence 會按順序執(zhí)行子節(jié)點,直到某一個節(jié)點返回失敗或者執(zhí)行完畢,當有任一子節(jié)點返回失敗則返回失敗,順利執(zhí)行完則返回成功。Simple Parallel 會同時執(zhí)行兩個任務(wù)。Decorator 節(jié)點是裝飾器,可以附加在其他節(jié)點上,為附加的節(jié)點提供執(zhí)行條件。
障礙物是跑酷關(guān)卡的核心內(nèi)容之一。障礙物會在玩家角色與其碰撞時調(diào)用功能對玩家進行懲罰性的互動,一般來說,這種互動有減少生命值或者將玩家傳送到規(guī)定的地點等類型。為了實現(xiàn)障礙物的功能,我們需要為障礙物的藍圖類中添加一個碰撞盒子,當碰撞盒子與其他碰撞體重疊時,會用邏輯判斷這一碰撞體是否與玩家有關(guān),從而判斷是不是玩家碰撞到了障礙物,并相應(yīng)的執(zhí)行后面的邏輯。(圖5)
圖5 障礙物的碰撞盒子
測試是軟件開發(fā)中必不可少的一個環(huán)節(jié),我們在Windows10 系統(tǒng)上進行了多次測試,針對用戶界面、關(guān)卡、玩家角色、AI 障礙物、參數(shù)計算等多個方面進行調(diào)試和檢查??傮w來說,游戲沒有明顯的bug,用戶界面交互效果正常,UI 之間的跳轉(zhuǎn)也沒有問題;關(guān)卡跳轉(zhuǎn)邏輯正常,場景的光照等設(shè)置正常;玩家操控流暢,動畫播放正常,AI 和障礙物邏輯功能基本實現(xiàn),攻擊和技能的粒子特效和子彈邏輯功能都沒有問題;游戲中參數(shù)計算正確,沒有數(shù)值越界的不合理現(xiàn)象。
經(jīng)過對相應(yīng)功能模塊和界面的反復(fù)測試和調(diào)試,實現(xiàn)的這款基于PC 端的第三人稱闖關(guān)游戲,能夠滿足一般玩家的日常游戲體驗。軟件安裝簡單,運行流暢,界面的跳轉(zhuǎn)和輸入響應(yīng)迅速,動畫播放正常,游戲參數(shù)顯示正確。游戲中還有一些地方值得優(yōu)化:游戲目前還是一款單機游戲,后續(xù)可以添加聯(lián)機內(nèi)容,增加游戲競技性和趣味性,可以擴大受眾,提高玩家的黏性;相關(guān)場景設(shè)計過于單調(diào),后續(xù)可以適當添加更多的關(guān)卡并對關(guān)卡場景進行優(yōu)化;游戲角色較少,后續(xù)還需設(shè)計開發(fā)更多角色。