轉蛋抽卡設計原則之二:一個蘿蔔一個坑


採用機率的作法,就是把一切的結果交給機率。雖然說取樣的數量大到某個程度後,其結果會接近設定的機率,不過在實務上這樣的結果有時候表現出來的效果並不好。特別是像轉蛋抽卡這種玩家要花錢的消費項目,如果將一切交給機率,那麼許多玩家可能會不太滿意抽到的結果。

【機率控制的轉蛋抽卡手氣不好的玩家抽不到就是抽不到】

如果今天我們要製作一個轉蛋抽卡,然後希望轉蛋抽卡的結果和我們設定的機率完全符合,那麼我就不會採用前一篇文章所採用的機率這個模式,而是會採用一個蘿蔔一個坑的模式。以建表的方式將設定的獎項分佈在這個表中,然後玩家在轉蛋抽卡的時候,就依照轉蛋抽卡的順序從表中取出對應的獎項來。實務上這個作法會怎麼做,請看以下的說明:

採用這個作法,和前面提到的機率的作法一樣,我們需要先有一個各種獎項出現機率的設定。就同樣的以剛才的那個三國背景的武將卡來舉例好了,如果我們要製作一組轉蛋抽卡,裡面有十張不同的武將卡,那麼我們需要先訂出這這些武將卡的出現數量:

  • 1001諸葛亮(五星):1
  • 1002劉備(四星):3
  • 1003關羽(四星):3
  • 1004張飛(四星):3
  • 1005趙雲(三星):15
  • 1006黃忠(三星):15
  • 1007馬超(三星):15
  • 1008魏延(三星):15
  • 1009龐統(三星):15
  • 1010法正(三星):15

在以上這個範例中,我們訂定了這十張武將卡在這個轉蛋抽卡中的張數。這些武將卡出現張數的總合,就是這個轉蛋抽卡的總數量。在設定上,不見得一定要是100的倍數。這裡會這麼巧的是100這個總合,是因為前面的舉例是用百分比,所以總合剛好是100的關係。

有了以上這個設定表,接下來我們就需要有一個程式來將這個設定打散到對應的表格中。這十種武將的總張數是100,所以我們會另外開一個100格的陣列。然後程式就依據這個設定表,把這些武將卡的編號亂數放到這100格的陣列中。

這個陣列大約會是這樣:

第1格:1005
第2格:1009
第3格:1002
第4格:1007
第5格:1004

省略

第99格:1006
第100格:1006

舉例來說,程式首先要放的是編號1001的諸葛亮這張五星卡,Random出一個47的數字,於是就將1001這個數字填到陣列中的第47格。接下程式要處理的是編號1002的劉備這張四星卡,因為有三張,所以程式會Random三個數字,然後將1002填如陣列中相對的位置。

如果程式Random出來的數字所對應的陣列中已經有放了武將卡,那麼就重新Random。然後就這樣一直重複的做,把十種武將卡共100張填入陣列中。完成之後,我們會獲得一個100格的陣列,裡面每一格都有一個1001到1010的數字,這個數字就代表著武將卡的編號。

接下來,每次當遊戲中有玩家轉蛋抽卡時,就照順序從陣列的第一格開始,對應格子中的編號就是玩家抽到的武將卡。以上面的例子來看,第一格是1005這個編號,因此玩家就會取得趙雲這張三星武將卡,然後第二格是1009這個編號,因此玩家抽第二次就會取得龐統這張武將卡。

就這樣,隨著玩家的轉蛋抽卡逐一將陣列中的資料取出,然後將對應編號的物品作為玩家獲得的物品。當100格的資料都用完之後,第101個轉蛋抽卡就回到第1格,然後就這麼繼續下去。如果擔心這個只有100格的陣列被玩家找出規律,那麼就放大產出的陣列,將上面設定的獎項放大10倍、100倍,這樣產出的陣列就會是1000格或是10000格的資料,玩家就無從記錄。

採用這種作法的優點,就是將這個陣列中的物品都抽完後,統計各種物品出現的機率會和設定的機率完全相同。不過傳統的轉蛋抽卡,是所有的玩家一起抽同一個目標,因此就算機率和原始的設定相符,其中最好的獎項不見得會被抽了最多次的玩家抽到。很有可能,一名玩家抽了許多次,剛好在最大獎的獎項前停手,結果最大獎被接下來的玩家抽到。

因此,有部份的遊戲廠商將這種轉蛋抽卡的作法運用在給玩家個人的轉蛋抽卡上。這種抽卡,每個玩家都有一個專屬的卡包,卡包的資訊裡會明確的標示出這個卡包中有那些物品,每一種物品的機率各是多少。簡單的說,這種專屬卡包的作用,就是玩家就算手氣再背,只要把這個卡包裡的物品都抽光,就會取得所有的物品(包含最大獎)。

採用這樣的作法,如果要加入新的物品到卡包中,就需要重新輸入整個陣列。就以上面的這個例子來看,如果我們要加入一張編號1011的孫尚香四星武將卡到這個設定中,那麼設定就會變為以下這樣:

  • 1001諸葛亮(五星):1
  • 1002劉備(四星):3
  • 1003關羽(四星):3
  • 1004張飛(四星):3
  • 1005趙雲(三星):15
  • 1006黃忠(三星):15
  • 1007馬超(三星):15
  • 1008魏延(三星):15
  • 1009龐統(三星):15
  • 1010法正(三星):15
  • 1011孫尚香(四星):3

由於數量多了3,因此產出的陣列就會由100擴大為103,而設定上的三張編號1011的孫尚香四星武將卡就會散佈在這103格的陣列中,接下來玩家轉蛋抽卡的時候就有機會獲得。

實際在使用這種方式來製作轉蛋抽卡,特別是個人的轉蛋抽卡時,遊戲公司不會希望玩家太早就抽到這個轉蛋抽卡中的最大獎。為了讓這個個人化的轉蛋抽卡能帶來較大的營收,也許會在打散獎項的程式中增加一些額外的條件,讓最大獎不要出現在陣列的最初期。當然,也可以額外增加當玩家抽到最大獎後,可以重製整個個人卡包,透過『可以再抽到一張大獎』的誘惑,引誘玩家繼續的抽下去。

除非是個人化的卡包,否則這種作法還是無法解決某些手氣不好的玩家就是抽不到好獎項的問題。在現今的遊戲市場上,如果一個願意付費的大戶玩家因為手氣不好而流失,那麼對於遊戲公司的傷害可不小。所以,聰明的遊戲設計者就會在這一類的轉蛋抽卡設計中增加某個保護挫施,讓手氣不好的玩家能夠在累積一定的『臉黑值』之後獲得一些補償。

請看續篇:轉蛋抽卡設計原則之三:臉黑的需要保護


2 comments

  1. 想偷問一下
    Fgo十連保三星英靈+四星禮裝卡一張
    做你看來,是用這種陣列的方式來執行嗎?

    因為我不太確定從遊戲公司的角度哪一種做法對伺服器負擔比較輕

    是像你說的「一切交給機率」還是「一個蘿蔔一個坑」呢?

    1. > Fgo十連保三星英靈+四星禮裝卡一張
      > 做你看來,是用這種陣列的方式來執行嗎?

      先說一下我並不是FGO的設計者,所以以下的說明並不見得就是FGO的作法。

      不過您提到的十連保,應該是我所說的「水位」或是俗稱保底的設計,
      這個根本就不需要用到什麼陣列,只要亂數取完十連抽後檢查有沒有出現該有的保底,
      如果沒有就隨機拿一張保底的替換掉十連抽中的任一張卡即可,
      所以,不是一切交給機率,也不是一個蘿蔔一個坑。
      建議您接著看系列文章的之三,應該就會多瞭解一些。

您可以在這裡留下你對這篇文章的意見: