崔夢天,董國慶,姜玥,何健圣,李裕嵐,吳蕾蕾
(1. 西南民族大學(xué)計(jì)算機(jī)系統(tǒng)國家民委重點(diǎn)實(shí)驗(yàn)室,四川成都 610041;2. 弗里堡大學(xué)物理系,瑞士 1700)
游戲行業(yè)的發(fā)展,離不開大型工作室的親歷巨制從而推動整個行業(yè)的進(jìn)步,同時也離不開各種中小型制作團(tuán)隊(duì)努力發(fā)揮創(chuàng)意,用小成本體現(xiàn)大樂趣,拓寬游戲市場.隨著時間的推移,中小團(tuán)隊(duì)也一直在尋找簡單、高效、便捷的開發(fā)方式,包括策劃、美術(shù)和代碼層面[1].其中,因?yàn)樵缙陔娔X的機(jī)能限制,很多開發(fā)者把美術(shù)品質(zhì)限制在2D 維度上,而在2D 維度中,最簡單且足夠支撐游戲美術(shù)品質(zhì)表現(xiàn)的方式就是像素風(fēng)格,通過簡單的特快堆疊,就能勾勒出生動形象的人物和場景.直至目前,仍有相當(dāng)數(shù)量的開發(fā)者在采用這種方式開發(fā)游戲,他們更專注在游戲玩法本身上的突破,將一個綜合型工程轉(zhuǎn)變?yōu)榇a層級的構(gòu)思工程,即軟件工程.隨著《我的世界》這款游戲風(fēng)靡全球,體素塊逐漸進(jìn)入了開發(fā)者和玩家的視野,一個個方塊堆疊起來的世界,減少了視覺上的感受,卻能專注于玩法上的體驗(yàn),是一種前所未有的游戲體驗(yàn)方式[2].有敏銳的開發(fā)者發(fā)現(xiàn),體素和像素有著諸多相似之處,甚至可以說一脈相承.體素建模類比于像素繪畫,擁有像素繪畫的許多優(yōu)點(diǎn):開發(fā)成本低、低精度提升加載速度、畫面表現(xiàn)力滿足基本游戲表現(xiàn)力的需要,并且風(fēng)格方面還能作為游戲的賣點(diǎn)進(jìn)行升華.體素建模作為美術(shù)主體的游戲,還是一個新興的游戲門類,在不斷的發(fā)展中,并且體素游戲目前覆蓋的游戲類型和領(lǐng)域都有限[3].
主流三維游戲一般都需要龐大、精致的游戲世界[4].所謂的游戲場景,不單指玩家可見的三維渲染環(huán)境,也包含游戲性系統(tǒng)(游戲機(jī)制、物理碰撞、人工智能等)所需的虛擬環(huán)境. 多數(shù)三維游戲使用三維三角形網(wǎng)格建構(gòu)大部分的游戲世界,包括地形、建筑、植被及其他靜態(tài)物件. 一些以自然戶外環(huán)境為主的游戲,如大部分RPG、MOBA 類型游戲,會使用到高度場去表示地形;一些室內(nèi)為主的游戲,如一些FPS、TPS、ACT 等,會使用構(gòu)造實(shí)體幾何技術(shù)去建構(gòu)基本的室內(nèi)環(huán)境[5](在許多游戲引擎中稱為 BSP/binary space partitioning 筆刷). 游戲場景的制作占總制作成本的一大部分,而隨著游戲平臺的性能提升,以及游戲內(nèi)容需求的膨脹,游戲世界的制作成本也因應(yīng)不斷提高[6].三維網(wǎng)格是合乎當(dāng)代硬件的游戲世界表示方式,也是較自由的建模方式,而且有成熟的數(shù)字創(chuàng)作工具如3ds Max 和Maya.但其缺點(diǎn)包括建模成本高、僅為表面表示方式(可能無法判斷一個任意點(diǎn)在其外還是其內(nèi))、不容易修改(尤其是在展開UV 之后)、不容易做連續(xù)或離散級數(shù)的細(xì)致程度等[7]. 高度場和BSP 的制作成本較網(wǎng)格低,而且較容易修改和實(shí)現(xiàn)LOD,但其適用場合就非常局限.
本文從現(xiàn)當(dāng)代游戲設(shè)計(jì)理念和設(shè)計(jì)技術(shù)出發(fā),結(jié)合貼合中小型團(tuán)隊(duì)開發(fā)實(shí)際需求,并結(jié)合軟件工程和游戲設(shè)計(jì)方法進(jìn)行體素游戲的領(lǐng)域拓展.針對體素游戲玩法領(lǐng)域拓展的核心思路,對游戲進(jìn)行整體設(shè)計(jì).并以此為基礎(chǔ)對各個具體細(xì)節(jié)進(jìn)行詳細(xì)的規(guī)定和預(yù)覽打磨,力圖從體素游戲表現(xiàn)、玩法銜接流暢度、功能操作手感等模塊進(jìn)行詳細(xì)規(guī)劃功能需求.通過對構(gòu)建好的游戲系統(tǒng),在場景中進(jìn)行深入的測試,測試其玩法功能符合策劃需求,整體游戲玩法功能正常,使用效果達(dá)到預(yù)期.
為了貼合3D 游戲的設(shè)計(jì)方法,以及迎合體素較低開發(fā)門檻的主題,采用玩法組合的形式,進(jìn)行關(guān)卡組合,并且每個關(guān)卡都為風(fēng)格迥異的關(guān)卡. 玩法關(guān)卡組合的方式,能在一個完整游戲循環(huán)中容納更多獨(dú)立的玩法機(jī)制,相當(dāng)于在一個大游戲循環(huán)中濃縮了幾個小游戲循環(huán).并且玩家能通過簡單的玩法學(xué)習(xí),將操作思路帶到不同的關(guān)卡中,有一定熟練度的同時,也是對玩家的一種挑戰(zhàn). 不同玩法之間的融合,體現(xiàn)了代碼編寫規(guī)范,強(qiáng)調(diào)了代碼編寫規(guī)整重要性[8]. 常規(guī)線性開發(fā)流程中,根據(jù)游戲設(shè)計(jì)的軸心進(jìn)行分支編寫,代碼總體是在一個邏輯結(jié)構(gòu)中完善的. 采用不同玩法融合的方式,首先,能體現(xiàn)中小型開發(fā)團(tuán)隊(duì)能專注于玩法設(shè)計(jì)本身的優(yōu)勢(花更多時間攻克玩法設(shè)計(jì),花更少時間制作美術(shù)資源).其次,能提高軟件工程管理水平[9].
將設(shè)計(jì)思路進(jìn)一步具體化,具體需要提供給玩家什么內(nèi)容、感受,具體需要設(shè)計(jì)哪些元素等詳細(xì)設(shè)計(jì)內(nèi)容.設(shè)計(jì)原則內(nèi)容如下:
1)玩家需要清晰的目標(biāo). 這是主要設(shè)計(jì)原則,需要在每個關(guān)卡,甚至每個界面給玩家提供明、暗示操作引導(dǎo),否則玩家不知道游戲目標(biāo)或如何操作,就會極大程度減少玩家的體驗(yàn)時間.玩家明確具體游戲目標(biāo)后,就能自主根據(jù)場景中提供的內(nèi)容決定如何實(shí)現(xiàn)目標(biāo).為此需要專門設(shè)計(jì)一個關(guān)卡進(jìn)行初次游玩教學(xué),逐一介紹游戲內(nèi)的元素,并配合實(shí)際操作反饋進(jìn)行同步教學(xué).
2)及時反饋玩家的行為.玩家不應(yīng)該在游戲中進(jìn)行對應(yīng)操作時,無法感知到操作的結(jié)果. 玩家在進(jìn)行體驗(yàn)時,無論點(diǎn)擊按鍵、命令或是記錄畫面,都應(yīng)該獲得及時且符合邏輯的反饋.及時反饋包括視覺反饋和聽覺反饋,并且在必要時需要雙重反饋結(jié)合進(jìn)行“注意力引導(dǎo)”,讓玩家能更好地體驗(yàn)到沉浸感.為此需要為游戲中的所有行為設(shè)計(jì)操作反饋,包括但不限于點(diǎn)擊、選擇、攻擊、受擊、勝利等.
3)避免向玩家提供不相關(guān)信息和不相關(guān)選項(xiàng).玩家在游玩關(guān)卡時,會專注于關(guān)卡完成條件的達(dá)成,并且會自主充分利用場景元素之間的互動和聯(lián)系進(jìn)行輔助通關(guān).確保關(guān)卡場景中出現(xiàn)的元素都是相關(guān)且有幫助的,這能夠玩家在體驗(yàn)時,面對眾多游戲元素不會茫然失措,所謂用戶選擇越多決策時間越長,并且這種長時間的決策體驗(yàn)對游戲來說并不是一個正面影響.
4)盡可能減少按鍵和按鍵操作. 游戲玩法的受眾,會隨著該玩法需要的按鍵操作增多而減少,更多的玩家更傾向于操作簡單但是有趣的游戲[10]. 所以減少按鍵數(shù)量和減少按鍵操作很重要,而實(shí)現(xiàn)這種效果最好的方式就是按鍵功能集成,即將多個功能集中在少量按鍵上,能隨意切換,或一次操作有多重功效.
5)玩家能輕松的暫停、保存和繼續(xù)操作. 在一個完整的游戲循環(huán)中,游戲時長往往都是不能通過一次游玩就結(jié)束的,所以必要的保存和暫停是游戲的基本功能.并且良好的游戲暫停和保存,需要是及時性的,不是到某個地方才能保存或者其他形式,這樣可以給予玩家更高的容錯率,且適應(yīng)玩法關(guān)卡集成的設(shè)計(jì)思路[11].
本文的體素游戲系統(tǒng)由建模、場景和功能三大模塊組成,主要內(nèi)容如下:
1)角色、道具和場景體素建模.
2)角色實(shí)現(xiàn)骨骼動畫和蒙皮實(shí)現(xiàn)模型動作.
3)開發(fā)主角操作系統(tǒng).
4)實(shí)現(xiàn)關(guān)卡選擇和數(shù)據(jù)保存.
體素游戲系統(tǒng)的功能模塊圖如圖1 所示.
圖1 功能模塊圖Fig.1 Functional module diagram
體素游戲系統(tǒng)一般由用戶輸入、上帝視角運(yùn)動攝像機(jī)、表現(xiàn)渲染模塊、物理模塊、操作模塊等模塊構(gòu)成完整系統(tǒng).通過捕捉鍵盤和鼠標(biāo)輸入信號方式控制系統(tǒng)運(yùn)行.體素游戲系統(tǒng)的結(jié)構(gòu)圖如圖2 所示.
圖2 體素游戲系統(tǒng)結(jié)構(gòu)圖Fig.2 Structure diagram of voxel game system
根據(jù)前期策劃階段獲得的美術(shù)需求,使用MagicaVoxel 體素建模軟件進(jìn)行三維體素建模[12]. 三維體素建模部分,需要構(gòu)建人物、怪物、道具和場景四大部分,在體素模型建模完畢后,將素材導(dǎo)出并導(dǎo)入Unity,后續(xù)工作將在游戲引擎中配合C#腳本實(shí)現(xiàn).
因?yàn)镸agicaVoxel 是一款簡單操作風(fēng)格的體素建模軟件,并且使用像素色塊填充的方式,選擇顏色后可以直接進(jìn)行模型填充,因此構(gòu)建好層次模型后,將使用MagicaVoxel 進(jìn)行體素模型制作. 建模完畢后可以直接導(dǎo)出文理和obj 類型文件.MagicaVoxel 建模的展示如圖4 所示.
圖3 模型層次圖Fig.3 Model hierarchy diagram
圖4 MagicaVoxel 建模展示圖Fig.4 Modeling diagram of MagicaVoxel
主角,也就是玩家,選取的是人氣動畫里的角色,一般在制作3D 模型之前,都會有原畫師對角色進(jìn)行平面繪圖,而因?yàn)楸疚倪x擇人氣動畫作為背景,所以可以使用一張圖片進(jìn)行參考建模,進(jìn)行人體T 字模型建模[13].建模前后的對比如圖5、6 所示.
圖5 主角平面形象Fig.5 Main character plane image
主角通過移動進(jìn)行攻擊,并且主角擁有武器. 主角使用的武器是一個釘頭錘,并且配置鉸鏈系統(tǒng),建模部分實(shí)現(xiàn)釘頭錘,其余部分在Unity 游戲引擎中通過C#腳本和物理系統(tǒng)控制實(shí)現(xiàn). 釘頭錘和鉸鏈系統(tǒng)如圖7 所示.
圖6 主角實(shí)體像素形象Fig.6 Main character solid pixel image
圖7 釘頭錘與鉸鏈系統(tǒng) Fig.7 Nail-head hammer and hinge system
本文的體素游戲系統(tǒng)不是一個以打斗為主的游戲,主旨皆為提供快樂創(chuàng)意,所以設(shè)計(jì)3 種怪物,分別是水壺怪、怠惰手下、怠惰,迎合低中高三個難度,并且根據(jù)特定場景和特定場合上場.3 種怪物的展示如圖8 所示,從左到右依次是水壺怪、怠惰手下、怠惰.
圖8 怪物建模Fig.8 The monster modeling
玩家在進(jìn)行一局游戲的過程中,需要添加變數(shù),也需要感受到成長,所以設(shè)置了5 種道具讓玩家收集和使用.從左到右依次是時間增強(qiáng)器、生命恢復(fù)、動能增加、移速增加、加分星星,如圖9 所示.
圖9 道具建模Fig.9 Props modeling
根據(jù)前期游戲策劃中的地圖設(shè)計(jì)需求,從平面圖或設(shè)計(jì)需求進(jìn)行場景屠體素建模,并且要根據(jù)之前建模完成的角色、道具模型的尺寸,進(jìn)行比例放大,盡可能地不通過額外數(shù)據(jù)調(diào)整,就能適配所有角色和道具.場景建模如圖10 所示,從左到右一次是新手教學(xué)平板地圖、幻境迷蹤三維地圖、地獄行者迷宮地圖、神圣角斗競技場.
圖10 場景建模Fig.10 Scene modeling
根據(jù)游戲策劃對于關(guān)卡的設(shè)計(jì),采用每個關(guān)卡都為一個單獨(dú)場景Scene 的設(shè)計(jì)方法.并且通過前綴標(biāo)識的方式讓場景自發(fā)進(jìn)行排序,同時場景排序也是場景的載入順序[14].
關(guān)卡場景建立好后,再添加開始游戲與關(guān)卡選擇場景,游戲啟動場景(進(jìn)行游戲最初的初始化工作),資源加載場景,以及開屏動畫場景.
實(shí)際工程場景排序及功能如下:
0-GameStart:初始化和主界面場景. 最快速的啟動場景并載入場景腳本Script. 該場景主要進(jìn)行游戲的初始化操作,將后續(xù)運(yùn)行所需的所有數(shù)據(jù)加載進(jìn)內(nèi)存,以便其他腳本訪問.在游戲初始化完成后,將首先展示游戲的主界面,包括開始游戲、游戲設(shè)置等重要UI 展示,方便玩家首先調(diào)整.
1-StageSelect:關(guān)卡選擇場景. 點(diǎn)擊開始游戲后,進(jìn)入關(guān)卡選擇界面,通過鼠標(biāo)滑動和點(diǎn)擊選定進(jìn)入要游玩的關(guān)卡.
2-Xinshouguanqia:新手關(guān)卡. 主要介紹游戲的游玩方式,并搭配可以上手的操作體驗(yàn),讓初次游玩游戲的玩家能以最快的速度了解游戲的內(nèi)容.
3-Mihuanqizong:幻境迷蹤. 三維移動和戰(zhàn)斗的視覺表現(xiàn)關(guān)卡.
4-Diyuxingzhe:地獄行者.暗黑風(fēng)格解謎視覺表現(xiàn)關(guān)卡.
5-Shenshengjuedou:神圣角斗.競技場風(fēng)格生存模式戰(zhàn)斗玩法關(guān)卡.
99-LoadScene:加載場景.因?yàn)榧虞d場景需要最低限度的視覺表現(xiàn),目的是告訴玩家游戲還在資源加載過程中,沒有卡死.
LOGO:logo 展示關(guān)卡,展示游戲開發(fā)者信息,開發(fā)者歸屬.
3.1.1 初始化和主界面場景搭建
主界面場景主要分為兩部分,主角動效展示部分和主界面UI 布局部分.
1)主界面UI 布局
根據(jù)前期策劃需求框圖,可以大致確定主界面UI 按鈕內(nèi)容和排布位置. 然后在Unity 引擎中進(jìn)行Canvas 布局,如圖 11 所示.
圖11 主界面UI 實(shí)現(xiàn)Fig.11 Main interface UI implementation
進(jìn)一步的功能需求得知,需要在點(diǎn)擊按鈕后激活相應(yīng)的面板,這些面板也需要在主界面UI 中進(jìn)行布局.
2)主角動態(tài)效果展示
主角動效主要展示角色的所有動作,并且角色在做動作時不會移動,會在原地一直播放動畫,這一部分主要通過Animation 實(shí)現(xiàn)鏡頭旋轉(zhuǎn),狀態(tài)機(jī)實(shí)現(xiàn)動效播放.然后就是展示動作需要一個地形進(jìn)行打底,需要進(jìn)行搭建.T 字人物模型如圖12 所示.
圖12 T 字人物模型Fig.12 T character model
3.1.2 關(guān)卡選擇場景搭建
關(guān)卡選擇場景主要以UI 為主,展示各個關(guān)卡的大致樣貌和歷史最高積分,以及展示關(guān)卡選擇的動態(tài)效果.并且關(guān)卡選擇場景在搭建完成后,需要使用腳本進(jìn)行主界面和關(guān)卡之間的串聯(lián),作為兩者中間的橋梁.關(guān)卡選擇實(shí)現(xiàn)如圖13 所示.
圖13 關(guān)卡選擇UIFig.13 Level selection UI
3.1.3 關(guān)卡場景搭建
三種關(guān)卡場景如圖14 所示,從左到右依次是幻境迷蹤、地獄行者、神圣角斗.
圖14 場景實(shí)現(xiàn)Fig.14 Scenario implementation
1)幻境迷蹤關(guān)卡搭建主要設(shè)置敵人點(diǎn)位、空氣墻、道具刷新點(diǎn)以及設(shè)置主角出生位置. 敵人點(diǎn)位以及道具刷新點(diǎn)采用unity 標(biāo)簽設(shè)置,能在Editor Scene場景下看到編輯的點(diǎn)位,而在Game 場景下會被自動隱藏.
2)地獄行者關(guān)卡搭建主要設(shè)置敵人點(diǎn)位,道具點(diǎn)位,主角位置,環(huán)境光和主角光等光源設(shè)置.該關(guān)卡注重氛圍表達(dá)和場景烘托,而對于這些游戲表現(xiàn)最有益的方式便是使用燈光渲染進(jìn)行.該場景主要使用點(diǎn)光源和平行光源兩種光源烘焙場景.無論是點(diǎn)光源還是平行光源,區(qū)別在于發(fā)光位置及區(qū)域不同,常用參數(shù)以及燈光渲染功能都是大同小異的.主要使用功能參數(shù)如下:
Type:光源類型,點(diǎn)光源為Point 類型,平行光源為Directional 類型.
Color:燈光顏色,影響光源的環(huán)境顏色.
Mode:渲染模式,Realtime 為實(shí)時渲染,比較消耗性能,效果最好.
Intensity:光源強(qiáng)度.
Shadow Type:陰影類型.No Shadows 為無陰影.
Render Mode:渲染模式.Auto 為自動渲染.
Culling Mask:陰影遮罩,陰影剔除. Everything 為陰影照射在所有物體上.
3)神圣角斗關(guān)卡場景搭建主要進(jìn)行敵人點(diǎn)位、道具點(diǎn)位以及主角點(diǎn)位的位置布置.
角色戰(zhàn)斗承載了大部分的玩法表現(xiàn)功能.實(shí)現(xiàn)角色戰(zhàn)斗系統(tǒng)分為攻擊和移動2 個部分.
3.2.1 角色攻擊
角色攻擊并沒有常規(guī)游戲中的攻擊輸入按鍵,而是根據(jù)玩法設(shè)計(jì),玩家只需要進(jìn)行移動便可以進(jìn)行攻擊.因?yàn)樵谒x取的人氣動畫中,該角色是使用鏈錘進(jìn)行攻擊的,鏈錘的特點(diǎn)便是通過甩動可以使錘頭甩動,從而達(dá)到錘頭砸擊的目的.
實(shí)現(xiàn)鏈錘系統(tǒng),需要使用unity3d 引擎的鉸鏈系統(tǒng)進(jìn)行鏈子連接. 鏈接方式為,使用Cube(unity 自帶3d 模型)作為鏈子節(jié)點(diǎn),使用錘頭作為鏈子結(jié)尾,將鏈子的各個節(jié)點(diǎn)包括錘頭連接起來,每個節(jié)點(diǎn)會根據(jù)前一個節(jié)點(diǎn)的位置和受力情況處理自身的位置和受力情況,達(dá)到節(jié)點(diǎn)聯(lián)動的效果.最后,將首節(jié)點(diǎn)與角色手部綁定,實(shí)現(xiàn)角色抓住錘子的表現(xiàn)效果.
3.2.2 角色移動
游戲?yàn)榧s45°角上帝視角游戲,即通過固定的角度和距離觀察角色的移動,不會受到操控的影響. 而在此攝像頭觀察模式下,游戲角色采用8 方向移動模式,即每45°為一個運(yùn)動方向進(jìn)行角色操控.實(shí)現(xiàn)角色8 方向運(yùn)動,采用的方式是水平、豎直向量組合的方式.先獲取角色水平向量horizontal,然后獲取角色垂直向量vertical,這兩個向量即決定了角色的運(yùn)動方位和運(yùn)動強(qiáng)度(輸入按鍵的強(qiáng)度)[15]. 然后使用一個三維向量remGoto 作為水平和垂直向量的加和,組成一個新的三維Vector 向量.該三維向量即當(dāng)前角色的實(shí)際運(yùn)動方向和運(yùn)動強(qiáng)度. 隨后設(shè)置角色的移動朝向(LookAt),和設(shè)置角色動畫播放,即可在下一幀刷新時根據(jù)向量的參數(shù)移動角色的位置數(shù)值[16].
由于之前設(shè)置了錘子的鉸鏈系統(tǒng),而鉸鏈系統(tǒng)已經(jīng)連接至角色的手部,所以在角色移動時,會根據(jù)角色的動量和位置,直接通過物理參數(shù)影響鉸鏈系統(tǒng),進(jìn)而讓整個錘鏈運(yùn)動起來.并且通過操作角色進(jìn)行自身旋轉(zhuǎn),也能模擬甩錘子時的旋轉(zhuǎn)方式,以這種方式進(jìn)行攻擊.
將功能開發(fā)完成的游戲關(guān)卡功能和三維體素模型使用Unity3D 游戲引擎進(jìn)行整合數(shù)據(jù)打通,將視覺效果和代碼功能組合,運(yùn)用Unity3D 引擎內(nèi)置的打包功能,將游戲整體打包導(dǎo)出成exe 文件進(jìn)行性能與系統(tǒng)性測試,驗(yàn)證基于Unity3D 引擎開發(fā)的體素游戲系統(tǒng)的運(yùn)行效果. 根據(jù)體素游戲系統(tǒng)的功能與性能指標(biāo),以及玩家的實(shí)際游玩方式,設(shè)計(jì)的整個系統(tǒng)的測試流程如圖15 所示.
圖15 體素游戲測試實(shí)驗(yàn)流程Fig.15 Voxel game testing experimental process
本文根據(jù)一般玩家進(jìn)行體素游戲游玩的目的為基礎(chǔ),對整個體素游戲系統(tǒng)進(jìn)行了完整的測試實(shí)驗(yàn).實(shí)驗(yàn)軟硬件參數(shù)為:系統(tǒng)版本W(wǎng)indows10 Pro 1909;CPU Intel(R) Core(TM) i5-9400F CPU @ 2.90GHz;內(nèi)存16 G;硬盤容量1 T;顯卡NVIDIA GeForce GTX 1650.
在測試之前需要檢查導(dǎo)出的exe 項(xiàng)目對整個體素游戲系統(tǒng)的加載是否正常,包括UI、模型初始化,戰(zhàn)斗、場景功能加載是否正常. 本次測試主要測試三大項(xiàng)目,分別為UI 交互測試、角色戰(zhàn)斗功能測試和場景功能及UI 聯(lián)動測試.正常啟動界面如圖16 所示.
圖16 正常啟動畫面Fig.16 Normal splash screen
UI 交互是否正常,直接影響了玩家在初始狀態(tài)下玩游戲的第一印象. 在游戲Loading 完成進(jìn)入主界面后,主界面的UI 和更深層次的UI 都需要運(yùn)行正常并有相應(yīng)的反饋表現(xiàn). 需要對所有可交互UI 和按鈕進(jìn)行測試.
打開exe 文件后,等待短暫的加載,可以進(jìn)入主界面.在主界面擁有5 個ButtonUI 控件,分別對應(yīng)5個不同功能的可點(diǎn)擊按鈕.本課題所開發(fā)的體素游戲制作了豐富的視覺反饋效果. 在主界面的5 個UI 控件都有觸碰高亮功能,依次從開始、設(shè)置、幫助、說明和退出5 個按鈕進(jìn)行觸碰但是不點(diǎn)擊,可以觸發(fā)高亮功能.
功能方面,除了開始游戲和退出按鈕是直接跳轉(zhuǎn)按鈕,其余三個按鈕都為彈窗按鈕,點(diǎn)擊后會有該按鈕對應(yīng)的專用彈窗界面.首先測試設(shè)置按鈕,點(diǎn)擊后,設(shè)置按鈕會彈出設(shè)置彈窗,在設(shè)置彈窗中,可以設(shè)置游戲的BGM 音量,還可以通過點(diǎn)擊清除存檔按鈕,清除本地最高分存檔. 經(jīng)過測試,滑動音量滑動條可以進(jìn)行BGM 音量調(diào)節(jié),點(diǎn)擊清除存檔按鈕,確定后即可清除本地最高分存檔. 測試幫助和說明按鈕,點(diǎn)擊幫助和說明按鈕,會彈出幫助彈窗和說明彈窗,兩個彈窗對應(yīng)的信息不同. 測試開始和退出按鈕,由于這兩個按鈕指向性較強(qiáng),也不需要配套的彈窗提示,所以采用直接跳轉(zhuǎn)的方式,如果點(diǎn)擊了這兩個按鈕就會直接實(shí)現(xiàn)對應(yīng)的功能. 點(diǎn)擊開始按鈕后,游戲進(jìn)入到了選擇關(guān)卡界面,點(diǎn)擊退出按鈕后,游戲會直接退出.
進(jìn)入選擇關(guān)卡界面后,測試關(guān)卡選擇的表現(xiàn)動效,當(dāng)玩家不點(diǎn)擊關(guān)卡,而是在關(guān)卡選擇名稱上進(jìn)行滑動時,會有白色跟動塊進(jìn)行跟動,以此表現(xiàn)當(dāng)前查看的關(guān)卡信息具體關(guān)卡指示. 在關(guān)卡選擇界面,點(diǎn)擊對應(yīng)的關(guān)卡會跳轉(zhuǎn)到對應(yīng)的關(guān)卡中,點(diǎn)擊返回會返回主界面.
在新手關(guān)卡中右上角有幫助按鈕,點(diǎn)擊后會彈出幫助彈窗,里面記錄了游戲的所有詳細(xì)信息,玩家可以點(diǎn)開對應(yīng)的模塊查看,經(jīng)過測試沒有問題.
在所有關(guān)卡中,點(diǎn)擊ESC 鍵可以暫停游戲,并打開退出設(shè)置框,可以進(jìn)行設(shè)置,或返回主界面,點(diǎn)擊確定后游戲返回主界面.
除了在幻境迷蹤關(guān)卡中,玩家擁有跳躍的地圖功能,其余關(guān)卡玩家都是通用的戰(zhàn)斗功能. 首先測試通用戰(zhàn)斗功能,鍵入方向鍵,角色就可以在地圖中移動,移動過程中碰撞到地圖搭建時設(shè)置的空氣墻會停止移動.跟隨角色的錘子鉸鏈系統(tǒng)運(yùn)行正常,在角色產(chǎn)生轉(zhuǎn)動物理效果時,錘子和鏈子會跟隨角色的轉(zhuǎn)動效果進(jìn)行運(yùn)動,呈現(xiàn)出一種旋轉(zhuǎn)甩錘子的效果,并且錘頭擊中怪物或墻時有真實(shí)的物理反饋.角色與敵人碰撞會造成生命值減少,并播放對應(yīng)的生命值減少特效;而角色與道具碰撞時,會獲得道具,并讓角色附帶道具特效,在碰撞道具時,也會播放碰撞道具特效.在幻境迷蹤關(guān)卡中,玩家鍵入Space 空格鍵,可以在三維空間中進(jìn)行跳躍,跳躍到空氣墻的高度時,會被擋住,測試證明跳躍功能正常. 幻境迷蹤關(guān)卡跳躍展示如圖17 所示.
圖17 幻境迷蹤關(guān)卡跳躍Fig.17 Unreal Track level jump
首先測試通用戰(zhàn)斗UI 聯(lián)動效果,在所有場景中,拾取道具會觸發(fā) buff 效果,在 UI 層級表現(xiàn)為數(shù)字buff 持續(xù)時間計(jì)數(shù)器數(shù)字增加,或星星數(shù)目和分?jǐn)?shù)增加,或生命值愛心增加;被怪物攻擊生命值愛心會減少.經(jīng)過測試,拾取時間增強(qiáng)器道具,時間增強(qiáng)器計(jì)數(shù)會增加,然后拾取動能增加、移速增加道具,相應(yīng)增加的持續(xù)時間也會增加,說明三樣道具的功能和UI 聯(lián)動沒有問題.拾取生命恢復(fù)道具,生命值愛心會增加,拾取加分星星道具,分?jǐn)?shù)和星星數(shù)目都會增加,說明兩樣道具的功能和UI 聯(lián)動沒有問題.
測試新手關(guān)卡場景功能,在該場景中移動和拾取道具可以獲得相應(yīng)的效果,攻擊怪物可以將怪物消滅,并在一段時間后怪物會刷新. 點(diǎn)擊幫助按鈕可以彈出幫助界面,并且游戲會暫停. 在新手關(guān)卡受到怪物攻擊到?jīng)]有生命值時,會彈出游戲建議,讓玩家去游玩其他關(guān)卡,表明新手教學(xué)關(guān)卡已經(jīng)結(jié)束.
圖18 戰(zhàn)斗UI 聯(lián)動Fig.18 Combat UI linkage
測試環(huán)境迷蹤關(guān)卡,在該場景中可以在三維空間中移動,可以跳躍,在下落到模型位置時可以站立在模型位置上,可以在各個道具刷新點(diǎn)位獲取道具,獲得相應(yīng)的buff 效果,擊殺怪物后可以得分. 倒計(jì)時功能初始60 秒,隨著時間的推移時間計(jì)數(shù)器會數(shù)字降低,在時間結(jié)束后會記錄最高分.
測試地獄行者關(guān)卡,在該場景中搜集足夠的星星就可以通關(guān),觸碰星星和道具可以獲得對應(yīng)的效果,在場景中尋找星星時,消耗的時間也會在時間計(jì)數(shù)器中數(shù)字增長,尋找完成足夠的星星后游戲就會結(jié)束,并記錄最高分.
測試神圣角斗關(guān)卡,在該關(guān)卡中需要與消滅許多敵人,盡可能地生存更久的時間. 在該場景中沒有時間計(jì)數(shù)器,取而代之的是階段標(biāo)識器,在達(dá)到300 秒戰(zhàn)斗時長后,就會進(jìn)入IMPOSSIBEL 階段,怪物會刷新出最高等級的怪物,并且刷新時間會變短. 在該場景中,拾取道具可以獲得對應(yīng)的效果,并會在一定時間后刷新.怪物會不斷的從場景四周刷新,并向玩家前進(jìn),在一定時間后刷新出的怪物會出現(xiàn)等級變化.在生命值消耗完后會進(jìn)行分?jǐn)?shù)結(jié)算.
圖19 關(guān)卡場景游戲記錄展示Fig.19 Level scene game record display
本文主要研究了基于Unity3D 游戲引擎,關(guān)于體素建模以代碼提高游戲性的開發(fā)和應(yīng)用,并重點(diǎn)闡述了體素模型與其貼圖等配套工藝的建立,在Unity3D游戲引擎中對場景的還原與搭建,使用C#腳本進(jìn)行功能設(shè)計(jì)與交互串通等. 使用MagicalVoxel 輕量級體素建模渲染一體工具,結(jié)合國內(nèi)外優(yōu)秀體素游戲模型參考,以及對前期策劃美術(shù)需求進(jìn)行剖析,進(jìn)行角色、道具、場景等游戲中的核心元素進(jìn)行細(xì)致的實(shí)體建模.依托Unity3D 引擎的功能,將制作好的系統(tǒng)打包導(dǎo)出成exe 可執(zhí)行文件,并結(jié)合現(xiàn)有硬件環(huán)境,對體素游戲系統(tǒng)整體進(jìn)行測試實(shí)驗(yàn),并記錄保存了實(shí)驗(yàn)過程中采集到的相關(guān)數(shù)據(jù),驗(yàn)證體素游戲系統(tǒng)整體的可靠性和游戲表現(xiàn)能力,并實(shí)現(xiàn)了基于Unity3D 游戲引擎的體素游戲系統(tǒng)的開發(fā)與驗(yàn)證,完成了通過玩法設(shè)計(jì)對體素游戲整體游戲表現(xiàn)能力的革新,提供給玩家和開發(fā)者對于今后如何使用體素進(jìn)行游戲開發(fā)和體驗(yàn)一個完整的建議.