王曉芳 孟凱波 張騰飛
摘? 要:“神勇歸來”是一款基于PC端的RPG角色扮演類游戲。游戲利用Unity3D引擎進行開發(fā),利用3Ds Max進行建模和貼圖,使用C#面向?qū)ο笳Z言進行腳本編寫來實現(xiàn)交互功能,利用鼠標(biāo)和鍵盤的交互方式對角色進行控制,使用NGUI插件和UGUI對UI界面進行設(shè)計,場景設(shè)計以中國國風(fēng)潮流為主調(diào),玩家沉浸在動漫改編的游戲情節(jié)的同時,接觸、了解并傳播中國傳統(tǒng)文化。
關(guān)鍵詞:Unity3D;角色扮演類游戲;傳統(tǒng)文化
中圖分類號:TP317? 文獻標(biāo)識碼:A? 文章編號:2096-4706(2023)15-0016-05
Design and Implementation of the RPG Game“Return of the Brave”Based on Unity3D
WANG Xiaofang1, MENG Kaibo2, ZHANG Tengfei1
(1.Henan University of Animal Husbandry and Economy, Zhengzhou? 450046, China;
2.Zhengzhou University of Aeronautics, Zhengzhou? 450015, China)
Abstract:“Return of the Brave”is an RPG role-playing game based on PC. The game uses Unity3D engine for development, uses 3Ds Max for modeling and mapping, and uses C# object-oriented language for scripting to realize interactive functions. It uses mouse and keyboard interaction for role control, uses NGUI pluggable unit and UGUI to design UI interface. The scene design is based on the trend of Chinese national style. While immersed in the plot of the game adapted from anime, players can contact, understand and spread traditional Chinese culture.
Keywords: Unity3D; role-playing game; traditional culture
0? 引? 言
隨著計算機技術(shù)的高速發(fā)展,游戲的種類越來越多,如冒險類游戲(AVG)、第一人稱射擊類游戲(FPS)、第三人稱射擊類游戲(TPS)、格斗游戲(FTG)、卡牌游戲(CAG)、競速游戲(RAC)等,在類型繁多的游戲中,RPG類游戲堪稱經(jīng)典游戲之一。
RPG,即Role-playing Game的縮寫,譯為“角色扮演類游戲”,也就是說用戶在該類游戲中能夠充當(dāng)游戲里既定的角色,角色在虛擬世界里完成相應(yīng)任務(wù)后可實現(xiàn)升級和成長。近年,由于5G網(wǎng)絡(luò)技術(shù)的加持,PRG類游戲以其個性化的成長系統(tǒng)和可設(shè)計的故事情節(jié)深受玩家的喜愛,并迅速崛起、風(fēng)靡全球,現(xiàn)已占據(jù)電子游戲的半壁江山,如大家耳熟能詳?shù)摹禿ota》《英雄聯(lián)盟》《王者榮耀》等。
1? 開發(fā)工具介紹
1.1? Unity3D開發(fā)引擎
Unity3D是Unity Technologies公司開發(fā)的輕松創(chuàng)建游戲和三維互動內(nèi)容的開發(fā)工具,是一個國際領(lǐng)先的專業(yè)游戲開發(fā)引擎。Unity3D擁有完整的游戲功能、強大的編輯器、易用的腳本語言、豐富的第三方插件、良好的生態(tài)環(huán)境等,更以其強大便捷的跨平臺性和適配性,廣泛用應(yīng)用于游戲開發(fā)、航空航天、軍事國防、工業(yè)仿真、教育培訓(xùn)、醫(yī)學(xué)模擬、建筑漫游等領(lǐng)域,其中3D游戲是Unity游戲引擎重要的應(yīng)用方向之一。
Unity3D開發(fā)平臺功能強大,簡單易學(xué),集成了MonoDevelop編譯平臺,支持C#、JavaScript和Boo三種腳本語言,因此成為“神勇歸來”游戲的開發(fā)引擎的首選。本游戲的開發(fā)實現(xiàn)利用了Unity3D中的地形編輯器創(chuàng)建復(fù)雜的地形、樹木與植被貼片等;利用了動畫系統(tǒng)來重定向角色及NPC等的動畫;利用了物理系統(tǒng)模擬真實世界中力的相互作用,其中使用了質(zhì)量、速度、摩擦力和空氣阻力等變量,模擬碰撞事件、觸發(fā)事件、彈簧效果、重力效果等;利用了粒子系統(tǒng)實現(xiàn)場景中的攻擊特效、火焰的制作、雨水等;利用了UGUI實現(xiàn)場景中的按鈕及UI交互的設(shè)計等,如圖1所示。
1.2? 3Ds Max建模工具
Unity3D中提供了基本5種基本物體的創(chuàng)建,即正方體、球體、膠囊體、圓柱體、平面,這些遠(yuǎn)遠(yuǎn)不能滿足游戲場景對模型逼真程度的需求,所以需要利用專門的三維制作軟件對游戲場景中的建筑模型、角色模型、場景細(xì)節(jié)物品等進行建模和貼圖。3Ds Max是由Autodesk公司開發(fā)的一款功能強大、應(yīng)用廣泛的三維動畫制作軟件,在“神勇歸來”游戲開發(fā)中,主要利用3Ds Max中常用的幾何體、編輯修改器、材質(zhì)與貼圖等功能完成建筑物、英雄模型、橋等場景物體的制作,如圖2所示。
1.3? C#開發(fā)語言
C#,即C Sharp,是微軟公司推出的面向?qū)ο蟮母呒壘幊陶Z言。本游戲利用C#語言編寫腳本,控制場景中交互功能的實現(xiàn),如角色的運動、按鈕的交互、NPC對話、“怪物”的攻擊、計分、血量增加、倒計時等功能的實現(xiàn)。
2? 游戲整體設(shè)計
2.1? 游戲說明
“神勇歸來”游戲采用“漫改游”形式設(shè)置劇情,以仙劍奇?zhèn)b傳小說系列為題材,以任務(wù)為主線推動故事發(fā)展,在游戲中玩家被塑造為救死扶傷,撫平亂世的英雄形象。在游戲場景中,包含玩家與NPC角色進行各種交互、領(lǐng)取并完成任務(wù)、與“怪物”戰(zhàn)斗、購買武器、藥品及商品等情節(jié),給玩家展現(xiàn)出一個宏偉奇妙而又吸睛的仙劍世界,如圖3所示。
2.2? 游戲總體設(shè)計
從游戲整體設(shè)計的角度出發(fā),將該游戲項目劃分為九大主要功能模塊。劇情設(shè)計采用“漫改游”形式設(shè)置故事劇情。圖4為主要功能模塊圖。
3? 游戲的功能模塊設(shè)計與實現(xiàn)
3.1? 玩家信息系統(tǒng)設(shè)計
該系統(tǒng)包含玩家的基本屬性信息、角色狀態(tài)控制、角色戰(zhàn)斗控制等功能。屬性信息包括血量、法力值、經(jīng)驗值等;角色狀態(tài)分為站立、行走、攻擊,不同狀態(tài)下角色模型會播放相應(yīng)的動畫;角色戰(zhàn)斗有普通攻擊和猛烈攻擊,角色主要使用普通攻擊,猛烈攻擊通過隨機數(shù)Random類來實現(xiàn)概率性觸發(fā)。
3.2? 背包系統(tǒng)設(shè)計
背包系統(tǒng)的設(shè)計包含背包UI控件的激活、物品的使用情況、物品的信息顯示等。鼠標(biāo)點擊背包按鈕彈出背包面板的顯示,玩家可以查看背包內(nèi)現(xiàn)有的物品資源,物品以種類顯示在背包方格中。背包面板包含增加、減少金幣、查看與顯示金幣、顯示物品屬性信息等功能。物品方格包含物品數(shù)量的增加和減少。如果當(dāng)物品為零時,清空該方格信息;在物品拾取中,如果物品方格中沒有該物品,那么設(shè)置該物品的個數(shù)為1;當(dāng)有該物品時,背包中存在的物品數(shù)量會增添1。同樣,當(dāng)玩家使用了血量補充包、法力量補充包或售賣物品的情況下,背包里也會相應(yīng)的減去物品的數(shù)量。物品的外觀設(shè)計是以不同Icon圖片來區(qū)分,當(dāng)鼠標(biāo)停留在物品UI圖片上時,系統(tǒng)會彈出文本框來顯示物品屬性信息,鼠標(biāo)右鍵點擊物品方格實現(xiàn)物品的穿戴。
3.3? 技能系統(tǒng)設(shè)計
技能系統(tǒng)包括角色的各種技能,每個技能都有各自介紹,包括增加角色攻擊力或者增加角色防御值及法力值;通過鼠標(biāo)點擊拖拽可以放在技能快捷欄中也可以進行技能釋放;技能列表顯示角色等級,技能只有達到相應(yīng)等級才能激活和使用。
3.4? UI系統(tǒng)設(shè)計
本功能模塊采用NGUI插件以及Unity自帶的UGUI共同制作完成。UI設(shè)計模塊包含登錄注冊界面、角色選擇界面、主界面中的角色信息、小地圖、技能快捷欄,功能快捷欄等模塊。角色UI基本信息包含角色頭像圖片、血量的剩余量和、法力值的剩余量、角色當(dāng)前的等級等。本項目設(shè)置6個技能快捷方格欄,可以把技能和消耗品(血包,法力值)拖到此處,使玩家在操作中更高效、便捷。功能快捷欄是每個游戲必不可少的,點擊功能快捷按鈕顯示不同功能面板。
4? 游戲關(guān)鍵模塊的實現(xiàn)
4.1? 角色信息管理系統(tǒng)實現(xiàn)
角色信息管理系統(tǒng)主要包括角色基本信息管理、角色狀態(tài)、角色戰(zhàn)斗三大模塊。如圖5角色信息管理功能所示。
4.1.1? 角色基本信息管理
角色具有HP值、MP值、Exp值、等級、昵稱等參數(shù),這些組成了角色的基本信息,HP、MP初始值為100。當(dāng)受到“怪物”攻擊時,HP值減少直至小于0時代表角色死亡;當(dāng)角色使用技能時,減少MP值;當(dāng)HP、MP值不滿足100時,調(diào)用角色腳本AddHp()或者AddMp()方法,恢復(fù)HP、MP值;經(jīng)驗Exp值通過殺死“怪物”來實現(xiàn),當(dāng)達到一定經(jīng)驗值時,角色等級,升級所需經(jīng)驗值=當(dāng)前等級值*10+50;昵稱是根據(jù)玩家在選擇角色時,由玩家進行自定義。
4.1.2? 角色狀態(tài)
角色具有Idle、Walk、Attack三種狀態(tài)。Attack狀態(tài)分為普通攻擊和瘋狂攻擊,兩種Attack狀態(tài)通過Random類隨機函數(shù)來確定攻擊狀態(tài)。當(dāng)玩家點擊地面操作角色移動時,角色會從Idle狀態(tài)或Attack狀態(tài)轉(zhuǎn)變?yōu)閃alk狀態(tài);使用Vector3.Distance函數(shù)判斷“怪物”是否在可攻擊范圍,若在攻擊范圍則直接進入Attack狀態(tài),玩家點擊“怪物”即為攻擊該“怪物”。
4.1.3? 角色戰(zhàn)斗功能
角色戰(zhàn)斗與角色狀態(tài)緊密聯(lián)系,角色戰(zhàn)斗依托于角色狀態(tài)。首先,在Unity編輯器中把“怪物”的Tag標(biāo)簽設(shè)為Enemy。其次,通過if語句判斷點擊物體標(biāo)簽,若被點擊物體標(biāo)簽為Enemy,則把該“怪物”添加到攻擊目標(biāo)中。最后再判斷玩家與“怪物”的距離,調(diào)用角色相應(yīng)的狀態(tài)。當(dāng)角色進入攻擊狀態(tài)時,判斷角色與“怪物”的碰撞,完成一次攻擊動畫,代表一次有效攻擊。另外,角色攻擊不一定作用到“怪物”身上,因為“怪物”有躲避功能。完成一次攻擊后判斷下次攻擊類型,依次循環(huán)完成持續(xù)攻擊,直至“怪物”血量值小于零,角色攻擊目標(biāo)清空。
4.2? 背包系統(tǒng)的功能實現(xiàn)
在游戲項目中導(dǎo)入NGUI插件后,創(chuàng)建UIRoot作為整個項目UI元素的父物體。UIRoot子物體中Camera攝像機是自帶攝像機,用來渲染UI元素。接下來導(dǎo)入所有UI元素所需的全部圖片,并將其圖片格式設(shè)置為Sprite格式。使用NGUI創(chuàng)建圖集,將所有圖片添加到圖集中。背包系統(tǒng)的UI界面設(shè)置完成Bag、Bag_Grid、Bag_Item三層父子關(guān)系,bag上掛載的腳本管理背包系統(tǒng)的背景,Bag_Grid上掛載的腳本管理方格屬性,BagItem管理方格中物品的屬性,這樣的設(shè)計結(jié)構(gòu)層次清晰,便于管理,腳本代碼復(fù)用性高。圖6為背包三層結(jié)構(gòu)圖及具體實現(xiàn)方法。
4.3? “怪物”功能實現(xiàn)
“怪物”系統(tǒng)是角色扮演類游戲中不可缺少的功能。“怪物”受傷、“怪物”自動攻擊、“怪物”自動生成三個主要功能模塊共同組成AI“怪物”系統(tǒng),分別采用TakeDamage()、AutoAttack()、RandomAttack()方法來實現(xiàn)對應(yīng)功能。圖7是AI“怪物”具體實現(xiàn)圖解。
4.3.1? “怪物”受傷實現(xiàn)
為了使游戲更加真實,“怪物”受傷時通過協(xié)程實現(xiàn)了躲避功能。當(dāng)玩家攻擊“怪物”時,“怪物”不一定受到傷害。使用Random類來產(chǎn)生一個隨機數(shù),這個數(shù)字介于0~1。當(dāng)隨機數(shù)小于0.2時,“怪物”不受傷害。當(dāng)大于0.2時,“怪物”受傷情況由玩家的攻擊力決定。玩家為了區(qū)分出“怪物”是否受傷害,使用腳本來控制“怪物”材質(zhì)球的變化。當(dāng)“怪物”產(chǎn)生躲避時,“怪物”的身體變紅,1秒后變回正常。
4.3.2? “怪物”自動攻擊實現(xiàn)
當(dāng)玩家攻擊“怪物”時,“怪物”先轉(zhuǎn)向玩家所在方向,“怪物”的狀態(tài)由Idle,改變?yōu)閃alk或Attack,此時玩家成為“怪物”的攻擊目標(biāo)。玩家與“怪物”的相對距離判斷是使用Vector3.Distance函數(shù),若相對距離在一定范圍內(nèi),“怪物”改變?yōu)閃alk狀態(tài)追逐玩家,調(diào)用“怪物”角色控制器類下的SimpleMove函數(shù)進行移動;若相對距離小于可攻擊范圍時,“怪物”變?yōu)锳ttack狀態(tài),對玩家進行攻擊操作;若玩家與“怪物”攻擊時相對距離過大,此時玩家不再是“怪物”的攻擊目標(biāo),“怪物”恢復(fù)到閑置狀態(tài),繼續(xù)進行巡邏狀態(tài)。
4.3.3? “怪物”的生成實現(xiàn)
“怪物”生成需要提前把“怪物”設(shè)置為預(yù)制體,預(yù)制體是資源文件中可重復(fù)使用的資源。編寫“怪物”生成腳本,用來實現(xiàn)“怪物”的生成功能。游戲項目中設(shè)置“怪物”的總數(shù)為10只。若“怪物”的數(shù)量減少,在一定時間內(nèi)通過腳本自動添加“怪物”到場景中。因場景中地形復(fù)雜,所以使用Random類設(shè)置“怪物”在一定區(qū)域中隨機生成。圖8為“怪物”與“英雄”角色的對峙。
5? 游戲功能測試
游戲的功能測試包括注冊、登錄、英雄選擇、角色控制、視角改變、任務(wù)系統(tǒng)、商品資源系統(tǒng)、背包系統(tǒng)、技能系統(tǒng)、玩家的狀態(tài)、AI怪物系統(tǒng)等,經(jīng)測試各個功能模塊能夠順利實現(xiàn),融合度較高。
6? 結(jié)? 論
利用Unity3D引擎開發(fā)游戲,成本低、易操作,能夠為用戶提供完善的游戲編輯功能,一次開發(fā)可以發(fā)布多個平臺,在視覺上呈現(xiàn)精美的場景效果。本文設(shè)計的名為“神勇歸來”的RPG類游戲能夠讓玩家自行選擇仙劍角色,在國風(fēng)的畫面和場景中定制個性化的任務(wù)或路線,完美展示角色的養(yǎng)成與扮演,大大增強了玩家的沉浸感和游戲的交互性同時,還宣傳了中國的傳統(tǒng)文化,并為開發(fā)設(shè)計RPG類游戲提供參考思路和實戰(zhàn)經(jīng)驗。
參考文獻:
[1] 杜汝濤.Unity3D射擊類游戲的開發(fā) [J].電腦編程技巧與維護,2022(10):141-144.
[2] 殷爽,邵金俠,胡蓉,等.Unity3D引擎開發(fā)RPG游戲“武魂之戰(zhàn)”的設(shè)計與實現(xiàn) [J].現(xiàn)代工業(yè)經(jīng)濟和信息化,2021,11(7):82-84.
[3] 李兵川.基于Unity 3D引擎角色扮演類游戲設(shè)計及開發(fā) [J].科技風(fēng),2018(15):11.
[4] 沈士釗.基于Unity3D引擎的三維角色扮演游戲設(shè)計與實現(xiàn) [D].武漢:華中科技大學(xué),2017.
[5] 焦靈.Unity3D引擎RPG動作游戲設(shè)計 [J].電腦編程技巧與維護,2022(3):141-143.
[6] 黃福鈺.基于Unity3D的歷史RPG教育游戲設(shè)計開發(fā) [J].電腦知識與技術(shù),2021,17(11):58-60.