周正 司占軍 秦雷
摘要:如今的國(guó)內(nèi)游戲市場(chǎng)多以移動(dòng)游戲?yàn)橹?,單機(jī)、主機(jī)游戲比重占比較少,在畫面表現(xiàn)和游戲創(chuàng)意玩法上與國(guó)外游戲存在較大差距,開放世界游戲是現(xiàn)在主流的游戲模式,這種模式可以給玩家?guī)?lái)足夠的自由度,玩家的不同選擇會(huì)導(dǎo)致游戲任務(wù)結(jié)局的不同。該文基于Unity引擎設(shè)計(jì)并制作一個(gè)開放世界類型游戲,使用了Unity的HDRP管線,然后通過(guò)3dsMax、Blender來(lái)制作模型動(dòng)畫,通過(guò)Unfold3D來(lái)對(duì)模型進(jìn)行展UV操作,使用Photoshop來(lái)對(duì)游戲中的圖像元素進(jìn)行制作。最后使用C#語(yǔ)言腳本實(shí)現(xiàn)游戲邏輯,最后在Unity引擎制作游戲并將其發(fā)布。
關(guān)鍵詞:開放世界類型游戲;HDRP;Unity3D
中圖分類號(hào):TP37 文獻(xiàn)標(biāo)識(shí)碼:A
開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
文章編號(hào):1009-3044( 2020122-0001-02
在開放世界型游戲中,玩家可以自由地在場(chǎng)景中進(jìn)行漫游,可以有選擇性地完成任務(wù),這種游戲也被稱為“漫游式”游戲。由于自由度高且可玩性較強(qiáng),如今開放世界游戲設(shè)計(jì)模式已經(jīng)廣泛被運(yùn)用到各大廠商游戲作品中。然而國(guó)內(nèi)游戲中使用開放世界游戲模式設(shè)計(jì)的游戲少之又少,刨除大部分移動(dòng)手機(jī)游戲,剩余的RPG游戲中,游戲模式多以線性劇情為主,游戲可玩性較差。
本文采用Unity引擎進(jìn)行制作,主要研究?jī)?nèi)容為在Unity如何開發(fā)開放世界類游戲和游戲優(yōu)化上,包括計(jì)算機(jī)編程、鏡頭運(yùn)用、動(dòng)畫設(shè)計(jì)制作、平面設(shè)計(jì)以及游戲關(guān)卡等方面。另外,高清渲染管線(HDRP)的應(yīng)用,相比于以往的默認(rèn)管線,在圖像的繪制和表現(xiàn)上具有較大的提升。
1 開發(fā)環(huán)境及軟件
Unity開發(fā)環(huán)境為Windowsl0專業(yè)版,英特爾Core(TM)i7-6900k CPU3.20GHz,32G內(nèi)存,64位操作系統(tǒng)。另外游戲制作還用到了Autodesk 3ds Max 2016,Adobe Photoshop CC 2018,Blender, Visual Studi0 2019 Community,Unfold3D等軟件。
2 游戲設(shè)計(jì)思路
本次開放世界類型游戲的整體思路由以下幾個(gè)部分組成,使用3ds Max以及Blender進(jìn)行建模,使用Photoshop進(jìn)行平面素材的設(shè)計(jì)與制作,使用Unity引擎中的UGUI工具完成交互部分,在Unity中完成游戲場(chǎng)景搭建,以及C#語(yǔ)言實(shí)現(xiàn)游戲邏輯功能。本次設(shè)計(jì)的整體思路流程圖如圖1所示。
3 開放世界類型游戲的設(shè)計(jì)與制作
3.1 模型制作和貼圖繪制
使用3ds Max制作的模型主要為人物模型,由于整體的畫風(fēng)屬于Lowploy風(fēng)格,所以在人物建模上可以有效地縮短制作時(shí)間,制作完成后將三維模型導(dǎo)出為.obj格式的文件并導(dǎo)人Unfold3d軟件進(jìn)行UV展開。使用Blender2.8制作Lowploy風(fēng)格的房屋樹木等場(chǎng)景,因?yàn)锽lender在2.8版本的雕刻模式可以更快地實(shí)現(xiàn)Lowploy風(fēng)格的制作。
接下來(lái)將展開UV的模型文件導(dǎo)入SubstancePainer中去,將貼圖的大小設(shè)置為2048*2048大小,創(chuàng)建成功后如圖2所示。SubstancePainter可以將不同的圖層疊加,生成最后的貼圖,各圖層之間可以添加蒙版,可以對(duì)相應(yīng)區(qū)域進(jìn)行遮罩處理。在SubstancePainter中可以使用智能材質(zhì),智能材質(zhì)可以直接拖拽到模型上,添加到模型上時(shí)會(huì)自動(dòng)展開成不同的層級(jí)。
3.2 游戲UI設(shè)計(jì)
本次制作的游戲整體風(fēng)格為L(zhǎng)owploy風(fēng)格,游戲名稱命名為《紙屆》,所以整體的風(fēng)格設(shè)計(jì)偏紙上涂鴉。因此需要對(duì)大量的圖像進(jìn)行手繪,從而使得整體效果與游戲風(fēng)格相匹配。游戲中含有的UI系統(tǒng)包括主頁(yè)、設(shè)置界面、背包系統(tǒng)、角色面板等,制作過(guò)程在Photoshop中完成。
3.3 場(chǎng)景搭建
將模型導(dǎo)入U(xiǎn)nity中后,需要?jiǎng)?chuàng)建材質(zhì)球。在Assets中創(chuàng)建相應(yīng)的文件結(jié)構(gòu),把模型資源放在Arties文件夾中,并在其中創(chuàng)建Models文件夾并創(chuàng)建Material,由于工程采用HDRP,所以材質(zhì)使用名稱為“HDRP/Lit”的著色器。創(chuàng)建完對(duì)應(yīng)材質(zhì)球后,需要對(duì)其屬性進(jìn)行修改。首先對(duì)SurfaceType進(jìn)行設(shè)置,如果需要呈現(xiàn)透明效果的話,將該屬性設(shè)置為Transparent。在SurfaceInputs屬性分類中,Base Map屬性可以改變材質(zhì)球的顏色,可以將材質(zhì)球設(shè)置為純色,也可以將其設(shè)置為一張紋理貼圖,Metal-Iic和Smoothness屬性可以對(duì)材質(zhì)球的金屬度和光滑度進(jìn)行設(shè)置。制作完材質(zhì)球后,把材質(zhì)球賦予模型,將每個(gè)模型組建變?yōu)轭A(yù)制體,將預(yù)制體拖入場(chǎng)景,并擺放到合適的位置,制作完成后如圖4所示。
3.4 游戲邏輯腳本編寫
代碼首先要實(shí)現(xiàn)的功能是對(duì)游戲角色的控制,包括使用鍵盤完成行走、加速跑、跳躍功能,以及使用鼠標(biāo)實(shí)現(xiàn)角色的旋轉(zhuǎn)等。以跳躍功能為例,需要檢測(cè)玩家是否位于地面,首先要以游戲角色下方為原點(diǎn),向下發(fā)射一條有長(zhǎng)度的射線,如果該射線檢測(cè)到碰撞物體為地面的話,證明角色現(xiàn)在位于空中,該代碼的實(shí)現(xiàn)方式如下:
RaycastHit hitlnfo;
#if UNITY_EDITOR
Debug. DrawLine(transf'orm. position+ (Vector3. up*O.lf),transform. position+(Vector3. up*0.1f)+(Vector3. down*In—GroundCheckDistance》;
#endif
if (Physics. Raycast(transform. position+(Vector3. up*O.lf), Vector3.down, out hitlnfo,m_GroundCheckDistance》
{
m_GroundNormal= hitlnfo.normal;
m_lsGrounded= true;
m_Animator.applyRootMotion= true:
)
elsef
m_IsGrounded= false:
m_GroundNormal= Vector3.up;
m_Animator.applyRootMotion= false;
)
游戲中NPC的行為通過(guò)BehaviorTree插件來(lái)實(shí)現(xiàn)。該插件主要功能為輔助創(chuàng)建電腦角色的行為樹,優(yōu)點(diǎn)在于可以使游戲中NPC的行為可視化。首先打開Behavior Designer面板,選擇需要添加行為的電腦角色,點(diǎn)擊創(chuàng)建行為樹,首先創(chuàng)建一個(gè)Se-quence節(jié)點(diǎn),該節(jié)點(diǎn)為順序節(jié)點(diǎn),當(dāng)其下的子節(jié)點(diǎn)執(zhí)行返回為真時(shí),該節(jié)點(diǎn)為真,結(jié)束行為樹,然而當(dāng)節(jié)點(diǎn)為假時(shí),繼續(xù)執(zhí)行下一節(jié)點(diǎn),所有節(jié)點(diǎn)均為假時(shí),此節(jié)點(diǎn)的返回值為假。
之后再新建兩個(gè)Sequence節(jié)點(diǎn),實(shí)現(xiàn)NPC在兩點(diǎn)之間的移動(dòng),分別在兩個(gè)節(jié)點(diǎn)之下再添加Seek節(jié)點(diǎn)和Wait節(jié)點(diǎn),Seek節(jié)點(diǎn)將實(shí)現(xiàn)該NPC移向目標(biāo)點(diǎn)的行為,而Wait節(jié)點(diǎn)則實(shí)現(xiàn)了NPC停留的功能,制作完畢的行為樹如圖5所示。然而此時(shí)進(jìn)行播放,并不會(huì)達(dá)到預(yù)期效果,行為樹的Seek節(jié)點(diǎn)完成之后,并不會(huì)繼續(xù)執(zhí)行下一個(gè)行為,而是直接返回,此時(shí)需要將Sequence節(jié)點(diǎn)的Abort Type設(shè)置為Self,此時(shí)當(dāng)其中一個(gè)子節(jié)點(diǎn)完成后,將繼續(xù)按順序執(zhí)行下個(gè)一子節(jié)點(diǎn),而不會(huì)像之前一樣直接返回,此時(shí)已經(jīng)完成了NPC的行為樹[1]。
3.5 測(cè)試與發(fā)布
在制作完畢之后,需要對(duì)游戲進(jìn)行多次測(cè)試,包括場(chǎng)景地圖的搭建,UI貼圖,游戲角色控制的流暢度以及相關(guān)的代碼邏輯等,找到游戲中存在的Bug,然后對(duì)其進(jìn)行修復(fù),之后在Unity中將其發(fā)布到PC平臺(tái),在File菜單欄下找到Buiding Setting,再設(shè)置相關(guān)參數(shù)之后點(diǎn)擊Build即可。
4 結(jié)束語(yǔ)
根據(jù)國(guó)外游戲設(shè)計(jì)發(fā)展趨勢(shì),開放世界游戲?qū)⒅饾u成為一種主流關(guān)卡設(shè)計(jì)模式,它可以減少過(guò)多的可視化場(chǎng)景加載,減弱地圖邊界的存在,提升了玩家玩游戲時(shí)的沉浸感。另外,游戲采用Unity最新的高清管線(HDRP)進(jìn)行制作,在性能優(yōu)化和畫面表現(xiàn)力上要整體好于默認(rèn)管線,因此基于Unity技術(shù)開發(fā)開放世界類游戲非常具有前瞻性。
參考文獻(xiàn):
[1]何賽,游戲人工智能關(guān)鍵技術(shù)研究與應(yīng)用[D].北京:北京郵電大學(xué),2015.
【通聯(lián)編輯:謝媛媛】
作者簡(jiǎn)介:周正(1996-),男,山東棗莊人,碩士,研究方向?yàn)樘摂M仿真技術(shù);司占軍(1971-),男,河北人,教授,碩士,研究方向?yàn)閿?shù)字媒體技術(shù);秦雷(1997-),男,學(xué)士,研究方向?yàn)閿?shù)字出版。