捕魚遊戲 Part Ⅱ

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

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

本文是系列文章的第二篇,若還沒讀過前篇的讀者請先閱讀【捕魚遊戲 Part Ⅰ】,接續前篇繼續介紹更多遊戲特色:

特殊炮

特殊炮是遊戲中最有爽感的部分,常見的有以下幾種:

  • 雷射炮 - 可攻擊大範圍魚群,大陸地區稱此為激光炮。
  • 免費炮 - 大家常說,免費的(炮)最貴,但這裡我保證真的免費啦。
  • 冰凍炮 - 擊中後會讓魚進入冰凍狀態,保存新鮮以便日後烹調食用...。好啦,只是讓魚變慢或停在原地。

特殊炮的捕魚遊戲可參考影片

重點來了,這部分數學該怎麼處理呢? 以下分成兩部分說明:


1.如何獲得特殊炮?

以雷射炮為例,企劃面我們可以決定由

  • 擊殺現有魚種後有機率獲得:要使用這種方法的話,記得把帶有特殊炮的魚在前端表現上凸顯出來,把它弄得很像喝了化學藥劑然後會發光的魚就對了啦。
  • 雷射炮直接是個item在魚場中可攻擊並獲得:這種在企劃面上處理相對容易,並且讓玩家有個明確目標追打

當然還有更多方式,但這兩種較直觀且在數學的處理上觀念是相同的,所以我以較複雜的前者來說明,此時情形雖然會稍微困難些,但別擔心,和人生相比還是容易許多,所以請聽我娓娓道來我的人生…喔是數學如何計算。

一樣以賠率100倍的魚以及RTP = 90% 為例

首先我們先決定將普通子彈攻擊一般魚的 RTP = 90% 挪出 20% 給雷射炮,而再來決定雷射炮的威力,假設威力是200倍(其實就是以雷射炮攻擊時RTP為200)。普通子彈擊中一般的魚,RTP的組成變成了:RTP = 70%(魚本身賠率) + 20%(雷射炮)

所以根據前面學到的公式《擊殺率 P = R / N》,這時候魚的擊殺率如下:

P = 70% / 100 = 0.7%

雷射炮的獲得率 LP 呢?大家別想歪,這命名是因為 Laser Probability,算法可以用同樣的公式

LP = 20% / 200 = 0.1%

這裡有一個小陷阱,這樣的算法 LP = 0.1% 是假設在《就算魚沒死也可能獲得雷射炮》,當然也不是不能,只要你能在前端表現或是企劃面上說服玩家都可以,但一般情形下魚死掉獲得寶物才是符合邏輯的,所以我們會希望這 LP 《魚死掉且獲得雷射炮》的機率,因此流程上要做一個小小的修正:

LP(given 魚死) = P(獲得雷射炮|魚死掉)=0.1% / 0.7% =1 / 7

其實可以很直觀的計算就是魚死0.7% x LP = 0.1% , 然後獲得LP = 1 / 7所以雷射炮獲得與否的正確的流程為:

  • Case1:目標魚(100倍)沒死→獲得機率為0
  • Case2:目標魚死→獲得機率為1/7

上面觀念用的是條件機率,忘記了請聯繫我,我有在兼職當家教。


2. 特殊炮發射後如何計算?

這部分有分幼幼班做法和正規做法,以上面例子為例,我們知道雷射炮威力是200倍,幼幼班的機率做法就是把責任丟給Server端,《阿你就想辦法讓被攻擊的魚全部死掉,然後總賠率不要超過200倍就好了啊!》。這做法缺點有很多:

  1. 遊戲變化性很少,倍率永遠都是很靠近200的數字 
  2. RTP會偏低
  3. 把工作丟給Server,Server會不爽

請注意3,好的機率工程師不要讓Server去處理機率問題,這也呼應到了自然機率的優點,有興趣可以參考文章【解密自然機率與非自然機率老虎機】。就像我所說的,這篇不會有困難的數學,所以一樣很簡單,正確的做法應該如下:假設雷射炮擊中K隻魚,賠率分別為N1、N2、……、NK擊殺率修正法Pi如下:

《Pi = 雷射炮威力 / (賠率 x 攻擊隻數) = 200 / (Ni x K)》

來驗算一下RTP:

N1P1 N2P2 + …… + NKPK =200/K + 200/K + …… + 200/K=200

這修正法的確讓這發雷射炮攻擊出去時獲得的RTP為我們當初假設的雷射炮威力200。相信有點程度的人已經發現其實這公式就是Part 1介紹的攻擊到多隻魚的做法延伸,正所謂水能載舟,亦能覆舟,《擊殺率能除隻數,當然也能乘威力》。這做法相比幼幼班好上許多,但諷刺的是市面上看到很多都是幼幼班的做法(也許我看得還不夠多),相比之下正規做法反而沒那麼正規了。另外優點我就不贅述了,就是把幼幼班做法的缺點都變成否定句就是了。不知道怎麼變成否定句?一樣聯繫我,我有兼差做家教。

至於免費炮就和雷射炮的概念一樣,我們只需假設單發威力以及總共發數,就能判斷出《總威力 = 單發威力 x 總發數》,剩下就是一樣的算法了。