中圖分類號:TP311.5;TP317.4 文獻(xiàn)標(biāo)識碼:A 文章編號:2096-4706(2025)08-0089-04
Abstract:Role-Playing Game(RPG) is favored by players because of its rich storyline,in-depth character shaping and highly fre gameplay.The“Save the Home”game uses the Unity engine for game design and development.Through the overall designof thegame,theproductionoftegame modelandtheconstructionofthescene,aswellas thedevelopmentof thegame's protagonist module,enemy module,combat module,UImodule,keymoduleandother modules,thepaperrealizes thefunctionsofcharactermovement,Acharacterpatrolavigationadattack,transmisionportalresponsesoundadlight response, camera scanning and so on. The game offers excellent fun, interactivity and diversity.
Keywords: game design; modeling; interactive function
0 引言
隨著信息技術(shù)的快速進(jìn)步和游戲產(chǎn)業(yè)的蓬勃發(fā)展,電子游戲已經(jīng)成為人們娛樂和消遣的重要方式之一[。在這個多元化的游戲市場中,角色扮演游戲(RPG)因其豐富的故事情節(jié)、深入的角色塑造和高度自由的游戲玩法而備受玩家青睞。基于此,本文設(shè)計(jì)與開發(fā)了《拯救家園》這款RPG類型的游戲。使用Unity引擎和C#編程語言進(jìn)行游戲開發(fā),游戲融合了戰(zhàn)斗、解謎和迷宮三種玩法,給玩家?guī)砹素S富多樣的游戲體驗(yàn)。戰(zhàn)斗模式讓玩家能夠挑戰(zhàn)不同的敵人,體驗(yàn)緊張刺激的戰(zhàn)斗樂趣;解謎需要玩家開動腦筋,尋找路線解決關(guān)卡給出的難題;迷宮模式則提供了一個探索未知區(qū)域的機(jī)會。
1 游戲設(shè)計(jì)
1.1 游戲設(shè)計(jì)思路
作為一款RPG類型游戲,在保證游戲本身運(yùn)行的穩(wěn)健性之外,要想讓玩家喜歡上這款游戲并對其整體提出高評價,做好游戲各方面的頂層設(shè)計(jì)是相當(dāng)必要的[2]。在《拯救家園》游戲中,主要以對話方式推動游戲主線,玩法上創(chuàng)新融合了三種不同的元素,并將它們?nèi)谌胗螒虻娜P(guān)中。在第一關(guān)的玩法設(shè)計(jì)上采用了RPG游戲常設(shè)的戰(zhàn)斗內(nèi)容,并融入了“塔防”元素,玩家通過操縱游戲角色釋放技能與敵人進(jìn)行交戰(zhàn),同時保證保護(hù)目標(biāo)不被摧毀。而第二關(guān)的玩法設(shè)計(jì)簡單融入了“解謎”元素,玩家需要在空曠復(fù)雜的地形中尋找黯淡的紅水晶并激活點(diǎn)亮,達(dá)到應(yīng)點(diǎn)亮的數(shù)量要求后則算本關(guān)完成。在第三關(guān)中,則采用了“迷宮”元素,玩家需要在錯綜復(fù)雜的迷宮中找尋通向終點(diǎn)的道路。
要增加游戲?qū)ν婕业奈?,一個引人入勝的劇情是不可或缺的。好的游戲劇情可以使玩家有較強(qiáng)的沉浸感,使之與角色達(dá)到共情的狀態(tài)[3]。基于此,本游戲設(shè)計(jì)了以下劇情:豌豆小鎮(zhèn)的魔法泉水干枯了,豌豆小鎮(zhèn)的居民想了很多辦法都沒找回魔法水源。這時出現(xiàn)了一位超級英雄,她叫愛麗絲。她要通過傳送門去闖過三個關(guān)卡并拿三把金鑰匙,重新激活魔法泉水,豌豆小鎮(zhèn)尋回水源來拯救家園。
1.2 游戲總體框架設(shè)計(jì)
本游戲的功能模塊包含主角模塊、敵人模塊、攝
像機(jī)模塊、加載模塊、戰(zhàn)斗模塊、對話模塊、UI模塊、關(guān)卡管理模塊、音樂模塊、鑰匙模塊、存儲模塊。游戲的總體框架設(shè)計(jì)圖如圖1所示。
在整個游戲系統(tǒng)中,主要圍繞主角進(jìn)行設(shè)計(jì),場景中的模塊也有著各自的功能。
主角模塊:通過獲取鍵盤輸入來操縱主角移動、角色人物動畫播放以及技能釋放粒子效果播放,同時設(shè)置相關(guān)個人屬性數(shù)值。
敵人模塊:通過Unity導(dǎo)航系統(tǒng)完成尋路效果,遭遇主角時自動發(fā)起攻擊,設(shè)置相關(guān)角色動畫以及相關(guān)數(shù)值。
戰(zhàn)斗模塊:當(dāng)主角與敵人發(fā)生戰(zhàn)斗時,處理相關(guān)數(shù)值的變化,如“血量”“魔法值”等。
UI模塊:制作UI面板顯示相關(guān)數(shù)據(jù)以及完成交互效果。
音樂模塊:自游戲運(yùn)行起持續(xù)播放內(nèi)置音樂。
鑰匙模塊:通過每個關(guān)卡所需的道具,添加相關(guān)游戲邏輯。
關(guān)卡管理模塊:每個關(guān)卡設(shè)置一個本關(guān)管理模塊,添加游戲邏輯腳本,管理本關(guān)各項(xiàng)調(diào)用所需的字段和方法。
攝像機(jī)模塊:以主角為目標(biāo)點(diǎn),在第三人稱視角下持續(xù)跟隨主角。
1.3 交互功能設(shè)計(jì)
在游戲開始界面選擇“開始游戲”一“新游戲”后則正式載入游戲。先與引導(dǎo)NPC進(jìn)行對話,初步了解游戲劇情。結(jié)束對話后顯示相關(guān)UI并進(jìn)入第一關(guān)卡,完成第一關(guān)卡任務(wù)后拿到鑰匙達(dá)成通關(guān)條件,二、三關(guān)卡以此類推。終點(diǎn)處游戲結(jié)算時判斷是否達(dá)成游戲通關(guān)條件,若是則顯示相應(yīng)游玩數(shù)據(jù)并且顯示通關(guān)成功,如圖2所示。
2 游戲功能實(shí)現(xiàn)
游戲系統(tǒng)所用到的游戲引擎是Unity引擎。所用的編程語言為C#,IDE(集成開發(fā)環(huán)境)為VisualStudio2022,采用Cinema4DR20.059來制作白模,后通過Substance3DPainter繪制并導(dǎo)出在Unity環(huán)境下可用的相關(guān)模型貼圖,游戲人物模型使用VRoidStudio軟件制作。
2.1模型制作與場景搭建
道路、山脈、丘陵等此類地形通過該工具下的“RaiseorLowerTerrain”功能,以調(diào)節(jié)筆刷大小、樣式、力度的方式逐步雕刻出場景。樹木、石塊、地皮等則通過“PaintTrees”“PaintDetails”功能進(jìn)行完善。最終將準(zhǔn)備好的模型調(diào)整至合適位置并置入相應(yīng)位置,完成三個主場景的搭建。三個場景圖如圖3所示。
場景中所用建模主要運(yùn)用Cinema4D軟件制作所需的簡易模型,包括“引導(dǎo)NPC星環(huán)”“金鑰匙”“守護(hù)塔”“待激活水晶”等模型。這些模型導(dǎo)出為obj格式后,導(dǎo)入至Substance3DPainter(SP)中制作合適的貼圖,最終導(dǎo)入Unity備用。制作的模型最終效果如圖4所示。
2.2 游戲功能模塊實(shí)現(xiàn)
2.2.1 主角模塊
根據(jù)對主角角色的分析,本次游戲?yàn)閻埯惤z設(shè)置Move、Jump、Attack、Death四種狀態(tài),分別用來控制移動、跳躍、攻擊、死亡[4。為了讓主角“愛麗絲”能在場景中移動起來并應(yīng)用適當(dāng)?shù)膭赢嬈危枰獮橹鹘桥渖瞎趋啦⒄覍ず线m的動畫片段,統(tǒng)一設(shè)置到Animator組件的Controller字段中,并配上驅(qū)動該動畫的腳本。在愛麗絲角色的動畫控制器中,在“BaseLayer”中新建一個“BlendTree”,將靜止、前進(jìn)、快速前進(jìn)、倒退、快速倒退五個動畫片段置入混合樹中,其目的是通過一個參數(shù)快速簡易控制人物行走狀態(tài)變化。在“BaseLayer”中,將其他動畫片段如技能釋放動作、跳躍等加入控制器中,設(shè)置合適的過渡條件及參數(shù),人物行走狀態(tài)過渡至技能釋放動作上的“HasExitTime”全部取消勾選,保證當(dāng)獲取相應(yīng)鍵盤輸入時可以立即響應(yīng)相關(guān)動作。具體設(shè)置如圖5所示。
設(shè)置完動畫內(nèi)容后,添加相對應(yīng)的控制腳本。通過Input類來實(shí)現(xiàn)鍵盤對游戲角色進(jìn)行上下左右的移動控制[5],同時在UpdateO生命周期中判斷是否處于攻擊狀態(tài)下,否則,則執(zhí)行移動方法。關(guān)鍵代碼如下所示:
void Update {if (isAttack = 1) { HillyMove_keyinput;} change_iaAttackO;}
void HillyMove_keyinput( {if (Input.GetKey(KeyCode.W)) {if(Input.GetKey(KeyCode.W) amp;amp; Input.
GetKey(KeyCode.LeftShift)) {anim.SetFloat(\"speed\",Mathf.Lerp(anim.
GetFloat(\"speed\"),1of,i *Time.deltaTime)); transform.Translate(O, 0, moveSpeed*3);} else{anim.SetFloat(\"speed\",Mathf.Lerp(anim.
GetFloat(\"speed\"), 5f,i * Time.deltaTime)); transform.Translate(0, 0, moveSpeed);} } if (Input.GetKey(KeyCode.S)) {if(Input.GetKey(KeyCode.S)amp;amp; Input.
GetKey(KeyCode.LeftShift)) {anim.SetFloat(\"speed\",Mathf.SmoothDamp(anim.
GetFloat(\"speed\"), -1of,ref yVelocity,0.3f)); transform.Translate(0, 0, -moveSpeed*3);}
2.2.2 敵人模塊
第一個關(guān)卡中設(shè)置了三條線路,分別會出現(xiàn)三種不同的敵人。敵人怪物的模型采用素材“MonsterUltimatePackCuteSeries”中的蝙蝠、黃鳥、蜜蜂三個怪物。在第一關(guān)的地圖中,敵人有守衛(wèi)和巡邏兩種狀態(tài)。在守衛(wèi)狀態(tài)下,玩家進(jìn)入敵人的攻擊范圍就會引起追擊,直到離開攻擊范圍;在巡邏狀態(tài)下,玩家經(jīng)過敵人的攻擊范圍會引起敵人注意,導(dǎo)致攻擊,直到離開攻擊范圍。以蝙蝠怪為例介紹敵人模塊,黃鳥、蜜蜂相關(guān)設(shè)置相同。在蝙蝠怪模型上添加Tag標(biāo)簽“monster”,同時添加合適大小的碰撞器,以及設(shè)置怪物攻擊、死亡、移動動畫片段。因敵人索敵需要用到Unity本身的導(dǎo)航系統(tǒng),因此在關(guān)卡一中將地形Bake導(dǎo)航網(wǎng)格,包括蝙蝠怪本身實(shí)例上添加NavMeshAgent組件。然后編寫影響敵人的控制腳本,關(guān)鍵代碼如下所示:
private void Awake( {agent GetComponent(; hilly Σ= Σ GameObject.Find(\"Hilly\"); anim Σ= Σ GetComponent; hilly
ameObject.Find(\"Hilly\") GetComponent void Start( {if(SceneManager.GetActiveScene.name = = \"LevelOneScene\") {if (this.transform.GetChild(O).GetChild(O).name
蝙蝠血量\") {this.GetComponentlt;第一關(guān)蝙蝠怪計(jì)數(shù) gt;0 enabled
true}}
2.2.3 戰(zhàn)斗模塊
該模塊主要涉及在第一關(guān)中主角愛麗絲和敵人發(fā)生交戰(zhàn)時產(chǎn)生的數(shù)據(jù)變化。例如,當(dāng)愛麗絲釋放技能攻擊敵人時,敵人會因受攻擊后判斷受到了什么技能的攻擊,并引用其傷害數(shù)值進(jìn)行血量計(jì)算。當(dāng)敵人血量歸零后將觸發(fā)死亡判定[。設(shè)置各技能傷害,并實(shí)時反饋后端數(shù)據(jù)至UI中。關(guān)鍵代碼如下所示:
private void OnEnable( {hpBar Σ= Σ GameObject.Find(\"血量\").GetCompone nt; mpBar GameObject.Find(\"魔法值\").GetCompon ent(; hpT Σ= Σ GameObject.Find(\"血量百分比 \").GetComponent(;
GameObject.Find(\"魔法值百分比 \").GetComponent(O}
2.2.4 UI模塊
游戲的UI界面可以使玩家更加快速直觀地了解游戲的風(fēng)格及制作水平。游戲的UI界面可以為玩家提供交互的方式,讓玩家能夠與游戲世界進(jìn)行互動,并且可以幫助玩家理解游戲規(guī)則,同時讓開發(fā)人員接收到玩家反饋的信息[。在UI設(shè)置中,主要涉及各種情況下UI的響應(yīng)顯示,包括敵人血量條顯示、主角的UI顯示、進(jìn)入新的場景(關(guān)卡)時系統(tǒng)提示的UI顯示,以及主菜單各個按鈕的UI顯示響應(yīng)。游戲運(yùn)行頁面有開始、設(shè)置、退出三個游戲按鈕。通過設(shè)置按鈕可以設(shè)置游戲的音量和背景音樂。游戲的封面頁和運(yùn)行頁如圖6、圖7所示。
2.2.5 鑰匙模塊
當(dāng)前關(guān)卡完成任務(wù)目標(biāo)后,當(dāng)確認(rèn)完成時將觸發(fā)鑰匙顯示的方法。玩家可以控制主角愛麗絲走進(jìn)鑰匙并發(fā)生碰撞,此時調(diào)用碰撞器的相關(guān)函數(shù)進(jìn)行數(shù)據(jù)統(tǒng)計(jì)[8,以此反饋至每個關(guān)卡的傳送門上。只有拾取了鑰匙后,當(dāng)玩家站在傳送門前才會顯示交互UI,擁有進(jìn)入下一關(guān)卡的資格。
2.2.6 關(guān)卡管理模塊
一個戰(zhàn)斗關(guān)卡可以包含一個或多個場景,而關(guān)卡運(yùn)行機(jī)制則融合了至少一個場景的相關(guān)元素[9-10]。該游戲中有三個關(guān)卡。第一個關(guān)卡中實(shí)現(xiàn)在前置條件下刷新三次不同波次,以及觸發(fā)相應(yīng)的對話模塊小節(jié)。第二關(guān)卡中實(shí)現(xiàn)監(jiān)測該關(guān)卡中水晶激活數(shù)量是否達(dá)到通關(guān)目標(biāo),在滿足目標(biāo)時調(diào)用系統(tǒng)相應(yīng)對話小節(jié)。第三關(guān)卡中實(shí)現(xiàn)監(jiān)測該關(guān)卡中是否在規(guī)定時間內(nèi)通過迷宮達(dá)到通關(guān)目標(biāo)。最后實(shí)現(xiàn)觸發(fā)對話小節(jié)以及終點(diǎn)觸發(fā)游戲結(jié)束進(jìn)行游戲結(jié)算。
3結(jié)論
本次設(shè)計(jì)通過使用Unity引擎和C#編程語言進(jìn)行游戲開發(fā)。經(jīng)過需求分析、總體設(shè)計(jì)、各個模塊以及細(xì)節(jié)設(shè)計(jì)制作,最后完成系統(tǒng)測試。開發(fā)了一款融合戰(zhàn)斗、解謎和迷宮三種玩法的RPG冒險游戲,給玩家?guī)砹素S富多樣的游戲體驗(yàn)。戰(zhàn)斗模式讓玩家能夠挑戰(zhàn)不同的敵人,體驗(yàn)緊張刺激的戰(zhàn)斗樂趣;解謎需要玩家開動腦筋,尋找路線解決關(guān)卡給出的難題;迷宮模式則提供了一個探索未知區(qū)域的機(jī)會。游戲界面簡潔,上手簡單且交互性強(qiáng),可玩性很高。
參考文獻(xiàn):
[1]殷爽,邵金俠,胡蓉,等.Unity3D引擎開發(fā)RPG游戲“武魂之戰(zhàn)”的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代工業(yè)經(jīng)濟(jì)和信息化,2021,11(7):82-84.
[2]郭欣桐.基于Unity的飛船大戰(zhàn)游戲設(shè)計(jì)與開發(fā)[J].科技資訊,2021,19(11):67-69.
[3]李曉蕾,王守佳,劉鈺周,等.基于Funcode平臺的《華夏寶藏》游戲設(shè)計(jì)與開發(fā)[J].現(xiàn)代計(jì)算機(jī),2023,29(10):98-103.
[4]鄭清生,代君.基于Unity3D的初中數(shù)學(xué)教育游戲設(shè)計(jì)與開發(fā)[J].中國教育技術(shù)裝備,2022(3):36-41.
[5]王曉芳,孟凱波,張騰飛.基于Unity3D的“神勇歸來”RPG類游戲設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代信息科技,2023,7(15):16-20.
[6]徐杰,孫大洋,胡怡.基于傾斜攝影建模和Unity引擎的虛擬校園設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代信息科技,2023,7(16):39-44.
[7]馬曉萍,軒瑩瑩.基于Unity3D的電子游戲設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù),2024,53(6):75-79.
[8]楊淮敏,邱樹偉.基于Unity3D的冒險游戲的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī),2023,29(13):73-78.
[9]何柳青.基于Unity3D的動作角色扮演游戲戰(zhàn)斗系統(tǒng)研究與開發(fā)[J].現(xiàn)代信息科技,2023,7(24):1-5.
[10]任奇.《女媧補(bǔ)天》數(shù)字游戲創(chuàng)作研究[D].蘭州:蘭州交通大學(xué),2023.
作者簡介:鞏云飛(1981一),女,漢族,山東淄博人,副教授,碩士研究生,研究方向:數(shù)字媒體技術(shù)。