魏菊霞 黃濤



摘要:SLG類游戲(SLG:策略游戲)一直不是一個特別火爆的類型,但這種游戲類型總是精品不斷,而且時不時地就會出現。該文結合“捍衛海洋”元素,運用Unity3D游戲引擎,設計了一款寓教于樂的策略類游戲。該文重點介紹了人機交互模塊、敵人智能AI和游戲場景模型的創建等,旨在拋磚引玉,為策略類游戲的設計提出一種新的解決方案。
關鍵詞:SLG;策略;Unity3D;游戲;AI
中圖分類號:TP37? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)17-0079-03
開放科學(資源服務)標識碼(OSID):
1 研究背景與意義
隨著世界電子游戲市場需求的極速提升,現有不勝枚舉的電子游戲開發引擎騰空出世,由舊時年代的Wolfenstein3D、Doom到現時的Unity3D、Unreal,電子游戲開發引擎的急速迭代使游戲開發者及研究人員的開發設計便利性與專業性也在逐步增加。相較于過去還需OpenGL、Flash及Photoshop等多方位制作軟件相結合的復雜開發方式來說,如今的商業化引擎如Unity3D將原本多方位的組件功能相結合,讓電子游戲開發者得以專注于所開發的游戲自身[1]。并且在Unity3D游戲開發引擎中獨有的Asset Store——開發者商城擁有大量的游戲制作輔助插件,這讓原本復雜煩瑣的電子游戲開發制作變得簡單快捷并且更具有專業性。
國內外的電子游戲開發領域對策略類游戲相關的研究基本可分為如下三個大方向:第一人稱3D能力型、上帝視角2.5D以及2D普通型。第一人稱3D是現代電子游戲的主流形式,以超強的代入感吸引游戲玩家,擁有較高的戰斗美學,但盡管代入感十足,三維眩暈及方向無法準確判定的劣勢也因此無從解決。而上帝視角2.5D以及2D普通型游戲都太過于中庸,雖不會讓游戲玩家產生三維眩暈的壞象,但缺乏真實代入感、爽快感,使它們得不到大多數游戲愛好者的青睞[2]。本文結合當今所有大方向趨勢,取其精華去其糟粕,力求建立一個新型的游戲模式。
2 SLG類游戲的需求分析和總體結構設計
2.1 需求分析
SLG類游戲的(Simulation Game:簡稱SLG,策略類游戲)核心是策略,這項功能需要玩家運用一定的策略與電腦或其他玩家進行較量或共同合作以達到某一目標,大大地增添了游戲的可玩性,其形式越多樣,游戲的可玩性也就越高,玩家的游戲體驗感也就相應會得到提升,這便是需要在游戲中玩家的能力以及游戲通關的方式需要盡量做到多樣化,且敵人的智能AI模式也需要做到搜尋準確又難度適中,這樣才能達到游戲所預期的效果。
在游戲中,如果長時間游玩,則會增加玩家對游戲形式產生厭惡感,可適當性地加入一些解密交互元素,提升游戲的多樣性、可玩性。同時,解密交互與游戲策略相輔相成的路線也會讓廣大玩家在解決了一項事件之后,得到一定的自豪感及愉悅感。
本文探討研發的游戲包含如下特點。
1)人機交互:玩家可通過鼠標、鍵盤等外部輸入設備對游戲內的UI、主角及事件等發生交互,創造本游戲的可玩性,并且需要其交互方式簡單方便,交互反饋突出明顯,提高玩家對游戲的游玩樂趣。
2)能力多樣化:由玩家所控制的主角所持有的能力必須多樣,以此達到玩家通關游戲的方式也同時多樣化的目的,這能夠提升玩家對游戲的體驗效果。
3)場景標志化:場景必須做到真實、絢麗,場景內的動植物必須做到富有動感,活潑可愛。以此提高玩家的游戲體驗感。
4)玩法多元化:在游戲過程中適當加入解密交互的元素,提升游戲的多樣性及可玩性。
2.2 總體結構設計
考慮到各式玩家與各類游戲接觸的時間不盡相同,為了使玩家們都能夠對本文游戲快速上手,游戲的大體結構不能太過于復雜。結合Unity3D游戲開發引擎,各個模塊的實現方法分析如下。
1)人機交互模塊:開始界面、設置界面以及能力選擇界面這三大界面式開發將使用Unity3D游戲開發引擎中自帶的UGUI設計模塊與C#腳本編輯模塊聯合進行研發。使用C#腳本編輯模塊監聽玩家的鍵盤輸入事件,并且使用對應的UI變化來告知、提醒玩家自己所輸入的鍵盤事件將對游戲產生怎樣的變化,以此來選擇對應游戲界面。而在游戲交互與交互反饋方面,將使用C#腳本編輯模塊監聽玩家的鍵盤、鼠標等外置輸入設備的輸入,然后在游戲畫面中給予相對應的Aminator動畫反饋、Transform變化反饋及isActive、isEnabled的更替反饋等。
2)游戲場景模塊:在場景搭建過程中,運用Unity3D電子游戲開發引擎Plane平面組件加上特殊的Shader著色器以及對應的材質球,使創建的Plane平面組件產生波躁、滾動等海面獨有效果以制成。而在海洋內部場景中,將為作品Camera編寫、添加一個獨特的海底Shader著色器,增加海底霧、動態模糊、水波躁動等一系列Camera視覺效果,使其變得真實而又不失相應的美感。
3)敵人AI模塊:關于對敵人智能巡邏模塊的制作,將使用Tag標記檢測觸發的做法來監測事件是否發生,在事件發生后將改變敵人AI的轉向及其移動速度,以此來完成智能巡邏的效果。而在自動搜索模塊方面,將使用錐型射線來效仿敵人的眼球視角,當射線直接觸碰到玩家所操縱的主角時,將根據雙方之間的距離來計算判定敵人發現主角的概率,當概率為100%時視為發現,敵人將會進行瞄準攻擊。而瞄準攻擊這一塊將先采用LookAt()函數方法進行瞄準,后使用Instantiate()方法來生成武器進行攻擊。最后在銷毀方面則是先將其用于顯示敵人形狀樣貌的MeshRenderer組件取消使用,再使用Instantiate()方法生成爆炸效果,最后使用Destroy()方法來將其銷毀。
3 游戲設計與實現
3.1 人機交互
本游戲交互形式與一般SLG游戲的交互形式大同小異,以鍵盤、鼠標為輸入裝置來對游戲事件進行觸發及改變[3]。而與一般SLG游戲有差異的一點,便是本游戲的游戲場景大多處于海底,與陸地相比較,主角在海洋之中的移動自由度會相應高出許多,所以傳統電子游戲WSAD控制前后左右的移動方式必然將不適合本游戲。為了解決此項問題,本文研討出一種專門用于海底策略游戲的操縱方式來適配本游戲。以下為本游戲的按鍵方式。
主角交互的具體實現如下:
1)主角的旋轉:首先,考慮到邏輯性的緣故,我們需要設置兩個布爾值判斷主角的狀態,第一個布爾值為isMove,用于判斷主角是否正在移動;第二個布爾值為CanMove,用于判斷主角是否能夠移動。使用if語句進行判斷,當isMove字段與CanMove字段都為true時,主角即可旋轉。使用if語句以及Input.GetKey()函數方法檢測玩家是否按下了鍵盤上所對應的按鍵,當確定玩家在滿足了所有條件的狀態下按下了旋轉的按鍵時,將調用transform.Rotate()函數方法對主角進行相應軸方向的旋轉,以此來達到旋轉的目的。
2)主角的移動:主角的移動也需要一個布爾值CanMove來判斷其是否能夠移動,并且還需定義一個名為Speed的浮點型字段并將其初始值設置為0f,用于控制主角移動的速度。在Update中使用if語句加CanMove字段判斷主角是否可以移動,當CanMove字段為true時,調用transform.Translate()結合時間差值與速度的乘積——Time.deltaTime * Speed來達成主角移動的效果,由此可得,主角移動的速度將由Speed的大小控制,這時我們便可以結合if語句來改變Speed的大小實現慣性、緩動以及摩擦力的效果。用這種方法實現的主角移動既有較高的可控性,不受外力的影響,又能實現慣性、緩動以及摩擦力,為主角的移動增添了較為真實的物理效果。
3)主角能力使用、選擇:在此之前,需先建立一個布爾值isGot來判斷主角是否已經獲得了該能力,再使用if語句配合isGot以及Input.GetMouseButton(2)來判斷主角是否打開了能力選擇界面,如果符合事件觸發條件,則使用SetActive()函數方法打開能力選擇的GUI,再通過修改Time.timeScale的參數值來對本游戲的FixedUpdate的運行時間做修改,以此達到暫停游戲的操作,并且由于字段Time.timeScale只是對FixedUpdate的運行時間做出修改,而不對Update進行任何操作,固然Update中不受Time.deltaTime控制的方法也同樣不受影響,所以方案依舊可行,若GUI動畫也希望不受其影響的話,只需將其Animator的UpdateMode屬性設置為UnscaledTime即可。
交互的偽代碼如下:
3.2 游戲場景
根據需求分析,本文場景中的建模模型類型將以Low Poly低面建模風格為主基調進行制作。但由于國內Low Poly風格試建模尚未普及,這導致其素材非常難以在網絡中尋找到,必要時需要自行制作,Low Poly風格模型的制作方案有許多,這里選擇了一種簡單方便的做法——減面法。
減面法:先將一個普通模型轉換為可編輯多邊形,將其平滑屬性去除后即可使用減面變形器對其進行減面操作,最終變成Low Poly低面模型。
使用Low Poly低面建模風格能夠及其有效地減少模型與材質球對游戲性能的影響,同時也能保證畫面的美觀性,一舉兩得[4]。
動植物動態效果將舍棄平常的骨骼動畫制作方式,選用另外一種全新的方式——著色器靜態網格位置修正來進行研發。要完成魚兒游動的循環動畫,就需要用到魚類的材質中的頂點動畫來制成,使用頂點動畫能夠讓魚兒做出左右搖擺、偏航旋轉以及沿著脊椎水平旋轉等效果,將這些頂點動畫效果進行合成,既能得到一只不需要用到骨骼動畫就能夠靈活游動的小魚了。場景效果如圖1。
3.3 敵人AI
本文的游戲類型為“策略”,所以固然有巡邏的對象存在于游戲場景中,而這些對象在游戲中則被稱之為敵人,面對這種非人為操作、控制但帶有一定智能性的物體,必須為其研發一套完整的AI邏輯才能滿足其在本作中的功能需求[5],如圖2為控制敵人AI的智能巡邏框架圖。
一款策略類的游戲,敵人AI除了會巡邏尋路之外,自動搜尋獵物也是一必不可少的功能要素,而自動搜尋,在Unity3D游戲開發引擎之中運用的較多的是射線Ray系統了,在敵人的眼睛前方布置一條指向前方并且長度為搜尋長度的射線,由此來實現自動搜尋的效果。本游戲采用就是射線旋轉移動的方式增加了敵人的搜尋范圍,即:使用多射線鋪成一個大小自定的平面錐型,并且使其能夠上下進行旋轉移動,形成一個偽錐型。此方式能極好地解決多射線形式的性能消耗過大的問題,并且搜尋范圍也有得到相應的保證。
4 總結與展望
游戲設計了一套全新的交互按鍵方式,以及多種明確、美觀的交互反饋形式。通過對硬件輸入的檢測,在熒屏上輸出相對應的交互反饋,提高了游戲的整體可玩性。游戲場景中,海洋平面則使用了UV平移制作了海洋波浪運動效果,同時也使用了攝像機Bloom輝光特效為海面添加了晶瑩剔透的閃光。敵人的重要AI部分提出了一種不需借助Navigation自動尋路控件即可智能巡邏的檢測觸發器方法,使用了多射線旋轉移動的方法模擬錐型射線的制作。
策略游戲不僅滿足了玩家、功能以及性能上的重要需求,且符合游戲在游玩時所給予玩家的流暢體驗,策略與護衛海洋相結合,寓教于樂,游戲方式更容易讓人接受。
參考文獻:
[1] 劉桂元,曾志遠,楊書新.基于Unity3d引擎的教育類游戲設計與實現[J].軟件導刊,2017(1):50-53.
[2] 郗銳.淺談電子游戲運營模式與機制設計[J].電腦知識與技術,2017(3):220-221.
[3] 劉小慧,馬馴.現代電子游戲中的角色動作設計與研究[J].大眾標準化,2021(1):131-132.
[4] 晉錚,章立.游戲設計中的極簡主義風格研究[J].包裝工程,2016(14):161-164.
[5] 沈宇,韓金朋,李靈犀,等.游戲智能中的AI——從多角色博弈到平行博弈[J].智能科學與技術學報,2020,2(3):205-213.
【通聯編輯:謝媛媛】