從《植物大戰殭屍》看如何設計關卡的節奏


3樓貓 發佈時間:2022-05-31 13:35:49 作者:Ilgco2Y Language

筆者最近在做自己的一款遊戲demo,苦惱於如何設計關卡的怪物配置:
  • 每個出怪波次應該配置多少隻怪才是比較合適的?
  • 每個出怪波次應該出什麼怪,如何調整平衡?
  • 出怪的刷新間隔有何講究?
  • ……
帶著這些問題,筆者研究了一下《植物大戰殭屍》(下簡稱《PVZ》)的刷怪機制,看看其是如何去設計關卡的出怪節奏和怪物配置的。下面是正文:

關卡內節奏

《PVZ》的出怪涉及的參數比較多,筆者主要以一週目的冒險模式作為研究的主題,不考慮無盡模式和二週目,公式進行了大量的簡化,出現實際和模型不符的情況是正常的。如果讀者想更詳細的瞭解公式或者想了解無盡模式等其他關卡的話,可以去 植僵百科知識 進行了解
大體上來說,《PVZ》刷怪可以概括為,分N個波次刷新,每個波次隨機出現若干個殭屍從左向右走過來,某個波次的殭屍出怪以後,等若干秒,刷出下一個波次的殭屍。
卡池
在每一關開始,我們首先需要選出這關玩家需要應對的殭屍,這些殭屍會顯示在屏幕的右側。我們把這些殭屍的集合稱為“殭屍卡池”。之所以起這個名字,是因為每個波次的殭屍都是從這個“卡池”中隨機抽取而來,這個機制和抽卡是一樣的,下面會闡述。
每關開始右邊顯示的就是本關的殭屍卡池

每關開始右邊顯示的就是本關的殭屍卡池

抽卡
《PVZ》中,存在波次的概念,每個波次會刷出若干個殭屍。每10個波次的第十個是一個大波次,即旗幟波,會伴隨“一大波殭屍即將來襲”的提醒。一般來說,在冒險模式中,我們的關卡都是10波~30波,而在關卡的開始,遊戲會先選出前20個波次中每個波次的殭屍陣容。
這個選出每個波次的殭屍的過程被我們稱為抽卡(一般叫選卡,但筆者覺得抽卡更容易理解)。
整個流程大致是這樣的,首先我們為每個波次設定一個“戰力上限”,比如第一波的戰力上限是1,第四波的戰力上限是2,第十二波的戰力上限是4。而每個殭屍都有一個“戰力”的設定,在程序中,普通殭屍的“戰力”被設定成1,路障殭屍是2,鐵桶殭屍是4……
抽卡指的就是不斷從前面提到的殭屍卡池中抽卡,直到該波次的殭屍的“戰力”剛好等於本波次的戰力上限
比如假設卡池裡只有普通殭屍和路障殭屍,我們需要戰力總計為2的殭屍,我們就開始從殭屍卡池中抽卡。抽卡的結果帶有隨機性,我們可能第一張抽到的是普通殭屍,第二張抽到普通殭屍,這樣戰力就是2了,也可以第一張抽到路障殭屍,這樣戰力也是2。
讀者可能會問如果第一張抽到普通殭屍,第二張抽到路障殭屍怎麼辦,這個時候我們一合計,殭屍戰力超過上限2了,於是我們可以把路障殭屍放回去重新抽,直到戰力等於2為止。
那麼怎麼確認每個波次的“戰力上限”呢?《PVZ1》用一個簡單的線性函數來計算每波的強度上限,我們對這個公式做一定的簡化方便研究。
近似曲線

近似曲線

實際刷怪

實際刷怪

可以看到《PVZ1》的關卡節奏非常簡單,對於這個公式,我們可以寫成y=kx+b的形式,這樣我們就得到了遊戲關卡的兩個參數:k和b。顯然地,如果關卡設計師想提高難度,他只需要調高k和b的數值;如果關卡設計師想降低難度,他只需要降低k和b的數值即可。
然而這個曲線又是怎麼出來的呢,這點筆者猜想是《PVZ》的遊戲設計師通過反覆測試得到的,不妨從最簡單的模型開始,殺死本波次殭屍時間剛好等於這波殭屍走到最終防線的時間,以這個作為極限值推算本波殭屍的血量應該是多少比較合理。然後進一步的加入殭屍的兵種、植物的傷害等其他因素去計算和有關關卡測試,反覆調試k和b的取值得到一個最終的參數取值。
我們重新回到抽卡的過程,接下來我們要介紹遊戲關卡中的另一個參數,權重,這裡涉及到概率部分。
抽卡的時候,每種殭屍被抽到的概率是不同的。每個殭屍都有自己的選擇權重, 假設我們現在的卡池中有普僵、鐵桶,這些殭屍的總權重是4000+1000=5000,假設我們現在需要戰力和為8的殭屍組合,我們可有的選擇是2鐵桶、1鐵桶+4普僵、8普僵。可以用概率論知識算出各個組合的概率。
假如我們再加入一個路障殭屍,路障殭屍的權重為2000,那麼總權重將變成4000+2000+1000,通過簡易的抽卡模型,我們能計算出各種刷怪組合出現的概率。調節這些概率,使之平衡。
隨機選擇的殭屍一方面使得玩家的關卡體驗充滿了一定的隨機要素,這意味著每一次打關都有一部分需要根據場上形式來隨機應變的要素。也有的塔防遊戲出怪是完全固定的,遊戲設計師選擇採用隨機出怪或者是不隨機出怪,隨機要素有多大,這些問題都需要有自己的考慮,要結合具體的體驗來分析。
值得注意的是權重在遊戲中並不是一成不變的,普僵和路障殭屍的權重會隨著波次的增加而遞減,因此在後續的波次普僵數量將會減少,這點也是遊戲控制關卡難度中的一環。
刷怪間隔
簡單來說,PVZ的每個波次之間存在一個波次間隔,當本波殭屍開始出現的時候,等待X秒才會開始刷下一波殭屍。但是如果你輸出夠高,打的足夠快,在本波殭屍血量低於一定值以後就會立刻開始刷下一波殭屍。
這點很好的對玩家做了適應的設計,如果玩家殺的慢,遊戲會給予一定的時間讓玩家慢慢展開,如果玩家殺的快,那遊戲就趕快開始刷新下一波,讓玩家不至於在無聊中等待。
這個設計很好的讓會玩的玩家和沒怎麼接觸過遊戲的玩家在遊玩的時候都有很好的體驗,對於高端玩家,他們殺的足夠快,適當調快遊戲節奏,使得遊戲保持緊張,不至於感到無聊;對於不那麼會的玩家,遊戲給予了他們時間與寬容。而這一切的設計都是潛移默化的,很多玩家都未察覺。
如果想使用這種自適應難度設計,想搞清楚我們並非要把休閒玩家當成傻子,而是提供一種“技巧”。對於那些已經或多或少覺察到這個機制的玩家,他們可以充分地利用這些技巧。如果玩家發現了這個刷新規律,開局可以選擇將使用土豆雷、倭瓜這樣的作物種在後排拖延時間,以讓下一波殭屍到來更慢,以求更多的發展時間。通過拖延,鋪滿兩到三排向日葵,為後續的展開做準備。事實上在打無盡模式,瞭解這些小技巧是非常必要的。
《PVZ》這樣的自適應設計很多,有興趣的同學可以看看文末的PVZ在GDC上的演講,裡面提到了如何讓休閒玩家和硬核玩家都玩得開心的小技巧。
小結
我們可以小結一下《PVZ》怎麼設計出怪的。
首先,根據遊戲設計師的理解,為每一種殭屍設定一個“戰力值”,設計合理的刷新間隔機制。
然後,確定關卡的主題和難點,從而確定卡池以及每個殭屍權重。比如本關的目的是介紹新殭屍,應該確保新殭屍的刷新概率足夠高,或者本關的主題是考驗玩家如何應對rush,那麼卡池就應該加入海豚、撐杆跳、橄欖球等移動速度較快的殭屍。
之後,設想難度,設計合理的刷怪戰力曲線。這一點要根據玩家群來決定,如果用戶是休閒玩家,這關對他們會不會太難,如果用戶是硬核玩家,會不會覺得太無聊。
最後,反覆遊玩,優化,直到滿意為止。
舉一反三
在瞭解了《PVZ》的機制以後,我們可以舉一反三,改進《PVZ》的出怪設計來滿足我們自己的遊戲設計,這也是我們做分析所想達到的目的。
《PVZ》每次抽卡都是從本關的總卡池抽的,而我們可以改成每一波都有自己的一個卡池,從而可以到某一波固定只刷撐杆殭屍+海豚殭屍的組合。事實上,《PVZ2》就是這麼做的。
更加靈活的卡池選擇

更加靈活的卡池選擇

我們也不需要遵守《PVZ》設計的這條線性曲線,它使得關卡變得不再具有變化性,我們可以在不同的關卡採用更合理的符合我們主題的曲線。
設計出多樣的出怪曲線

設計出多樣的出怪曲線

我們還可以加入更多的AI設計,比如我們可以加入對場上局勢反應的AI,如果用戶種的豌豆射手比較多,就多刷門板殭屍(門板殭屍的門板可以防禦豌豆,但是大噴菇可以穿過門板直接攻擊)。或者發現用戶種下了高堅果,就偷偷降低撐杆跳殭屍的比重等。
不過要注意,過於不一致的變化可能會讓玩家對遊戲機制產生不信任感。種下高堅果就不刷撐杆跳殭屍可能會讓玩家感覺疑惑,從而產生“這個kuso game用賴招打贏了我”的感覺。

關卡外節奏

下面的這些研究本不是筆者本次研究的主要目的,但筆者在研究《PVZ》的時候發現的一些可以提高流程體驗的技巧。
“一大波殭屍即將到來”
這是個很微小的設計,但筆者認為在這個設計做的非常好。
這一點讓遊戲提高了策略性,減少了臨場反應,你可以看著下面那個條條知道大概什麼時候高壓波會到來。策略性,就是玩家能未來能有一個宏觀的大致規劃,如果去掉右下角這個進度條條的話,玩家就無法預測高壓波次什麼時候到來,於是會很難做出規劃。比如這波有個強力的殭屍,但我不知道下一波是不是高壓波,我是不是該用掉手上的櫻桃炸彈去處理呢?玩家甚至不知道這個遊戲什麼時候會結束。這就讓遊戲變成了根據每波殭屍隨機應變的遊戲。
策略是在計劃和應變的平衡,如果關卡的流程無法預測,那玩家就疲於用臨場反應應對,無法進行長遠的規劃。如果開局就制定好了策略,遊戲過程就變成了枯燥的執行步驟的過程。
一條連續的光譜

一條連續的光譜

當然你可以說玩家可以通過學習去理解這個出怪節奏,事實上很多塔防遊戲都沒有高壓波的提示。這不是必須的,我想要表達的是如果玩家在關卡花費了大量的時間反覆重開去記憶高壓波的位置和理解怪物的機制,就會稀釋了花在制定策略上的時間。
而且調節這一切的關鍵點就在於控制關卡的情報節奏,戰場制定策略需要情報,在PVZ的開局,他會告訴你這關會出現哪些殭屍,地形是什麼(泳池、屋頂等)。在關卡的進程中,告訴玩家未來會有幾波大殭屍靠近。你也可以讓一些怪物罰站,即“隱患”,提前瞭解“未來可能會發生什麼”。關於“隱患”的設計可以看看這篇文章
並不是說以策略為主的遊戲不能有或者要足夠少隨機應變的要素,而是要把控好一定的度。
關卡間的節奏控制
《PVZ》的每個關卡之間也有節奏的控制,可能很多玩家意識不到,實際上一週目是一個大型的引導流程。遊戲不斷的給你新植物、新殭屍、新地圖機制,玩家需要去學習和領悟這些新的機制。
《PVZ》對這個流程節奏做了很多的控制設計
  • 遊戲將簡單的機制放在前面,將複雜的機制放在後面(如禪境花園需要到很後面才解鎖),這是因為在遊戲的開始,玩家學習的意願是最弱的,因此這個時候不要給予他們太多的信息。
  • 遊戲每五關就會出現一個小遊戲或者一些別的東西,堅果保齡球這些遊戲讓玩家從塔防過程中暫時的解脫出來,避免長時間玩同一個遊戲產生疲勞。
  • 遊戲的設計非常的保守,新殭屍總是會預留2~4關來讓你瞭解和學習新殭屍的機制,並且大部分時候會給出對應的植物解。

總結

所謂的刷怪問題,即確定在某個時間某種環境下,應該刷什麼怪。《PVZ》的做法在於設定好殭屍的戰力,規定每個波次的戰力上限(節奏),隨機選擇殭屍,在策略和臨場反應之間取得一個平衡,使得關卡富有趣味。
《PVZ》中具有一些自適應的難度調控,比如它沒有選擇將波次固定在某一個時間點去刷,而是玩家打的越快,下一波的出現的就越早,同時滿足了高端玩家和休閒玩家的需求。
通過研究《PVZ》的這種簡單模型,能幫助我們構造我們的更復雜模型。希望能對各位有所幫助。

© 2022 3樓貓 下載APP 站點地圖 廣告合作:asmrly666@gmail.com