《Plundering the Seas of Probability》:遊戲設計者的機率應用實例

Dice-2d6原文出處:Plundering the Seas of Probability

在這篇文章裡,作者承續好孩子的「遊戲設計者的基礎機率入門」「遊戲設計者的基礎統計入門」兩篇專為遊戲設計者調製的營養補給文章,繼續以 Longship 這個還未上市的桌上紙盤遊戲 (Board Game) 其中部分設計機制,做為應用機率理論於遊戲設計機制中的解說實例。

Longship 是專為 3 至 5 位玩家所打造的桌上遊戲,每次進行遊戲的時間約 90 分鐘左右。在 Longship 的遊戲場景中,玩家所扮演的是掠奪財寶與征服領土的北歐海賊王,能夠進行航行、掠奪與攻擊等等許多不同類型的行動,或是奪取各式各樣的寶物以取得遊戲中的勝利點數。

遊戲中每位玩家的行動,都需要經過丟擲骰子的程序來決定結果的成敗。而在此所採用的是 2 個骰子的組合設計,也就是在 D&D 系統中常見到的 2d6 系統:共有 2 個骰子,每個骰子均有發生機率均等的 6 個面。由古至今在許多遊戲之中,一次使用 2 個 6 面骰子進行遊戲,也是一般人都非常熟悉的一種遊玩方式。

為什麼要使用骰子做為遊戲設計的方法?在桌上遊戲的世界中,只需要 2 個骰子的組合搭配,就能夠產生出非常多的變化結果以供遊戲設計使用。包括總共能夠產生出 36 種不同的組合;可以將其中一個骰子的結果當作十位數,另一個骰子的結果當作個位數,產生出 11 至 66 點的結果;可以製作出機率最小為 1/36 = 2.8% 的事件;也能夠產生出「兩骰子點數總和大於 3」等較複雜的機率事件。只要我們的手上有 2 個骰子,就能夠組合出非常多的設計變化。

在電腦遊戲中,無論是單純或複雜的機率運算,總是交由電腦程式幫我們計算出遊戲的數值結果;現在大部分的玩家,可能都沒有桌上紙盤遊戲的遊戲經驗。但是做為遊戲設計者的角色,如果能夠瞭解這些傳統方法的魅力與奧妙之處,仍然會對於遊戲機制設計層面產生很多正面的幫助與嶄新的啟發。

為了使遊戲過程更加生動有趣,本文中的六面骰不是使用傳統的點數 1 到點數 6 這六種數字化的圖樣,而是使用了自訂的圖案格式,其中共有 1 面為空白、2 面為怪物、2 面為單斧與 1 面為雙斧的標誌。在這樣的設定之下,骰子出現各項結果的機率分別為:

  • 空白:1/6 = 16.7%。
  • 怪物:2/6 = 33.3%。
  • 單斧:2/6 = 33.3%。
  • 雙斧:1/6 = 16.7%。

確立了基礎的機率條件之後,就可以開始檢驗遊戲中的設計機制,以及這些事件的發生機率是否正確。對於遊戲設計者而言,在進行設計結果的檢驗之前,要先能夠確立預想中應該達到的設計成果,然後再對呈現出來的結果進行檢驗,才能確認這些數據與資料是否合於設計者的設計本意。

在 Longship 的遊戲設計中,玩家會在船艦航行海上的過程中遭遇海王類的怪物,而遊戲的設計者,希望玩家在航行的過程中,大約有一半的機率會遭遇到海王類的怪物。因此在這裡所訂出的遊戲規則是:

怪物遭遇:一次擲出 2 個骰子,如果出現任何怪物圖案,表示船艦遭遇到怪物。

接著來檢視這項規則的發生機率是否符合設計的原意:

  • 遇不到怪物的機率:4/6 * 4/6 = 4/9。
  • 至少遇到 1 隻怪物的機率:1 – 4/9 = 5/9 = 55.6%。
  • 遭遇 2 隻怪物的機率:2/6 * 2/6 = 1/9 = 11.1%。

玩家將有 5 成 5 左右的機率,會遭遇到 1 隻以上的怪物;而大約有 1 成 1 左右的機率,會很不幸地一次遇到 2 隻怪物。得出的機率結果,的確是合於設計者的本意。

在這裡要注意的是,計算機率時很常見的錯誤,就是以加法加總各個骰子出現的機率。在前例中,如果以加法的方式計算至少遇到 1 隻怪物的機率,就會出現 2/6 + 2/6 = 2/3 = 66.7% 這樣錯誤的結果。唯有在擁有多項成功條件的單一事件中,才能夠使用加法相加不同條件下的機率。例如,在一副撲克牌中抽到 Ace 或 King 的機率是 4/52 + 4/52 = 8/52,在這樣的條件之下,就能夠安全地使用加法計算機率。

接著是掠奪領土的遊戲規則:

掠奪領土:擲出 2 個骰子,如果該領土的勢力比你的船隊低,需要骰出至少 1 個斧頭才能成功掠奪;而如果該領土的勢力比你的船隊高,則需要骰出 2 個斧頭,並且在結果中不能出現怪物才能成功掠奪。

這裡的規則分為兩個情境,在對方勢力較低的狀況,僅需要利用反向機率的方法,就能計算出骰子結果至少出現 1 個斧頭的機率為:1 – (第 1 個骰子沒出現斧頭 * 第 2 個骰子沒出現斧頭) = 1 – 3/6 * 3/6 = 75%。而在對方勢力高出玩家船隊的情況下,計算過程會稍微複雜些,在此有兩個方法能夠得出解答:

方法一:由於骰子中的雙斧圖案等同於出現 2 個斧頭的數目,因此在擲出 2 個骰子並且合於遊戲規則的前提下,總共有可能出現 2 或 3 或 4 個斧頭三種不同的情況,所以事件的機率等於 (出現 2 個斧頭 & 0 個怪物) + (出現 3 個斧頭 & 0 個怪物) + (出現 4 個斧頭 & 0 個怪物) 的結果。

  • 出現 2 個斧頭 & 0 個怪物:(骰子1出現單斧 & 骰子2出現單斧) + (骰子1出現雙斧 & 骰子2出現空白格) + (骰子1出現空白格 & 骰子2出現雙斧) = 2/6 * 2/6 + 1/6 * 1/6 + 1/6 * 1/6 = 6/36。
  • 出現 3 個斧頭 & 0 個怪物:(骰子1出現單斧 & 骰子2出現雙斧) + (骰子1出現雙斧 & 骰子2出現單斧) = 2/6 * 1/6 + 1/6 * 2/6 = 4/36。
  • 出現 4 個斧頭 & 0 個怪物:(骰子1出現雙斧 & 骰子2出現雙斧) = 1/6 * 1/6 = 1/36。

因此事件的機率等於 6/36 + 4/36 + 1/36 = 11/36 = 30.6%。

方法二:利用窮舉法,把骰子的 36 種組合以列表的方式全部列出來,就能夠找出符合條件的狀況共有 11 種,所以事件機率同樣是 11/36 = 30.6%。

所以由以上的結果可知,當玩家勢力較高的情況,有 7 成 5 的機率能夠成功掠奪領土;而若玩家勢力較低,則僅有 3 成左右的機率能夠成功掠奪,應該是一項合理的遊戲機制設計。

既然有得到也就會有失去,在掠奪領土的過程中,不論結果是勝利或失敗,玩家都有可能會喪失部分的船員(除非你是草帽海賊團!XD)。而決定玩家會失去多少船員的遊戲規則為:

傷亡數目:在掠奪行動中,擲出 2 個骰子,每出現 1 個怪物標誌就會使玩家喪失 1 位船員。

之前已經計算過,至少遇到 1 隻怪物的機率為 55.6%。但是目前為止我們只知道,有 55.6% 的機率會失去至少 1 位船員,而不是玩家每次進行掠奪領土時平均會失去多少位船員。因此,在這裡就需要利用統計學中的期望值 (Expected Value) 公式,計算出掠奪過程中的平均傷亡數目。

所謂的期望值,實際上就是將事件發生的機率乘以一個數值,就可以得出機率事件的評估價值。如果以公式的形式表示出來就是:期望值 = (事件 1 的機率 * 事件 1 的價值) + (事件 2 的機率 * 事件 2 的價值) + … + (事件 N 的機率 * 事件 N 的價值)。所以,利用這個公式可以計算出船員傷亡數目的期望值為:

EV = (只出現1隻怪物的機率 * 減少1個船員) + (出現2隻怪物的機率 * 減少2個船員) = (44.4% * -1) + (11.1% * -2) = -0.667。

這個數值所代表的意義也就是,玩家每次在進行掠奪行動時,將會喪失約 2/3 (66.7%) 個船員。請特別留意,這個結論與前述有 55.6% 的機率會喪失至少 1 個船員的意義完全不同。由於進行掠奪行動的負面機制會使玩家失去 2/3 個船員,所以行動中的正向設計,需要給予玩家足夠的動力與誘因,才能夠讓玩家在不同的情境與考量之下,有時選擇進行掠奪行動,而有時會選擇不進行掠奪行動。

在遊戲設計中,所謂的遊戲平衡 (Game Balance)可以說是最困難的課題之一。如果一項設計機制,會同時帶來正面與負面的影響結果,遊戲設計者就必須小心翼翼地平衡正負兩面的遊戲數值與事件機率。否則當負面因素恆大於正面因素時,在玩家嘗試幾次而發現這樣的情形之後,從此就不會再選擇使用這項策略或行動,而使得這項設計機制完全喪失應有的功能性;反面來說,如果當正面因素恆大於負面因素時,玩家就會每次都選擇使用同一項策略或行動,因為這個決定對玩家是一個絕對有利的行為,所以就會造成設計機制獨強的現象,同樣會在遊戲平衡的面向中造成非常大的問題。

因此,遊戲設計者需要讓這些強弱因素看起來不那麼明顯,沒有任何一個絕對獨強的策略,同時也沒有一個絕對獨弱的策略。例如在 FPS 遊戲中的武器火箭筒,具有絕大的殺傷力,但是攜帶這項武器會使玩家移動速度變慢,每次發射完畢後也需要較長的彈藥裝填時間,加上彈藥數量較為稀少珍貴,所以這樣的設計機制,才能夠避免所有玩家都拿著相同武器在遊戲中漫天飛舞的情境。利用期望值的計算與平衡,就能夠幫助遊戲設計者妥善調整遊戲中的數值與平衡性,達到比較良好的設計成果。

文章最後,再來看一個船艦攻擊的設計實例。假設在船艦上裝備著 2 門火砲,每次進行攻擊都是 2 門火砲同時發射,並且每一門火砲命中遠方目標的機率為 1/6,則每次攻擊至少能夠命中 1 發的機率為 1 – (5/6 * 5/6) = 11/36 = 30.6%。為了平衡遊戲的設計,我們必須計算出船艦攻擊的期望值為何,也就是必須知道在這 11 次的命中當中,會有幾次單發以及幾次雙發命中的情況。

如上述的機率計算結果所示,在 36 次的火砲攻擊中,會命中 11 次。而在這 11 次的命中數當中,有 10 次為單發命中,而有 1 次為雙發命中的情況。以期望值的方法計算火砲的平均擊中數就是:

EV = [ 只有擊中1發的機率 * 1個擊中數 ] + [ 擊中2發的機率 * 2個擊中數 ] = [ (5+5)/36 * 1 ] + [ 1/36 * 2 ] = 10/36 + 2/36 = 12/36 = 0.333

由上述的兩項計算結果,可以得知火砲攻擊的平均命中率為 0.306 (30.6%),而火砲的平均擊中數為 0.33 發,是一個大於命中率的期望值;也就是說,在船艦攻擊的行動中,有時候會一次命中 2 發火砲攻擊!

至此,纏綿悱惻又深情動人的《機統三部曲》(偽)正式劃下句點。

雖然在實際的遊戲開發流程中,多數遊戲設計者都習慣使用百分比 (Percentage) 的機制設定事件發生的機率,但是如本文內容所闡述的遊戲設計案例所示,藉由簡單的骰子機制,結合不同個數與不同面數的骰子,同樣能夠變化出許多不同的機制設計與遊戲樂趣;有時候使用單純的骰子來思考關於機率面向的機制設計,反而能夠達到化繁為簡的效果。在我們所熟知的角色扮演遊戲中,有許多著名的作品都是立基於 D&D 系統的設計方法也並不是沒有道理可循。往後有機會的話,再來談談骰子方法在遊戲程式與遊戲設計中的應用。

One thought on “《Plundering the Seas of Probability》:遊戲設計者的機率應用實例”

  1. 幫忙勘誤一下:)。

    掠奪領土方法一的第一個式子「出現 2 個斧頭 & 0 個怪物……」應為:

     出現 2 個斧頭 & 0 個怪物:
     (骰子1出現單斧 & 骰子2出現單斧) + (骰子1出現雙斧 & 骰子2出現空白格)
    + (骰子1出現空白格 & 骰子2出現雙斧) = 2/6 * 2/6 + 1/6 * 1/6 + 1/6 * 1/6 = 6/36。

    抱歉,我只是一個看熱鬧的門外漢(好聽一點叫做單純的遊戲愛好者XD),只能幫忙找錯字。
    因為不會寫程式,看到這系列不用太多基礎的文章就能看懂的文章,其實還滿開心的XD。

    半路:
    大感謝內容勘誤~
    文章的內文已更正。 Orz

    以後有機會或有想法的話,會多寫些遊戲設計的相關主題~
    謝謝你的支持喔。 ^^

Leave a Reply