《死亡細胞》:關(guān)卡設(shè)計融合程序生成裆熙,打造隨機的Metroidvania體驗

本文為《死亡細胞》主設(shè)計師Sebastien Benard去年在Gamasutra發(fā)表的一篇探討“隨機性”和“可玩性”如何平衡和實踐的文章伍掀,原文地址戳這里刘莹。個人覺得他們在制作《死亡細胞》過程中總結(jié)的這一套方法論還是很有參考價值的,對于想做RogueLite游戲卻無從下手的開發(fā)者也很有啟發(fā)性目代,是比較難得的干貨文章屈梁。

大家好,我是Sebastien Benard榛了,目前在《死亡細胞》擔(dān)任首席設(shè)計師在讶,《死亡細胞》是一款由程序生成關(guān)卡的Metroidvania類游戲。

最近玩家和其他開發(fā)者詢問了我們很多程序隨機生成關(guān)卡質(zhì)量相關(guān)的問題霜大,也難怪构哺,最近關(guān)于游戲中程序生成隨機性的討論甚囂塵上(我:可能是無人深空的鍋)。玩家們對程序隨機生成的懷疑態(tài)度也是情有可原战坤,況且Metroidvania類游戲在人們印象中曙强,核心就是設(shè)計師們一絲不茍小心翼翼設(shè)計的關(guān)卡。好吧途茫,接下來就讓我來回答大家的懷疑碟嘴,并深度探究下我們是如何在Metroidvania類游戲中加入roguelite可重復(fù)游玩元素的。如果你更喜歡視頻而不是讀長篇的文字囊卜,我們?yōu)槟銣?zhǔn)備了一段“精煉”版本的開發(fā)日志視頻娜扇。

(我轉(zhuǎn)載到B站了,不過并沒有字幕栅组,想看的戳這里)

在介紹具體步驟前雀瓢,我想聊下我們?yōu)槭裁聪氚?strong>程序隨機生成這一因素加入到Metroidvania這種需要精細關(guān)卡設(shè)計的游戲類型里。

兩年前玉掸,當(dāng)我們開始做《死亡細胞》的初版原型時刃麸,我們遵循了傳統(tǒng)的、手動制作關(guān)卡的方式排截。但問題接踵而至嫌蚤,我們很快發(fā)現(xiàn)按照這樣的制作速度,考慮到團隊的人數(shù)和規(guī)模断傲,做完和打磨好這款游戲顯得遙遙無期脱吱。

至此之后我們知道必須得尋找一個Plan B。在做《死亡細胞》前我們開發(fā)了很多網(wǎng)頁游戲箱蝠,大部分都包含了隨機元素和程序生成的特點,所以我們算是比較熟悉程序隨機核心概念的牙瓢。除此之外,程序隨機生成也被應(yīng)用到很多叫好又叫座的游戲里:《以撒》胁附、《Minecraft》控妻、《Starbound》等等弓候。受這些游戲激勵菇存,顯而易見撰筷,我們覺得至少得做一個原型,檢測下隨機性和《死亡細胞》的化學(xué)反應(yīng)井辆。

原型很成功杯缺,在永久死亡機制之上帶來了更多的可重玩性。一個更深刻的變化是塘揣,我們發(fā)現(xiàn)這個原型從基礎(chǔ)上改變了游戲里的戰(zhàn)斗感覺亲铡。將戰(zhàn)斗的重點放到玩家的隨機應(yīng)變和反應(yīng)上奖蔓,而不是通過機械背板來過關(guān)吆鹤『湟欤總而言之搭独,這個原型的感覺很棒牙肝。

但是配椭,也存在一些問題股缸,盡管隨機刷新敵人提升了核心游戲性敦姻,但關(guān)卡設(shè)計遭受了重創(chuàng)镰惦。簡而言之旺入,隨機關(guān)卡顯得混亂沒有條理茵瘾,讓你無法感受到整體性,也沒法沉浸到游戲世界中去聘殖。

即無法完全手工設(shè)計關(guān)卡奸腺,也不滿足于完全由程序生成關(guān)卡突照,我們覺得需要尋找一個折中的方案末盔。

這里我們得謝謝《洞穴探險Spelunky》團隊陨舱,他們也面臨過相同的問題,并提供了一些有趣的解決方案益缎。如果你有興趣的話莺奔,可以戳這里簡單了解下(需要梯子才能看)令哟±總而言之颓鲜,他們把手工制作關(guān)卡程序生成混合在一起乐严,讓關(guān)卡同時具有多樣性持續(xù)性捂敌。

在講具體的技術(shù)實現(xiàn)細節(jié)前,我還想提兩個讓《死亡細胞》深受啟發(fā)的游戲。

第一個是《Faster Than Light》:即擁有程序生成的隨機性奖慌,也擁有精心安排的情節(jié)和統(tǒng)一的宇宙世界觀。我們認為它是這類游戲的標(biāo)桿。

第二個是《求生之路Left For Dead》蛛枚,哈哈,是不是沒有想到。最開始的時候,《死亡細胞》原型是一個僵尸塔防游戲宇色,我們從《求生之路》的底層理念學(xué)習(xí)了不少東西甥捺,Valve為了解決重復(fù)游玩性構(gòu)造了一個AI Director系統(tǒng)皿曲,可以根據(jù)每局不同的情況隨機擺放普通和特殊僵尸坞古。你可以戳這里了解下基本概念,還是很有意思的听怕。

一開始的時候声搁,《死亡細胞》是塔防游戲,還真是令人懷念啊

我們開始做自己的AI Director系統(tǒng)法挨,雖然那時候八字還沒一撇窃植,但我們確立遵循一個最基本的原則:這個系統(tǒng)構(gòu)造關(guān)卡時丛版,要圍繞穿插緊張刺激放松獎勵的流程偏序,來確保游戲節(jié)奏錯落有致,從而讓玩家無法自拔胖替。

總結(jié)下我們的目標(biāo):創(chuàng)建一個融合了程序生成關(guān)卡的世界研儒,具有變化多樣性和重復(fù)游玩價值豫缨,難度建立在玩家對一個持續(xù)變化關(guān)卡的反應(yīng)而不是背板上。與此同時端朵,還必須在關(guān)卡和流程中保持一致性好芭,融入世界觀。汲取之前游戲的經(jīng)驗冲呢,經(jīng)過很多次的嘗試舍败,失敗,調(diào)整和不計其數(shù)的微調(diào)后敬拓,我們總結(jié)了六大步驟邻薯,希望能作為幫助你實現(xiàn)高質(zhì)量程序生成關(guān)卡的基礎(chǔ)。

  1. 首先乘凸,我們確定好固定的元素厕诡,在這個框架內(nèi)程序生成才會施展拳腳。整體的世界地圖設(shè)計营勤,不同關(guān)卡之間如何連接灵嫌,解鎖下一個關(guān)卡的鑰匙位置等等。不管游戲的隨機數(shù)種子如何變化葛作,這些元素都是手動設(shè)計寿羞,不會變化的。


  2. 接下來赂蠢,我們手動設(shè)計了一系列的房間塊绪穆,每個房間依據(jù)其配置項,可以充當(dāng)不同的用處客年。下面是我們在軟件CastleDB中建造的一些房間示例霞幅。


    實踐中,每個房間塊的地形結(jié)構(gòu)都是為其用處而專門設(shè)計的量瓜。藏有寶箱的房間和商人房間構(gòu)造不同司恳,而這兩種房間又和戰(zhàn)斗房間結(jié)構(gòu)差別巨大。每個房間的屬性主要包括入口數(shù)量绍傲,是否有出口以及房間的用處扔傅。

    每個房間還從屬于某個大關(guān):比如在監(jiān)獄房間塊就不會用在下水道場景中。這樣確保每關(guān)有自己的特色——比如下水道場景都很狹窄烫饼,限制了跳躍和回避的作用猎塞,迫使玩家合理安排他們的操作。

  3. 好了杠纵,既然有了一堆還算可以的房間塊荠耽,現(xiàn)在需要把他們用合理、有趣的方式安排起來比藻。我們?yōu)槊總€大關(guān)創(chuàng)建一張概覽圖铝量,用抽象節(jié)點表示房間塊倘屹,顯示出其中房間塊的數(shù)目和連接順序。先添加關(guān)卡開始節(jié)點和出口慢叨,然后添加一些特殊房間(寶箱纽匙,商人等等),最后在之間添加探索和戰(zhàn)斗的房間拍谐。


    這張概覽圖作為下一步的程序生成算法的指導(dǎo)性基礎(chǔ)烛缔,定義了關(guān)卡的長度,特殊房間的數(shù)量轩拨,關(guān)卡的復(fù)雜度等等践瓷。每個大關(guān)都有張獨立的概覽圖以保持其風(fēng)格統(tǒng)一。比如比起下水道關(guān)气嫁,我們讓壁壘關(guān)更線性当窗,流程更直接。

  4. 在我們把這些條條框框和設(shè)計上的約束準(zhǔn)備好之后寸宵,我們的程序生成算法終于要登場了崖面。對于每個房間塊節(jié)點,程序在該大關(guān)的候選房間中隨機選擇一個房間梯影,并檢測是否符合概覽圖中的要求(入口位置巫员,入口數(shù)量,房間類型等等)甲棍。如果不符合简识,程序會重新嘗試另外的房間直到找到符合要求的。大功告……等等感猛,還有事情要做七扰。

  5. 玩家需要敵人來進行戰(zhàn)斗。每關(guān)的怪物數(shù)量是由每關(guān)的戰(zhàn)斗房間的戰(zhàn)斗Tile塊(我:這里應(yīng)該是每個戰(zhàn)斗房間標(biāo)記了放置怪物的戰(zhàn)斗Tile塊)決定的陪白,舉個隨機的例子颈走,在程序生成的下水道關(guān)中有250個戰(zhàn)斗塊。我們先定義每個戰(zhàn)斗房間中出現(xiàn)怪物的數(shù)量咱士,比如每5個戰(zhàn)斗塊出現(xiàn)一次立由,那整個關(guān)卡中就要放置50個怪物。


    每種怪物也有自己對應(yīng)的屬性和限制序厉,比如有些更危險的怪物每10個戰(zhàn)斗塊出現(xiàn)一次锐膜,有些精英怪一整關(guān)都不能出現(xiàn)超過一次,有些不能和其他某種怪物一起出現(xiàn)弛房,有些則需要在有較大空間方便移動的地方出現(xiàn)道盏,等等不一而論。

  6. 最后一步就是生成金幣,細胞核心和掉落物捞奕。



    好了牺堰,經(jīng)過上面的長篇大述拄轻,我們分享了自己的方法颅围,希望有人能汲取些有關(guān)程序隨機生成的思路。我也希望其他開發(fā)者們能敢于冒險勇于嘗試——像融合兩種看起來毫不相干的想法和思路恨搓。有時候會有奇效院促。

Cheers!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末斧抱,一起剝皮案震驚了整個濱河市常拓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辉浦,老刑警劉巖弄抬,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異宪郊,居然都是意外死亡掂恕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門弛槐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來懊亡,“玉大人,你說我怎么就攤上這事乎串〉暝妫” “怎么了?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵叹誉,是天一觀的道長鸯两。 經(jīng)常有香客問我,道長长豁,這世上最難降的妖魔是什么钧唐? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮蕉斜,結(jié)果婚禮上逾柿,老公的妹妹穿的比我還像新娘。我一直安慰自己宅此,他們只是感情好机错,可當(dāng)我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著父腕,像睡著了一般弱匪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天萧诫,我揣著相機與錄音斥难,去河邊找鬼。 笑死帘饶,一個胖子當(dāng)著我的面吹牛哑诊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播及刻,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼镀裤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了缴饭?” 一聲冷哼從身側(cè)響起暑劝,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎颗搂,沒想到半個月后担猛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡丢氢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年傅联,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卖丸。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡纺且,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出稍浆,到底是詐尸還是另有隱情载碌,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布衅枫,位于F島的核電站嫁艇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏弦撩。R本人自食惡果不足惜步咪,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望益楼。 院中可真熱鬧猾漫,春花似錦、人聲如沸感凤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽陪竿。三九已至禽翼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背闰挡。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工锐墙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人长酗。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓溪北,卻偏偏與公主長得像,于是被迫代替她去往敵國和親花枫。 傳聞我的和親對象是個殘疾皇子刻盐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內(nèi)容