發(fā)布時(shí)間:2024-04-09 10:32:03 瀏覽量:209次
最近和朋友組成了一個(gè)不大的工作室,正在開(kāi)發(fā)一款暫定名為《大荒鬼差》的游戲??梢哉f(shuō)的部分是,這是款注重探索、感知看不見(jiàn)的鬼,以及使用各種機(jī)關(guān)陷阱捉妖抓鬼的游戲。游戲中有很多關(guān)于對(duì)鬼感知的設(shè)計(jì),其中一個(gè)細(xì)節(jié)設(shè)定是:玩家在鬼附近時(shí),會(huì)有心跳聲強(qiáng)化氛圍、提供反饋——越是接近鬼,心跳越強(qiáng)烈。心跳既要營(yíng)造緊張感,同時(shí)還要給玩家提供足夠的信息,且聽(tīng)起來(lái)不違和、不死板。作為整個(gè)游戲第一塊與聲音相關(guān)的部分,我安排自己來(lái)做實(shí)現(xiàn)(非常有私心地想自己玩玩新的東西)。
首先,尋找一個(gè)心跳的音效。瀏覽過(guò)收藏的各種免費(fèi)商用的音效網(wǎng)站后,找到了一個(gè)非常干凈的心臟兩連跳音頻,它的波形也很像心跳。
導(dǎo)入 UE,直接修改播放速度,搞定了。輕松愉快......嗎?
并沒(méi)有。實(shí)際上,直接播放音頻是沒(méi)有播放速度這個(gè)選項(xiàng)的,對(duì)于音頻,直接的修改選項(xiàng)只有音量與音高。想要心跳加快,還需要引入其他的系統(tǒng)。
在多個(gè)版本的迭代中,UE 提供了多個(gè)聲音處理系統(tǒng),先用相對(duì)較老但也更簡(jiǎn)單易用的 Sound Cue 試一下。
官方文檔在這里:https://docs.unrealengine.com/5.2/zh-CN/sound-cues-in-unreal-engine/
與 UE 中絕大部分編輯器一樣,Sound Cue 也有一個(gè)節(jié)點(diǎn)化的編輯界面。整個(gè)系統(tǒng)支持的節(jié)點(diǎn)并不多,如下圖:
可以看到,沒(méi)有可以直接調(diào)節(jié)音頻播放速度的節(jié)點(diǎn)。為了讓心跳加速,我們要自己再想點(diǎn)辦法。
先拆解一下心跳聲音的構(gòu)成方式。心臟循環(huán)(躍動(dòng))一次會(huì)產(chǎn)生兩個(gè)聲音,分別是收縮和舒張,通常收縮的聲音更厚重,舒張的聲音則相對(duì)弱一些。其中時(shí)間間隔也有變化,同一次心臟跳動(dòng)的收縮與舒張的聲音間隔,比兩次心跳之間的時(shí)間間隔更短。這個(gè)時(shí)間比例基本在 1:2 左右。
根據(jù)我們的結(jié)論,先用 Logic Pro 將之前的音頻進(jìn)行拆解。
于是得到了兩個(gè)收縮音效與兩個(gè)舒張音效。
這樣拆開(kāi)之后,還額外帶來(lái)了一個(gè)好處:如果以一次收縮一次舒張作為一個(gè)完整的心跳循環(huán),拆開(kāi)之后的音頻一共可以產(chǎn)生四種不同的排列組合。每次心跳的時(shí)候隨機(jī)播放一種組合,可以盡可能減少玩家對(duì)重復(fù)聲音的厭倦,讓整個(gè)音效聽(tīng)起來(lái)不那么死板。
確定了方案,我們來(lái)看在 Sound Cue 中的具體實(shí)現(xiàn)方式。
分別導(dǎo)出剛剛的 4 個(gè)音頻,導(dǎo)入 UE,拖入到 Sound Cue 的編輯界面;
收縮音效一組,舒張一組,分別連接到 Random(隨機(jī))節(jié)點(diǎn),這樣每次播放的時(shí)候會(huì)隨機(jī)選取一個(gè)收縮音效和一個(gè)舒張音效;
我第一次的想法是播完收縮音效后播放舒張音效,所以使用了 Concatenator(串聯(lián)器)節(jié)點(diǎn)。但是根據(jù)前面的分析,收縮與舒張之間的時(shí)間、舒張與下一次收縮之間的時(shí)間都需要調(diào)節(jié),按當(dāng)前設(shè)計(jì),收縮與舒張的間隔只能增加不能減少,所以 Concatenator 不能滿足需求;
能夠滿足需求的方式是使用一個(gè) Mixer(混音器),加一個(gè) Delay(延遲)節(jié)點(diǎn),讓舒張音效通過(guò) Delay 節(jié)點(diǎn)延后一小段時(shí)間播放,再將兩個(gè)有所錯(cuò)位的音頻連入同一個(gè) Mixer;
現(xiàn)在已經(jīng)構(gòu)成了一次完整的心跳,Sound Cue 支持在節(jié)點(diǎn)上直接試聽(tīng)當(dāng)前節(jié)點(diǎn)的結(jié)果,此時(shí)在 Mixer 節(jié)點(diǎn)上試聽(tīng),多次播放就可以聽(tīng)到多種不同的心跳效果;
因?yàn)槲覀兊男奶且粋€(gè)連續(xù)音效而不是單次效果,所以在獲得了單個(gè)心跳音效后,我們還需要再增加一個(gè) Delay 來(lái)表示兩次心跳之間的間隔,接著再連接一個(gè) Loop(循環(huán))節(jié)點(diǎn),最終連上輸出節(jié)點(diǎn)。此時(shí)播放整個(gè) Sound Cue 效果,就可以聽(tīng)到無(wú)限延續(xù)的心跳聲;
要加快心跳,只需要修改兩個(gè) Delay 節(jié)點(diǎn)的時(shí)長(zhǎng)。因?yàn)闀r(shí)間計(jì)算是從收縮的起始時(shí)間開(kāi)始的,所以注意,需要保持一個(gè) 1:3 的比例。
回到最開(kāi)始的需求?,F(xiàn)在的心跳音效已經(jīng)比較生動(dòng)了,也有了可以控制速度的方式,接下來(lái)就需要將這個(gè)音效交給游戲程序,根據(jù)情況計(jì)算并設(shè)置心跳速度即可。
然而事情沒(méi)有這么簡(jiǎn)單,Sound Cue 中的數(shù)值調(diào)節(jié)只能手動(dòng)設(shè)定,UE 官方并沒(méi)有提供通過(guò)運(yùn)行時(shí)的程序控制這些變量的方法。
PS:Delay 中倒是可以設(shè)定隨機(jī)的延遲時(shí)間,但那也只會(huì)得到一個(gè)心律不齊的心跳音效。
PPS:在這款游戲里,一個(gè)心律不齊的心跳音效或許也有用武之地。
為了程序化地控制心跳速度,我們將會(huì)掏出今天的最終武器,MetaSounds 系統(tǒng)。
Unreal Engine 5 introduces MetaSounds, a high-performance audio system that provides audio designers with complete control over a Digital Signal Processing (DSP) graph for the generation of sound sources.
根據(jù)官方介紹,MetaSounds 是一個(gè)[次世代][圖形化][高性能][音頻數(shù)字信號(hào)]處理系統(tǒng)。理論上,音頻設(shè)計(jì)師可以設(shè)計(jì)出在游戲運(yùn)行時(shí)動(dòng)態(tài)處理音頻甚至生成音頻的節(jié)點(diǎn)圖。
官方文檔在這里:https://docs.unrealengine.com/5.2/zh-CN/sound-cues-in-unreal-engine/
這套系統(tǒng)完全可以從簡(jiǎn)單的波開(kāi)始,通過(guò)各種調(diào)制制造音效。但今天,我們只應(yīng)用其動(dòng)態(tài)傳入控制參數(shù)的功能,補(bǔ)全在 Sound Cue 那個(gè)方案中缺失的部分。
整體邏輯與在 Sound Cue 中一樣,兩組聲音,各自隨機(jī)選擇一個(gè),給舒張音效加上 Delay,再用 Mixer 一起輸出,循環(huán)起來(lái)就是心跳音效。接下來(lái)重點(diǎn)說(shuō)一下不同的部分:
首先是音頻的導(dǎo)入方式,MetaSounds 采用的是參數(shù)化的輸入,所以音頻素材是類(lèi)型為` Wave Asset` 的輸入?yún)?shù),由于我們要在多個(gè)音頻中隨機(jī),所以最終是參數(shù)類(lèi)型為 Wave Asset 的數(shù)組(我們需要收縮與舒張各一個(gè)數(shù)組);
其次需要定義一下調(diào)節(jié)心跳速率的變量。根據(jù)之前的設(shè)計(jì),心跳速度使用兩個(gè) Delay 的時(shí)間來(lái)定義,類(lèi)型是時(shí)間,又因?yàn)槲覀兊膬蓚€(gè)時(shí)間間隔是有數(shù)學(xué)關(guān)系的,所以只需要定義一個(gè)參數(shù),計(jì)算另外一個(gè)就可以了(這里又用到了 MetaSounds 的一個(gè)重要功能,就是數(shù)學(xué)計(jì)算);
再次是循環(huán)的方式。Sound Cue 是在最后添加一個(gè)循環(huán)節(jié)點(diǎn),而 MetaSounds 是在整個(gè)播放邏輯之前加入 Repeat Trigger(重復(fù)觸發(fā)器)。
到這里,所需音效就基本完工了,但我們還要再補(bǔ)充兩個(gè)細(xì)節(jié)。
MetaSounds 構(gòu)造的音頻資產(chǎn)默認(rèn)是有一個(gè) OneShot(一次性)接口的,我們實(shí)現(xiàn)的心跳音效是持續(xù)不斷的,所以要將這個(gè)接口刪掉;
通常來(lái)講,隨著心跳加速,心跳的音量也會(huì)增強(qiáng),所以我們?cè)偌尤胍粋€(gè)浮點(diǎn)型的變量作為控制音量的參數(shù),連接到最終 Mixer 的增益上,整個(gè)音效就更加生動(dòng)了。
得到 MetaSounds 的資產(chǎn),我們就可以在游戲角色的運(yùn)行時(shí)邏輯中調(diào)用播放,并根據(jù)距離設(shè)定心跳間隔和音量了。這部分比較簡(jiǎn)單,但由于我們游戲中的心跳計(jì)算并不只與距離有關(guān)(稍有點(diǎn)復(fù)雜),所以采用 C++ 來(lái)實(shí)現(xiàn)。這里就不貼出來(lái)了,直接控制心跳的話可以參考這個(gè)圖。
以上就是今天的全部?jī)?nèi)容。
本篇日志記錄的,都是基于 UE 官方教程匹配己方需求的應(yīng)用,可能不是最佳的實(shí)踐,也還有很多改進(jìn)空間,但我覺(jué)得思路很有趣,使用的工具也是之前完全沒(méi)有接觸過(guò)的,所以值得記錄和分享一下。如果真的有人能看到這里,希望你能有所收獲,同時(shí)祝愿我們的游戲可以順利完工。
隨緣更新,各位有緣再見(jiàn)。
* 本文為用戶投稿,不代表 indienova 觀點(diǎn)。
熱門(mén)資訊
探討游戲引擎的文章,介紹了10款游戲引擎及其代表作品,涵蓋了RAGE Engine、Naughty Dog Game Engine、The Dead Engine、Cry Engine、Avalanche Engine、Anvil Engine、IW Engine、Frostbite Engine、Creation引擎、Unreal Engine等引擎。借此分析引出了游戲設(shè)計(jì)領(lǐng)域和數(shù)字藝術(shù)教育的重要性,歡迎點(diǎn)擊咨詢(xún)報(bào)名。
2. 手機(jī)游戲如何開(kāi)發(fā)(如何制作傳奇手游,都需要準(zhǔn)備些什么?)
?如何制作傳奇手游,都需要準(zhǔn)備些什么?提到傳奇手游相信大家都不陌生,他是許多80、90后的回憶;從起初的端游到現(xiàn)在的手游,說(shuō)明時(shí)代在進(jìn)步游戲在更新,更趨于方便化移動(dòng)化。而如果我們想要制作一款傳奇手游的
3. B站視頻剪輯軟件「必剪」:免費(fèi)、炫酷特效,小白必備工具
B站視頻剪輯軟件「必剪」,完全免費(fèi)、一鍵制作炫酷特效,適合新手小白??靵?lái)試試!
4. Steam值得入手的武俠游戲盤(pán)點(diǎn),各具特色的快意江湖
游戲中玩家將面臨武俠人生的掙扎抉擇,戰(zhàn)或降?殺或放?每個(gè)抉定都將觸發(fā)更多愛(ài)恨糾葛的精彩奇遇。《天命奇御》具有多線劇情多結(jié)局,不限主線發(fā)展,高自由...
5. Bigtime加密游戲經(jīng)濟(jì)體系揭秘,不同玩家角色的經(jīng)濟(jì)活動(dòng)
Bigtime加密游戲經(jīng)濟(jì)模型分析,探討游戲經(jīng)濟(jì)特點(diǎn),幫助玩家更全面了解這款GameFi產(chǎn)品。
6. 3D動(dòng)畫(huà)軟件你知道幾個(gè)?3ds Max、Blender、Maya、Houdini大比拼
當(dāng)提到3D動(dòng)畫(huà)軟件或動(dòng)畫(huà)工具時(shí),指的是數(shù)字內(nèi)容創(chuàng)建工具。它是用于造型、建模以及繪制3D美術(shù)動(dòng)畫(huà)的軟件程序。但是,在3D動(dòng)畫(huà)軟件中還包含了其他類(lèi)型的...
7. 3D動(dòng)漫建模全過(guò)程,不是一般人能學(xué)的會(huì)的,會(huì)的多不是人?
步驟01:面部,頸部,身體在一起這次我不準(zhǔn)備設(shè)計(jì)圖片,我從雕刻進(jìn)入。這一次,它將是一種純粹關(guān)注建模而非整體繪畫(huà)的形式。像往常一樣,我從Sphere創(chuàng)建它...
8. 如何自己開(kāi)發(fā)一款游戲(游戲開(kāi)發(fā)入門(mén)必看:五大獨(dú)立游戲開(kāi)發(fā)技巧)
?游戲開(kāi)發(fā)入門(mén)必看:五大獨(dú)立游戲開(kāi)發(fā)技巧無(wú)論您是剛剛起步開(kāi)發(fā)自己的第一款游戲,還是已經(jīng)制作了幾款游戲,本篇文章中的5大獨(dú)立游戲開(kāi)發(fā)技巧都可以幫助您更好地設(shè)計(jì)下一款游戲。無(wú)論你對(duì)游戲有著什么樣的概念,都
9. 開(kāi)發(fā)三昧游戲叫什么(三昧動(dòng)漫)
?三昧動(dòng)漫對(duì)于著名ARPG游戲《巫師》系列,最近CD Projekt 的高層回應(yīng)并不會(huì)推出《巫師4》。因?yàn)椤段讕煛废盗性诓邉澋臅r(shí)候一直定位在“三部曲”的故事框架,所以在游戲的出品上不可能出現(xiàn)《巫師4》
10. 3D打印技巧揭秘!Cura設(shè)置讓你的模型更堅(jiān)固
想讓你的3D打印模型更堅(jiān)固?不妨嘗試一下Cura參數(shù)設(shè)置和設(shè)計(jì)技巧,讓你輕松掌握!
最新文章
同學(xué)您好!