作者: 偶爾喝咖啡 8年游戲策劃經驗,5年制作人經驗,現任某中型手游公司工作室負責人。擅長卡牌和休閑類游戲。策劃方向偏重于核心玩法和數值設定。
筆者的上篇拙作《三消游戲的自動關卡測試機制》觍顏發布后,很多行業的朋友與筆者進行了探討,令筆者受益頗多。很多同學提到了一個相同的問題:在同一個關卡內,隨著玩家在單一關卡內失敗次數的增加,是否會通過一些算法來降低難度,避免玩家長時間的卡在一個關卡上?今天,筆者想就這個問題給大家一些參考的思路。
行業內有沒有使用難度動態調整算法的游戲?
以目前為止筆者的了解,市面上主流的推圖式三消游戲,絕大部分是沒有使用這種動態難度算法的。
但是筆者確實知道曾經有一款三消游戲使用過這種算法:澳大利亞研發商Infinite Interactive于2007年推出的《Puzzle Quest(戰神的挑戰)》。這款產品曾經影響過行業內相當一批研發人員,開創了三消+RPG的玩法先河,很多人甚至認定《Puzzle&Dragons》在設計上多方參考了《Puzzle Quest》。
《Puzzle Quest》
《Puzzle Quest》是一款基于PVE對戰的三消RPG游戲,玩家與敵人輪流移動,消除元素的同時攻擊敵人,積累能量,釋放技能。在這款游戲中,玩家如果多次敗于某個敵人,你會很明顯的發現,敵人的AI發生了明顯的下降,他的移動邏輯從高度AI性變成了昏招不斷。
當然,《Puzzle Quest》的動態難度算法調整的是敵人AI。
有沒有其他方法來動態調整關卡難度?
我們知道,市面上當前主流的推圖消除游戲,采用的是周期性更新關卡的機制。一般來講,一款良性運作的游戲會在每個月更新1~2個關卡版本,新增15~30個左右的新關卡,以及1~2個新的特殊元素。
某些游戲研發商為了控制玩家進度,同時避免玩家流失,會使用這樣的方法來調整難度:
當研發商新更新15個關卡(例如更新241~255關時),他會根據前一段時間的運營數據,手動調整181~210關的難度。這一手動調整的基本數值邏輯是:將原本通過率預期為a%的關卡調整為通過率預期b%(b>a)。
難度動態調整算法可以調整的維度
首先我們需要討論一個問題:如果我們要做難度調整算法,我們希不希望玩家知道這件事情?
如果玩家知道這個事情,他有充分的信心早晚會通過這一點,他會不會在某個特定沖動(例如一個卡了很久的關卡只差一步就能通過)的時候選擇付費?
如果玩家知道這個事情,他會不會在一個較難關卡的前期抱著完全不抱希望的心態亂玩而只為降低關卡難度?(這種心態事實上會降低他的游戲過程體驗)
如果玩家知道這個事情,他應該可以同時估算出關卡難度下降的大致曲線,這也就意味著他主觀上知道了自己會在這個關卡上卡住十幾次甚至幾十次,這會不會使他的絕望體驗提前爆發?(很多玩家內心深處是認為自己可以三五次甚至一次就通過關卡的,只是在反復嘗試的過程中沉浸而事實上忽略了自己反復嘗試的次數)
對于這個問題,筆者并沒有絕對的答案,但是筆者會非常傾向于不讓玩家知道我們在動態調整難度,而筆者的難度調整算法也是基于這樣一個前提設計的。
玩家無法顯性看到的特性元素包括:
1.關卡初始的局面隨機
最簡單的算法是,當玩家單一關卡失敗超過10次后,每次進入關卡時,有很大概率生成形如下圖的局面:
很容易形成強力特殊元素的局面參考
即相當于在關卡初期附贈玩家一個(或多個)強力特殊道具。
這一方式簡單,直接,易于實現,但比較容易被玩家發現。同時,這一算法比較難以實現逐步的難度降低,對于某些過難的關卡可能并不能完全達到目的。
2.關卡中掉落生成概率隨機
在三消游戲中,每一步消除必然意味著游戲池內形成了一定數量的元素空缺,需要在上方生成新的消除元素并下落。這一消除算法一般基于該關卡的一個基本的掉落概率設定(例如:紅,黃,綠,藍,紫色1:1:1:1:1等概率生成)。而當玩家卡在一個關卡一段時間后,我們可以通過以下幾種方式來調整這一初始概率:
a)增加目標元素的概率。在下圖《開心消消樂》的關卡例子里,我們可以增加紅,黃,藍的概率而減少其他顏色的概率。
《開心消消樂》
b)局部隨機集中。在每一個回合中,使用方差更高的隨機模板,示例方案如下:
每回合的隨機模板
基于上表的概率模板,雖然整體上五種顏色的概率依然是1:1:1:1:1,但是每個回合中,都會有比原始模板更大的概率在生成過程中形成連鎖。
c)數量判定隨機修正。在每一個回合中,每種顏色的隨機概率=(當前游戲池內本顏色數量+a)*100。a是一個修正因子,其存在的目的之一是為了避免當前場內消除干凈的元素再也無法出現。這一算法如果要使用的話,最好和上面的a算法結合使用,不然可能會使得目標元素長期處在數量不足的狀態,反而加大關卡難度。
d)隨機場面修正。首先在下落過程中使用一種叫做“黑元素”的特殊元素進行模擬下落。待模擬下落結束時,對所有的“黑元素”基于隨機模板進行隨機,生成100個不同的局面,然后對這100個局面進行計分(這里的計分算法可以參考筆者的另一篇拙作《三消游戲的自動關卡測試機制》),然后選取其中分數高的隨機結果作為實際的生成結果。
3.其他特殊元素的隨機生成優化
在各種三消游戲中,都會有一些特殊元素在其作用過程中使用到隨機數。而這里我們就可以針對每種特殊元素的隨機規則進行傾向性的調整。下面我們舉幾個例子:
《Farm Heroes Saga》中的水桶
《Farm Heroes Saga》中水桶的行為規則是:三次碰撞后,向隨機三個水果上噴水,并將其改變為水滴元素。這里我們可以選擇優先向能夠立刻形成水滴消除的水果上噴水。
《碎碎曲奇》中的禮物盒
在《碎碎曲奇》中,禮物盒被消除時會隨機生成一個特殊元素(可能是正面的或者負面的)。我們可以很簡單的增加正面元素的出現概率而降低負面元素的出現概率。
《Best Fiends》中的怪物技能
《Best Fiends》中的怪物會經常性的向游戲池中釋放干擾性的元素,并替代該位置上原有的元素。這個時候,被替代元素的價值高低,以及該位置對于當前局面的重要性,就成為了調整隨機算法修正難度的方式之一。
一個全自動的難度調整算法
這里,筆者給出一個相對簡單、初級,但通用于大部分三消游戲的難度調整算法,就當是拋磚引玉好了,希望感興趣的各位可以在其基礎上,基于自己游戲的特征進行擴展和改進。
1.基于失敗次數的積分算法
玩家每次關卡失敗時增加積分,每次過關時減少積分(并不是直接清零!原因見后)。
在每個關卡的配置上增加三個積分屬性:初始加分次數N,加分值P1和減分值P2。
當玩家當前關卡游戲失敗次數達到N后,每次失敗,積分增加P1;
玩家通過當前關卡時,積分減少P2,但減少后最小值為0(不會出現負數)。
這里我們做一個模擬示例:
玩家實際游戲過程如下:
事實上,這里我們很明顯的看到了一個關卡控制的數值意圖:即預期的過關次數上限≈N+P2/P1。
2.基于當前積分算法的隨機調整
由于我們在這里要構筑的是一個通用的難度調整算法,因此我們這里選取了章節三中的局部隨機集中和隨機場面集中兩個算法。
局部隨機集中算法:
假定某一關卡中的五種顏色元素的初始概率為100,100,100,100,100。
則在每一回合內隨機出三種高概率元素和兩種低概率元素。
高概率元素生成概率=100+min(當前積分,P2)/P2*50
低概率元素生成概率=100-min(當前積分,P2)/P2*75
隨機場面集中算法:
首先基于玩家的操作進行“黑元素”下落模擬,然后基于局部隨機集中算法的結果,進行100次模擬生成。然后基于評分算法給100次模擬生成進行從高到低的排序。
實際生成結果=random(1,100-min(當前積分,P2)/P2*80)。即當玩家積分>=P2時,每次隨機生成都會在前20%結果中隨機獲取一個。
3.基于自動難度調整的跨關游戲體驗
當玩家在一個關卡卡住了比較長時間后,為了對其體驗進行補償,我們希望讓他在接下來的一個或若干個關卡中感受到更好的體驗。基于這一目的的,我們在玩家成功通過某關后沒有立刻清空其積分,使得其在接下來的一關或若干關中仍然處在相對高的積分狀態,從而使得其接下來一小段時間的過關難度自然降低。