捕魚遊戲 Part Ⅰ

捕魚是這幾年在中國市場很火紅的遊戲。

捕魚遊戲 Part Ⅰ
Photo by Rosalind Chang / Unsplash

這遊戲相對於老虎機來說單純許多,因此在計算上也是相對簡單很多,所以請讀者放心往下看,我保證這系列的數學絕對是幼幼班等級的,但別忘了機率工程師不是單純的數學機器,所以不只數學大家可以學習,我也會盡量透過我的經驗,將遊戲設計以及玩家體驗的觀念一併說明。

如果還不知道什麼是捕魚機的讀者,可以點閱影片參考

雖然計算難度不高,但可能捕魚是由一般Social Video Game或是Mobile Game發展過來的,相對於博弈遊戲來說,對於數學的要求沒那麼嚴謹,因此即便轉換到博弈遊戲後,市面上還是充斥著許多數學不嚴謹且亂七八糟的企劃。小弟接下來就介紹怎麼做一款最簡單基礎的捕魚機。

首先捕魚是一款射擊遊戲,遊戲規則簡單來說就是玩家擊發出子彈,擊中魚之後若是魚死亡則獲得獎金。相信不難看出,其實這只是簡單的Bernoulli 分布,結果只有1 (擊殺成功) 或0 (擊殺失敗) 兩種可能,而參數P就是此次試驗成功 (擊殺魚) 的機率。

因此企劃階段先假設《賠率 = N》、以及《RTP = R》便可簡單計算出《擊殺率 P = R / N》

以賠率100倍的魚以及RTP = 90% 為例,擊殺率 P = 90% / 100 = 0.9%。

對於單純的魚種來說,僅需要上述公式便能算出各魚種的擊殺率,有了擊殺率後,只要在玩家子彈碰撞時判定魚種並亂數決定結果為擊殺成功或失敗即可。

雖然上面簡單的捕魚機在數學設計上沒有問題,但在遊戲體驗上有點過於單調,試想一般老虎機大約3~5秒可以完成一局(取決於贏分時的表演),而捕魚1秒鐘就可以擊發3~5發子彈,甚至更高,再加上此遊戲的模型和本人我一樣單純,不像老虎機可以透過線數、滾輪排列等其他參數調整,因此在同樣單位的時間內,捕魚遊戲的收斂速度比老虎機要快得多。

專業的說法就是遊戲的Volatility太低,粗俗淺白好懂的解釋就是"X!我怎麼每次打完都小輸啦!"。因此為了增加遊戲性與Volatility,當然要將出獎情形多樣化,所以捕魚遊戲通常還會額外加入一些遊戲特色。


子彈可同時擊中多隻魚

此法會使得出獎情形複雜許多,比如擊中A、B兩隻魚,出獎情形就變成四種分別是

{ A死B死,A死B活,A活B死,A活B活 }

但數學上要怎麼修正呢?雖然感覺情形複雜許多,但其實相當簡單。

最直觀的方式當然是假設1發子彈1元,則視為每發0.5元的2發子彈分別擊中A、B兩隻魚,但要是就這樣直接用0.5元去乘上魚的賠率,顯然是沒辦法被玩家接受的,因為從玩家角度來看明明花1元發射的子彈打死了A魚,獲得的卻是0.5乘A魚的賠率是相當奇怪的事情,要是一次擊中三隻魚體驗就更差了。

較佳的方式是修正擊殺機率P (畢竟機率是前端表現上看不見的),一般情形下每隻魚RTP是一樣的,我們只需要將每隻魚的擊殺率P除上此發子彈擊中魚的隻數就好,

簡單證明如下:

  1. 假設擊中K隻魚,賠率分別為N1、N2、......、NK擊殺率分別為P1、P2、......、PK擊中每隻魚的RTP相同為R
  2. 加總每隻魚的RTP:N1P1 + N2P2 + ...... + NKPK = R + R + ...... + R = KR
  3. 再將兩邊同除以K: N1(P1/K) + N2(P2/K) + ...... + NK(PK/K) = R

你不是算命的,所以別把所有魚的生死情況、流年運勢列出來算機率,當然最後答案也會是對的啦。結論就是在賠率不變的情形下,將每隻魚的原始機率 Pi 修正為 (P/ K) 即可確保此發子彈打出去的RTP和打到一隻魚是相同的。

這方法會有些小小小缺點:

  1. 打賠率低的魚時,Hit Rate(至少擊殺一隻魚的機率)會很明顯降低很多,但這遊戲大家都連發在打,所以體驗影響不大。
  2. 影響玩家心理的部分,遊戲設計中,我們會希望賭客明確知道自己要什麼、該期待什麼,但當一發子彈同時打到多隻魚時,焦點會稍微被模糊了,不過這當然沒有絕對的對跟錯,端看設計者如何考量。