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