威狐小編:11月16-20日,中國unity在線技術(shù)大會(huì)以直播的形式舉行,為廣大開發(fā)者帶來了一場(chǎng)關(guān)于前沿技術(shù)和優(yōu)秀案例的在線盛宴。在11月18日晚間的游戲環(huán)節(jié)中,Tipsworks《帕斯卡契約》項(xiàng)目總監(jiān)兼美術(shù)總監(jiān)鄭成甲向開發(fā)者們?cè)敿?xì)拆解分享了《帕斯卡契約》開發(fā)過程中使用的技術(shù)以及游戲表現(xiàn)和優(yōu)化方法。
《帕斯卡契約》是蒂普斯工場(chǎng)開發(fā)的首款游戲道具,在采取類似本體游戲的買手模式的同時(shí),游戲的表現(xiàn)方式和呈現(xiàn)的最終品質(zhì)都非常優(yōu)秀,更像是3a大作。這款讓蘋果眼前一亮的游戲作為蘋果強(qiáng)大的a13仿生處理器演示游戲出現(xiàn)在蘋果2019秋季發(fā)布會(huì)上,成為首個(gè)登上史蒂夫喬布斯劇院的韓國人。
前不久《帕斯卡契約》銷量突破100萬套,成為今年首款銷量破百萬的國產(chǎn)單機(jī)游戲。在本次開發(fā)者大會(huì)上,鄭成甲就游戲的畫面表現(xiàn)、世界觀劇情以及關(guān)卡設(shè)計(jì)方面進(jìn)行了講解,讓國內(nèi)很多同行都有思考。
以下為演講實(shí)錄:
鄭成甲:您好。我是《帕斯卡契約》的總導(dǎo)演兼美術(shù)總監(jiān)。我負(fù)責(zé)整個(gè)項(xiàng)目的框架、游戲和藝術(shù)表現(xiàn)。本次分享會(huì)上,我們將從游戲制作的角度來介紹《帕斯卡契約》的創(chuàng)作過程。下面就帶大家看看在《帕斯卡契約》的創(chuàng)作過程中,我們經(jīng)歷了哪些階段。最后我舉幾個(gè)例子來解析游戲中的美術(shù)表現(xiàn)和優(yōu)化。
說到Pascal合約,先說一下我們的項(xiàng)目,最早的時(shí)候是使用unity創(chuàng)建的動(dòng)作角色扮演項(xiàng)目。最初我們使用的是Unity5.6版本,最后一年我們升級(jí)到了Unity2018。
從2016年開始研發(fā),大概三年的研發(fā)周期,制作人員從第一年的10個(gè)人一點(diǎn)點(diǎn)增加,到最后一年的30個(gè)人,整個(gè)項(xiàng)目資源的95%都是自產(chǎn)的。這就是我們公司的墻。早期,我們?cè)趬ι献隽撕芏鄧L試。其實(shí)我們?cè)缙跊]有太多的方向,所以當(dāng)時(shí)做了非常多的風(fēng)格嘗試。
接著我出了這樣的小稿,這是一組黑暗中世紀(jì)題材的概念圖。出了稿子以后,工作室里的每一個(gè)人看了稿子后覺得非常有興趣,大家出乎意料的一致,覺得方向可以試一試。
確定了目標(biāo)后,我繼續(xù)做了一些人設(shè)的細(xì)化,就有了現(xiàn)在這張圖,有劍士、女巫、貴族、獵魔人、重甲騎士這種風(fēng)格。因?yàn)槲覀儺?dāng)時(shí)只有10個(gè)人左右的人力,決定把體量控制的小一點(diǎn),我們商量了一下,做一款中世紀(jì)題材的動(dòng)作對(duì)戰(zhàn)游戲,可能是一個(gè)比較保險(xiǎn)的方案。
到了項(xiàng)目開始定初期目標(biāo),這階段我們覺得訂立的目標(biāo)始終要量力而為,訂立可實(shí)際完成的體量,訂立可實(shí)現(xiàn)的玩法,而不是說我腦子里有非常多、非常決戰(zhàn)的點(diǎn)子,但實(shí)際制作的時(shí)候處處碰壁,結(jié)果只能完成它的60%或者70%。
所以我們考慮了很多,希望把制作體量控制在一個(gè)可掌控的范圍之內(nèi),這是我們當(dāng)時(shí)做的初期聯(lián)機(jī)對(duì)戰(zhàn)demo。
10個(gè)人花了一年,做了一個(gè)已經(jīng)可以刷到手機(jī)上的聯(lián)機(jī)對(duì)戰(zhàn)模式,可以WiFi聯(lián)機(jī),就像《榮耀戰(zhàn)魂》一樣能夠?qū)崿F(xiàn)PVP,但是當(dāng)時(shí)游戲性和畫面都沒有調(diào)的很好,游戲內(nèi)容略微有點(diǎn)單薄,所以我們決定加入一些PVE元素。這是接下來為?PVE模式制作的一張場(chǎng)景設(shè)定,看起來有點(diǎn)詭異而破敗的村莊。為此我們開始思考游戲的世界觀和簡單的故事。
當(dāng)時(shí)我們做了一個(gè)所謂基地的PVE玩法,怪物不斷從遠(yuǎn)方涌過來,玩家保護(hù)基地,需要不斷的擊殺怪物獲得能量,然后用能量強(qiáng)化自身,迎接下一波怪物。這個(gè)PVE玩法現(xiàn)在看起來非常簡單,但是對(duì)于當(dāng)時(shí)的我們來說意義非常重大,因?yàn)闀r(shí)候我們終于得到了一個(gè)像樣的游戲框架,而且玩起來確實(shí)也蠻有趣,給了我們前期非常大的信心,我們看到這一步后,想想還不如把這塊好好做一做。
有幸的是場(chǎng)景最后被保存下來,就是這個(gè)場(chǎng)景。
這個(gè)場(chǎng)景現(xiàn)在是游戲最終上線后,第一關(guān)海格姆的畫面,保留了原來那塊區(qū)域,在這個(gè)基礎(chǔ)上繼續(xù)擴(kuò)展了場(chǎng)景。這個(gè)時(shí)候我們目標(biāo)比較明確,項(xiàng)目正式開始推動(dòng),就像雪球一樣越滾越大。
關(guān)于世界觀的包裝,我們有一些自己的想法,特別是做一款手游,當(dāng)游戲受到了體量的限制,我們不能去做地圖很大的這種游戲,就不可能讓玩家隨心所欲地去任何地方,玩家一定會(huì)想為什么我去不了對(duì)面那座山,我過不了對(duì)面那個(gè)河,這時(shí)候我們一定要給玩家一個(gè)合理的解釋,讓玩家覺得這是一個(gè)合理存在的世界。所以我們?cè)陧?xiàng)目上的做法,是在世界上加了一個(gè)設(shè)定,比如這個(gè)世界失去了光明,只有在有光的地方才是人類正??梢曰顒?dòng)的區(qū)域。
那么世界就需要一種發(fā)光體,可以讓故事、劇情、整個(gè)世界聚焦,非常自然。我就設(shè)計(jì)了上面的生物,它為世界帶來光明,人們依附他而活,形成了這個(gè)世界觀。
所以當(dāng)時(shí)我們決定需要一個(gè)與世隔絕被黑霧籠罩的世界。那這里生活人們的故事以及發(fā)掘這背后的秘密自然就成了劇情核心。我們創(chuàng)建的場(chǎng)景就會(huì)是生活在世界里人們的生態(tài)環(huán)境,同時(shí)也需要完整的故事鏈。主線劇情、主要的人物一點(diǎn)一點(diǎn)的添加進(jìn)來。世界觀的設(shè)定不斷完善,在整個(gè)世界觀里面不斷回滾,關(guān)卡設(shè)計(jì)也在不斷更新。最后我們得到了我們想要的故事體系和世界觀。
當(dāng)世界觀設(shè)定好以后,我希望世界中的一切體系,一些系統(tǒng),包括玩法系統(tǒng)都是服務(wù)于世界觀的。所以設(shè)計(jì)了理智系統(tǒng),這是一個(gè)絕望失控的世界,每個(gè)人都有可能在崩潰的邊緣,主角當(dāng)然也不例外。他看見瘋狂的事情,這些瘋狂會(huì)燃燒進(jìn)他的理智,他可能時(shí)時(shí)刻刻都處在理性和非理性的邊緣。
在混亂的世界中,當(dāng)理智崩潰時(shí)要遇到什么,是看見靈異的怪物,還是看到發(fā)狂的boss,還是看到背叛的隊(duì)友,這些都是通過游戲的理智系統(tǒng)所表現(xiàn)出來。但還是在一個(gè)統(tǒng)一的世界觀之下,所以這是一個(gè)完整的包裝,不是把玩法、美術(shù),、劇情全部拆開來處理。我們希望無時(shí)無刻的提醒玩家,你正處在一個(gè)瘋狂的世界中。
當(dāng)時(shí)我們有意考慮到我們就這么點(diǎn)人力,但還要想辦法節(jié)省資源和減少工作量。所以我們做的世界觀設(shè)定,是外面的世界都處在黑霧中,整個(gè)游戲都處在濃霧中,而且光源很微弱,看不清遠(yuǎn)處,所以游戲的視距就不用開的很高,不用制作一些非常繁瑣的細(xì)節(jié),也讓我們制作的實(shí)際體量確實(shí)小了很多,關(guān)于這塊我會(huì)在后面場(chǎng)景制作的環(huán)節(jié)里具體分析,
這是我們的主角團(tuán),以及動(dòng)態(tài)狀態(tài)。
在做最開始的角色設(shè)計(jì)時(shí),其實(shí)考慮過很多,比如手機(jī)屏幕比較小,人物占比較少,所以在設(shè)計(jì)的時(shí)候會(huì)把比例稍微做的夸張一點(diǎn),物件的厚度都做得比較敦實(shí),沒有特別細(xì)小的設(shè)計(jì),基本上以體塊為主,哪怕東西縮小了,在屏幕上并不是很大,還是能感受到它的體積感和體塊感。
這幾張圖基本是角色的制作流程。
原畫到高模,再到材質(zhì)的繪制。材質(zhì)繪制流程上,我們基本上用painter來對(duì)材質(zhì)進(jìn)行寫實(shí)繪制,基本上用PBR的這套基本流程,手機(jī)內(nèi)存非常寶貴的話,貼圖使用有限,我們主要把重點(diǎn)放在了材質(zhì)的調(diào)節(jié)上,在游戲引擎里面在用unity還原出來實(shí)際效果。在做的時(shí)候基本上是全尺寸貼圖,會(huì)最終會(huì)根據(jù)游戲的內(nèi)存來進(jìn)行優(yōu)化。
基本上貼圖不會(huì)專門去弄、去壓縮,像diffuse和specular可能會(huì)看情況進(jìn)行一些壓縮,主要看內(nèi)存的盈余。我們深入的研究了unity?standard的標(biāo)準(zhǔn)材質(zhì),而且Substance?Painter和unity也做了非常好的銜接,幾乎一導(dǎo)出就可以針對(duì)unity5當(dāng)時(shí)的標(biāo)準(zhǔn)材質(zhì)輸出。
最終我們用到的貼圖有三種,diffuse?Specular以及Normel。金屬度或是粗糙度,基本上是在阿爾法通道里去調(diào)整,整體來說用的是比較省資源的做法。
這是另一個(gè)角色,貝妮塔,這個(gè)角色它的特色是攻擊別人的時(shí)候,同時(shí)可以吸收別人的生命,存在身上的血瓶里,血瓶會(huì)根據(jù)它自身的攻擊,或?qū)ψ陨淼幕匮舷赂?dòng)變化。
針對(duì)血瓶,我們是用Shader graph來實(shí)現(xiàn)效果,并且隨著人物的位移,可以看到液體在里面晃動(dòng),基本上可以保持水平面的移動(dòng)。當(dāng)然這只是一半,最終實(shí)際效果要比這個(gè)好一點(diǎn)。
這是游戲中的小怪,主角團(tuán)和boss我們基本上使用了PBR的流程。
但是因?yàn)橹鹘腔?boss都是相對(duì)單數(shù)出現(xiàn),所以每個(gè)角色的材質(zhì)球的數(shù)量控制可以控制的比較準(zhǔn),我們大概做了3~4個(gè),分為武器、服裝、頭發(fā)和皮膚這幾個(gè)材質(zhì)球。普通的怪物,作為一款A(yù)CT游戲,可能會(huì)復(fù)數(shù),一個(gè)場(chǎng)景里出現(xiàn)很多,所以用的材質(zhì)相對(duì)比較簡單。
雖然用的比較簡單,但與boss是一個(gè)生產(chǎn)流程,用Substance?Painter來導(dǎo)出。只不過用的是比較傳統(tǒng)的材質(zhì)球,它的一些反射度基本上用的是一些反射環(huán)境球來模擬。
這是一個(gè)boss,游戲里會(huì)有很多這種非人性boss,給動(dòng)作確實(shí)添了很多麻煩,這個(gè)角色有300多根骨骼,但在戰(zhàn)斗場(chǎng)景里只有主角和boss,所以也是能消耗得起,而且大型 boss戰(zhàn)我們使用的都是骨骼碰撞,會(huì)根據(jù)打擊點(diǎn)的部位做出IK的收集反饋,甚至還有一些,比如這個(gè)boss的沙漏是一個(gè)弱點(diǎn)收集判斷,而小怪基本上使用的是膠囊體碰撞,所以在一個(gè)場(chǎng)景里,單個(gè)怪和很多很多怪,中間要做取舍。
場(chǎng)景制作,這里我會(huì)舉一個(gè)具體的例子,游戲中阿達(dá)米亞的場(chǎng)景,來解析它的制作流程。
從制作思路上來說,第一關(guān)結(jié)尾的時(shí)候,剛剛向玩家展現(xiàn)出了世界觀,玩家知道頭頂?shù)拇笤铝疗鋵?shí)是游戲里的巨像,正對(duì)著你。
那這一關(guān)就希望非常明確的讓玩家知道這是什么樣的世界,所以這一關(guān)的主題就是要玩家始終能看到巨像,在整個(gè)游玩過程中,希望達(dá)到的效果是,游玩過程中可以看到這個(gè)大家伙一直在你身邊行走。
大概確立了劇本以后,首先我會(huì)先出這樣的概念設(shè)計(jì)圖傳達(dá)出大的思路方向,以及確立一些主要的特殊事件場(chǎng)景,比如阿達(dá)米亞這樣的場(chǎng)景,因?yàn)榈谝魂P(guān)畫面有點(diǎn)陰暗,希望第二關(guān)可以明亮起來,但是又要有那種詭異孤寂的氣氛。思路明確了以后,就用unity的地形工具,以及簡單的石塊,快速出一個(gè)layout。這個(gè)主要是用來提供給策劃,讓他們明白整個(gè)關(guān)卡和氣氛還有大的一些結(jié)構(gòu)。
關(guān)卡策劃在看了layout和概設(shè),他可能大概就明白,像阿達(dá)米亞這樣的一個(gè)場(chǎng)景,是一個(gè)以懸崖為主題的場(chǎng)景,在接下來進(jìn)入白盒階段的時(shí)候,就不會(huì)因?yàn)槔斫忮e(cuò)誤而走偏方向。
為什么要做這一步?如果直接讓關(guān)卡來搭,很有可能氣氛上、劇情上、美術(shù)等,不能很好的結(jié)合在一起。雖然多做了一步,但是只要傳達(dá)出一個(gè)概念或給出一點(diǎn)元素后,對(duì)后期來說會(huì)省很多問題。
到了這一步,我們交給關(guān)卡設(shè)計(jì)師進(jìn)入白盒階段,在這個(gè)階段不斷的完善回滾,把角色放進(jìn)去,不斷的測(cè)試玩法、測(cè)試路線,待整個(gè)關(guān)卡驗(yàn)證完成以后,那開始用美術(shù)資源逐步的代替白盒。
這是一個(gè)當(dāng)時(shí)關(guān)卡的白盒測(cè)試,主要用來測(cè)試路線和場(chǎng)景比例,即使是這樣,有時(shí)候還是會(huì)出現(xiàn)比例問題。白盒階段要搭場(chǎng)景,一定要搭得寬大,可能會(huì)看起來有點(diǎn)空,但是在中后期,中景或者一些細(xì)節(jié)東西放進(jìn)去后,慢慢會(huì)變成比較舒適的比例。
我們?cè)谟螒蛑谱鬟^程中,確實(shí)有好多次,做白盒的時(shí)候感覺還行,但小物件一添加后,幾乎沒有戰(zhàn)斗空間,最后只能砍掉重來。所以這也是需要注意的點(diǎn),希望大家引以為戒。
場(chǎng)景的路線優(yōu)化,在階段我會(huì)要求關(guān)卡,策劃同學(xué)特別注意,因?yàn)楹竺鏁?huì)用到剔除遮擋和視錐裁剪,所以前期規(guī)劃的時(shí)候一定要特別注意,在路線設(shè)計(jì)的時(shí)候,要多轉(zhuǎn)幾個(gè)彎或者進(jìn)入室內(nèi),或者讓遠(yuǎn)處的視野被巨大的物體遮擋住。游玩路線會(huì)決定游戲后期的優(yōu)化方不方便,這主要是控制視野內(nèi)的模型面數(shù)與Draw?call。
作為手機(jī)游戲在前期規(guī)劃路線的時(shí)候,確實(shí)應(yīng)該要考慮這方面。
這就是遮擋剔除,比如這個(gè)場(chǎng)景盡量減少出現(xiàn)一條又長又直的路,或視野范圍特別寬廣的地方,比如綠色部分里露出的遠(yuǎn)景,其實(shí)運(yùn)算量能接受,更遠(yuǎn)處的景已經(jīng)被其他遠(yuǎn)處的房子剔除掉了,基本上不會(huì)參與運(yùn)算。
如果真的有特別大的需求,要做一個(gè)大視野的場(chǎng)景,一般會(huì)專門去定制,比如要做一個(gè)特別大的塔,從底層到高層也都可以看得特別清楚,只是底層會(huì)做的比較精細(xì),上面可能透掉,或者做簡化處理。
場(chǎng)景材質(zhì)我們基本上用的Substance Designer來制作,場(chǎng)景的材質(zhì)球數(shù)量控制相對(duì)比較嚴(yán)格,一個(gè)場(chǎng)景所有的材質(zhì)球在30~50之間。但是也造成了一些問題,《帕斯卡契約》本身場(chǎng)景有一點(diǎn)材質(zhì)重復(fù)過高,但這就是兩邊的取舍,要么內(nèi)存會(huì)爆,要么在視覺上做出一些妥協(xié)。
用designer來做磚墻的材質(zhì),designer的最大優(yōu)勢(shì)我覺得可以快速的連接節(jié)點(diǎn),根據(jù)需求快速修改,快速迭代,效率會(huì)非常高。
做出來的東西也可以根據(jù)實(shí)際的需要進(jìn)行修改和加工,非常節(jié)省成本,尤其是當(dāng)場(chǎng)景比較宏大,需要很多材質(zhì)重復(fù)使用時(shí),designer 制作材質(zhì)可以重新采樣,隨機(jī)生成符合美術(shù)風(fēng)格的新材質(zhì),節(jié)省了時(shí)間成本和人力成本。
我們項(xiàng)目中并沒有使用?unity的那套地表編輯器,主要是因?yàn)榈乇淼膱?chǎng)景有時(shí)候會(huì)達(dá)到3~4層,而且地表的面積相對(duì)比較窄,用編輯器比較難處理,對(duì)后期優(yōu)化也比較困難。
不過具體要看項(xiàng)目需求。如果項(xiàng)目地圖開闊或平整,?unity的地圖編輯器是相對(duì)非常成熟的。我們這里是做了一個(gè)材質(zhì)球,通過一張MASK貼圖來混合兩種地表紋理,用頂點(diǎn)色也是可以達(dá)到相同的目。
燈光這一塊,場(chǎng)景制作與場(chǎng)景光照,整個(gè)游戲其實(shí)是使用了實(shí)時(shí)燈光加烘培,加light Probe。
角色、怪物,還有場(chǎng)景里的實(shí)時(shí)燈光,這三塊燈光是分開的。主要是為了方便調(diào)整場(chǎng)景的光線。整體場(chǎng)景用的是一盞mix燈,來提供場(chǎng)景的主光線,角色和怪物用另一盞實(shí)時(shí)燈光來打整個(gè)人身上的明亮度和高光。
烘焙方面,我們主要使用的是混合燈光進(jìn)行烘焙,模式使用的是Shadow?Mask,這種烘焙模式在用的時(shí)候有一個(gè)小小的問題,它暗部被覆蓋的面積比較大時(shí),高光會(huì)被這張MASK貼圖蓋住,造成整個(gè)暗部比較平。
針對(duì)問題我們使用了兩種方法解決,一種是在場(chǎng)景本身材質(zhì)上給一個(gè)環(huán)境反射貼圖,讓材質(zhì)在暗部時(shí)看起來也會(huì)有高光和立體度。另一種是在非常特殊的情況下,在材質(zhì)上模擬反向的光,讓我們的程序員在材質(zhì)里寫了一盞反向光,它是在比較特殊的情況使用。再加上人物走進(jìn)陰影里的時(shí)候,自身會(huì)打開一盞點(diǎn)光源,我們?cè)谏蕉蠢锘蚨囱ɡ铮约耙恍┖诎档慕ㄖ?nèi)部都會(huì)這樣處理。
烘焙的時(shí)候注意的點(diǎn),就是盡可能減少lighting map張數(shù)來控制整體的Draw Call。比如像我們項(xiàng)目,用了很多的預(yù)制組件,就是Prefab,那是相同的模型和相同的材質(zhì),但是由于不會(huì)被分布在兩張不同的lighting map上,那它的Draw Call是不會(huì)合并的。這就有一個(gè)非常大的矛盾點(diǎn),如果lighting map使用過多,Draw Call可能會(huì)多。但是如果使用得少,就要控制住lighting map的尺寸,否則陰影會(huì)很模糊。所以lighting map的UVS分布,一個(gè)會(huì)造成陰影模糊,一個(gè)會(huì)造成內(nèi)存增加,這兩個(gè)需要在做項(xiàng)目時(shí),進(jìn)行一些取舍。
關(guān)于light Probe,我們主要用來給一些動(dòng)態(tài)物體附著光影,比如角色、怪物還有一些可互動(dòng)的機(jī)關(guān),后來我們發(fā)現(xiàn)場(chǎng)景里有一些特別小的物件,用烘焙的效果不是很好。
因?yàn)樾∥锛旧鞺V就很小,這張lighting map壓縮后,UV會(huì)聚焦在幾個(gè)像素點(diǎn)上,像素點(diǎn)如果沒有處理好,可能就是黑片,但如果完全不著色,這些物件在暗部和亮部的表現(xiàn)完全一樣,那就非常奇怪,物體在暗部的時(shí)候有點(diǎn)亮,它在亮部的時(shí)候可能又表現(xiàn)得非常暗,所以我們最后后期改為使用light Probe進(jìn)行著色,因?yàn)槲锛旧肀容^小,放在暗部里,本身會(huì)著一個(gè)比較暗色,其實(shí)看不大出來,反而會(huì)比烘焙的效果更好一點(diǎn)。
打光這塊,因?yàn)閳?chǎng)景重復(fù)度比較高,所以在制作的時(shí)候有一個(gè)概念,一定要用燈光來給玩家作為記憶點(diǎn),這就造成,光對(duì)我們來說非常重要,使用相同的素材,要根據(jù)打光的不同,營造出不同的場(chǎng)景氣氛,這是我們?cè)谡麄€(gè)制作場(chǎng)景中的一個(gè)難點(diǎn)。
游戲陰影這一塊分為角色陰影、場(chǎng)景陰影,還有一些其他動(dòng)態(tài)陰影。用我們投影的方法其實(shí)是一個(gè)較為通用的做法。用專門的投影相機(jī),按光照方向給場(chǎng)景、角色拍一個(gè)剪影,拍到RT貼圖上,再根據(jù)投影投射到地表上,無論再多的怪和角色,只產(chǎn)生一次Draw?Call,超出主角的范圍又不會(huì)被渲染,而且這張RT貼圖的格式設(shè)置,可以做一些處理,還可以加一些抗鋸齒等。
場(chǎng)景陰影,我們基本上用的是傳統(tǒng)烘焙陰影,其他動(dòng)態(tài)陰影,比如像云霧投射下來的陰影,基本上跟角色一樣,用RT貼圖來實(shí)現(xiàn)。場(chǎng)景里的物件動(dòng)畫,像植被、飄著的旗子這些,我們基本上是用頂點(diǎn)動(dòng)畫來完成,相對(duì)來說比較省資源。除此之外,人走到草上把草壓彎是以人物坐標(biāo)與草的位置遠(yuǎn)近,程序控制,頂點(diǎn)偏移來實(shí)現(xiàn)。
視距這塊如同前面所說,我們世界觀設(shè)計(jì)的比較討巧,整個(gè)世界處在黑霧之中,所以我們這個(gè)游戲風(fēng)格開得非常強(qiáng)。如圖例所示,這幾個(gè)紅圈幾乎都是霧氣,里面其實(shí)都可以不要有細(xì)節(jié)。
我們只要留下大石頭的剪影,還有一些建筑的剪影,其他基本上能關(guān)的都關(guān)了,這樣,我們做起來其實(shí)就是把這些所有的物品進(jìn)行分組,根據(jù)體量分組,越大的物體它的可視范圍越遠(yuǎn)。例如一些建筑剪影,或者造成整個(gè)場(chǎng)景的大石頭,越小的物體它的格式范圍越近,基本上參照這個(gè)規(guī)則,所有的物體會(huì)被分到不同的層里,然后去給每一層做一個(gè)可視范圍的設(shè)置,再加上LOD,這樣可以大大的減少消耗。
像我們這樣做了以后,其實(shí)LOD的工作量不是很大,我們游戲里L(fēng)OD用的其實(shí)并不是很多。
霧氣這一塊,霧氣分為體積霧、定制霧片和基礎(chǔ)霧。體積霧我們用一些Shader模擬的,基本上就是傳統(tǒng)God?Rays那種效果,定制霧片用渲染粒子實(shí)現(xiàn),我們游戲里的定制霧片,基本上是放到地上模擬流動(dòng)的云霧,靠近會(huì)消失,用軟粒子也不會(huì)出現(xiàn)硬邊,是比較方便的做法。
鏡頭調(diào)節(jié)這一塊,因?yàn)橛螒蚶锏臄潮N類體型跨度都非常大,針對(duì)不同的體型和怪物,我們做了一套專門調(diào)節(jié)鏡頭的工具,可以說每一種怪物,鎖定他的時(shí)候都是專門獨(dú)立去調(diào)節(jié),在這個(gè)過程中還會(huì)去考慮怪物的攻擊方式。
比如遠(yuǎn)程法師攻擊拋物線比較高,鏡頭當(dāng)時(shí)調(diào)的時(shí)候,距離和鏡頭的遠(yuǎn)近都會(huì)拉得相對(duì)比較寬一點(diǎn)。
在制作角色面部表情和口型動(dòng)畫上,我們簡單的為角色設(shè)置了22個(gè)面部骨骼點(diǎn)來實(shí)現(xiàn)游戲中面部所需要的基礎(chǔ)動(dòng)畫,口型和表情都是提前設(shè)置好的一段動(dòng)畫片段,然后根據(jù)音頻調(diào)用融合的這些片段。
Blend?Tree這一塊,對(duì)于3D游戲來說,不管是手機(jī)模擬搖桿,還是手柄搖桿,其實(shí)玩家在操控這些角色移動(dòng)的時(shí)候,都可以朝任意方向進(jìn)行移動(dòng)。例如我們當(dāng)時(shí)在設(shè)計(jì)維奧拉的時(shí)候,鎖定目標(biāo)以后的移動(dòng)方式,為了拉開和另一個(gè)角色泰倫斯的區(qū)別,我們大概設(shè)計(jì)了10種,前后左右、斜上斜下10個(gè)動(dòng)畫片段來做融合,這就是當(dāng)時(shí)維奧拉的Blend?Tree。
除了一般的走路位移動(dòng)畫之外,角色的攻擊動(dòng)畫也占據(jù)了非常大的一部分資源,其中攻擊和受擊的邏輯判斷非常重要,我們通過結(jié)合狀態(tài)機(jī)的參數(shù)制,自定義曲線取值,讓程序去分析當(dāng)前的動(dòng)畫邏輯狀態(tài),實(shí)現(xiàn)角色在攻擊動(dòng)作時(shí)的一個(gè)目標(biāo)的判斷。
比如武器判斷,根據(jù)預(yù)定的攻擊類型編號(hào),調(diào)取相應(yīng)的攻擊碰撞盒來實(shí)現(xiàn)這些做法。另外像攻擊中是否可以轉(zhuǎn)向,攻擊碰撞打開的時(shí)機(jī),連段判斷等等,我們?cè)陧?xiàng)目制作中其實(shí)是花費(fèi)了大量的時(shí)間來去調(diào)這些Curve的參數(shù),這些調(diào)整的結(jié)果都直接影響了整個(gè)游戲的手感,特別動(dòng)作游戲,這些手感的好壞都是拉這些曲線來實(shí)現(xiàn),我們整個(gè)游戲有非常多工夫是在不停的去調(diào)整這些曲線上。
我們整個(gè)角色是用了全身的IK系統(tǒng),包括人物瞄準(zhǔn)、腳步IK、收集IK等,比如說現(xiàn)在看到的這張圖就是人物站在不同的地表上,腳部骨骼會(huì)做出一些變形。
關(guān)卡制作,我們?cè)谧鲫P(guān)卡的時(shí)候,其實(shí)為敵兵制作了非常豐富的狀態(tài)機(jī)制,制作了若干種休息動(dòng)畫,隱藏的攻擊動(dòng)畫,會(huì)在整個(gè)游戲中看到有的怪物它隱藏在角落,在這偷襲,這些都是專門定制的,怪物都會(huì)有視覺和聽覺方向還有范圍。
比如這張圖里黃色的圈,就是聽覺范圍,紅色的三角區(qū)是視覺范圍,如果怪物在沒有看見你的情況下,慢走是不會(huì)驚醒他們,但是如果跑過去可能就會(huì)引發(fā)他們的攻擊。
關(guān)卡中是采用了動(dòng)態(tài)加載的方式加載怪物,加載場(chǎng)景時(shí)會(huì)把這些怪物預(yù)先放到內(nèi)存里,場(chǎng)景中放了很多點(diǎn),又放了很多專門設(shè)置過的這種顯示盒,就是這種綠色的盒子,只有角色進(jìn)入綠色的盒子范圍內(nèi)的時(shí)候,綠盒子范圍內(nèi)的怪物才會(huì)被動(dòng)態(tài)加載,這樣的話可以比較穩(wěn)妥的控制怪物的加載上線,而且也可以比較精確的控制,我想哪些怪顯示,哪些怪不用顯示。
最后談一談過場(chǎng)動(dòng)畫。說到過場(chǎng)動(dòng)畫一般是我跟編劇先聊,聊完,確定了大概的劇情,先出一個(gè)故事板,把腦子里的想法一些畫面先具像化,加上策劃以及程序一起推敲修改,這個(gè)階段主要是確定一些效果是否能實(shí)現(xiàn),如果不行,可能還要商量可行的方案,再繼續(xù)去修改故事板。
當(dāng)故事板確定以后,我們會(huì)在max里去做layout,主要是用來確認(rèn)故事結(jié)構(gòu)以及鏡頭的合理性。
我們會(huì)做一個(gè)這樣的效果,這個(gè)階段不會(huì)去加面部表情,加口型,而且會(huì)拿給配音去做參考,待他們把配音部分完成以后,確認(rèn)沒有任何問題,才會(huì)繼續(xù)添加表情和口型。
游戲中有一些比較復(fù)雜的過場(chǎng)動(dòng)畫,為了不占用過多的內(nèi)存資源,我們自定義了一套及時(shí)加載系統(tǒng),在演出完成后也可以立即釋放出游戲內(nèi)存。根據(jù)預(yù)設(shè)的攝像機(jī),調(diào)用角色I(xiàn)D以及相應(yīng)的過場(chǎng)動(dòng)畫資源,比如場(chǎng)景風(fēng)格,燈光和音效等等。同時(shí)程序也可以通過代碼來控制美術(shù)的表現(xiàn)。
Unity的Timeline功能非常強(qiáng)大,早期時(shí)候我們并沒有使用,是用笨的辦法,實(shí)現(xiàn)游戲里的一些過場(chǎng)需求。unity Timeline功能實(shí)現(xiàn)了以后,我們很早就投入去使用這個(gè)東西,發(fā)現(xiàn)使用了以后確實(shí)非常棒,效率直線提升,而且我們結(jié)合了自身的項(xiàng)目,設(shè)計(jì)了一套狀態(tài)控制器,可以通過判斷當(dāng)前操縱的角色,動(dòng)態(tài)的調(diào)用相應(yīng)的一些演出動(dòng)畫。
另外在一些簡短的動(dòng)畫中GamePlay狀態(tài)下,也可以做一些簡單的一鏡到底方式。
以上就是我為大家?guī)淼囊粋€(gè)分享,我們其實(shí)本身并沒有用一些特別復(fù)雜或自己自定義的一些功能,用的還是unity本身強(qiáng)大的那些自身功能。這些東西的怎么使用,通過今天的分享會(huì)能給大家?guī)硪恍┧伎?,以上就是我為大家?guī)淼姆窒?。謝謝。
404218