製作遊戲的兩三事【37】開寶箱設計常見的大漏洞

在我們設計線上遊戲的時候,經常會規劃出各種不同類型的開寶箱設計。無論是打怪取得寶箱後可以隨機開出不同的獎勵,或是將裝備拆解後可以取得不同的物品,以及各式各樣變化的設計,都可以廣汎的稱之為『開寶箱』的設計。這樣的設計,曾經在許多不同的遊戲中造成遊戲的漏洞,引發不同規模的意外事件。

在研發遊戲的時候,某些特定的項目總是特別容易產生臭蟲。這些臭蟲有的會危害遊戲,造成遊戲中的經濟體系大崩潰;有的雖然會破壞遊戲的平衡,對於遊戲中的生態造成短暫的影響,不過只要快速的修正這個問題,後續遊戲的世界會漸漸的恢復平衡。至於『開寶箱』這樣的設計到底會造成什麼樣的影響,則要視這個出問題的系統產出什麼樣的物品,產出的物品不同對於遊戲生態的影響也各有不同。

首先來介紹一下這個所謂的開寶箱系統,就讓銀狐借用某個遊戲的活動企劃案中的一段文字來說明吧:

『活動期間玩家打倒怪物可以隨機取得寶箱,點選寶箱就可以開啟,可以隨機取得製造裝備的產物、衝裝寶石以及活動期間才有的裝備。』

開寶箱的設計會出現漏洞有三個條件,第一個條件是寶箱本身是要可以堆疊的﹝就是一個格子可以放多個﹞,第二個條件是玩家想要的物品也是可以堆疊的,第三個條件就是開寶箱後能取得的物品是在開寶箱時才決定的。當這三個條件都符合時,再加上研發的工程師在撰寫相關程式時若是思考不周的時候,就會讓玩家抓到可乘之機,藉由遊戲設計上的漏洞,控制開寶箱出來的物品成為玩家所指定的項目。就以上面舉例的那個活動來說,如果程式有漏洞再加上玩家希望取得的是衝裝寶石﹝可堆疊的物品﹞時,那麼玩家就有機會讓每一次開寶箱出來的物品都是衝裝寶石。

一般來說,這一類的設計流程如下:

(1) 玩家開啟寶箱。
(2) 隨機決定開啟寶箱該得到的物品。
(3) 將物品放置到玩家的背包中。
(4) 消滅寶箱。

上面這個流程看似沒有問題,不過當玩家的背包已經滿了的狀況會如何呢?還記得前面已經提過寶箱是可以堆疊的物品,因此玩家在開寶箱的時候,背包裡可能是滿的,而且因為寶箱是可堆疊的物品,玩家身上可能有不只一個寶箱,因此就算開掉一個寶箱,玩家的身上的背包還是滿的。因此就程式的邏輯,會在處理到第三個步驟的時候,因為玩家的背包已經沒有空格,所以傳回「背包空間不足」的訊息,並終止這個開寶箱的過程。因此玩家不會拿到開寶箱時原本應該取得的物品,寶箱也不會消失。

抓到這個漏洞的玩家,會將玩家的背包用各種物品填滿﹝這時要注意不要有其他寶箱中會開出的物品,如果有的話也要把堆疊的數量堆到上限﹞,然後其中的一格放置自己想要開寶箱取得的那件可堆疊物品﹝前面舉的例子是衝裝寶石﹞,不過這件物品的數量不能放到單格的上限,然後就可以開始進行開寶箱的流程。在這樣的狀況下,當開寶箱後出現的物品是其他物品時,就會因為背包裡沒有空間而取消;不過當開寶箱時出現了衝裝寶石,因為這是一件可以堆疊的物品,而且目前背包中有相同的物品且堆疊數量沒有到達上限,玩家就可以順利的開寶箱取得衝裝寶石。

要避免造成這樣的漏洞,只要在上面那四個步驟的第二和第三之間加上判斷玩家背包是否有空間的判斷式,將原本隨機產出物品要放到玩家背包時才做的動作搬到前面,這簡單的一步就可以防止漏洞的發生。而修改後的程式流程如下:

(1) 玩家開啟寶箱。
(2) 判斷玩家的背包是否有空間。
(3) 隨機決定開啟寶箱該得到的物品。
(4) 將物品放置到玩家的背包中。
(5) 消滅寶箱。

改成以上這樣是否就萬無一失了呢?其實並不然。在以上的這個流程中第三到第五步驟雖然在程式執行的過程中只是很短的時間,但是我們永遠不知道遊戲在營運的時候會不會出現什麼意外的狀況,例如會不會因為某些因素導致程式執行到第四步驟時就中斷?或是會不會有某些玩家利用額外的程式刻意的將程式中斷在第四步驟後?如果發生以上的狀況,會造成什麼樣的問題?當一個寶箱開出物品卻沒有消失,那是不是等於間接的產生了複製的現象?一個開不完的寶箱對於遊戲的傷害力可是非常大的。

為了避免發生這種狀況,我們在製作線上遊戲的各種系統時有一句『先扣再給』的口訣。對於所有有產生物品給玩家同時也有扣除玩家身上物品的設計,工程師要記得先將玩家身上該扣的物品扣掉﹝一方面也藉此判斷玩家身上是否有足夠的物品﹞,然後再給予相對的物品。因此依照這個原則,修改後的程式流程會變成如下:

(1) 玩家開啟寶箱。
(2) 判斷玩家的背包是否有空間。
(3) 消滅寶箱。
(4) 隨機決定開啟寶箱該得到的物品。
(5) 將物品放置到玩家的背包中。

修改成這樣的流程後,若是有某些玩家想要搞鬼,嘗試在程式執行的過程中中斷流程,那麼他的寶箱會消失,而且無法獲得原本開寶箱應該獲得的物品。而這樣的設計,在遊戲營運的過程中若是真的發生狀況,也會有玩家回報開寶箱沒有取得物品但寶箱消失,也可以讓營運單位及早知道有發生問題,間接的也讓遊戲公司比較容易獲得玩家的反映,避免發生狀況後某些玩家卯起來洗物品的現象。只是小小的調整和改善遊戲的設計,就可以避免發生嚴重的意外。

  • 寂路

    類似的案例有RO的開寶箱案例
    遊戲怪物卡片為強化裝備的插件,但是本身重量很輕
    印象中,在採用負重數值作為背包容量的RO沒有比它更輕的道具
    因此沒採用”先扣再給”曾發生過故意把自己的身上塞滿只剩下足夠卡片負重的狀況,讓隨機寶箱只能開出卡片
    後來也做了修正