前言
????????游戲中的概率真的是讓人又愛又恨,很多玩家因為自己的屌絲氣質(白嫖)而棄坑玩不下去的,比如人盡皆知的某陰陽師,除了氪金,還肝,而且如果你的臉真的非常的黑,那也是打不過那些0氪金的歐洲人的。
????????而在游戲中被吐槽的最多的就是概率問題,我們一遍一遍的刷副本,BOSS,就是為了湊齊一整套裝備,因為BOSS掉落是隨機的,我們也不知道什么時候能夠湊齊;為了獲得某個角色,連續的抽卡,期待歐皇的附身,但是結果是無法確定的。這就是游戲的魅力,有隨機性,有變數,有期望,有運氣。
游戲中常見的4種概率設計
1、常規做法,直接配置概率,程序直接判定
2、在1的基礎上,加個保底次數,當連續不發生的次數高于保底時,強制發生
3、設置基礎概率,事件不發生概率翻倍
4、設置數組,將事件發生概率變成數組元素
獨立隨機算法
????????每個怪物都會攜帶一些游戲道具(裝備,寶石,金幣,道具,任務物品等),被擊敗后,會根據概率隨機掉落。至于掉落的游戲道具是不是你想要的,就要看你的運氣了。
在游戲中:如果某個BOSS掉落某件極品裝備的概率是5%,那么就是每次BOSS被擊殺后,由系統隨機在1—100中生成一個數字,如果這個數字小于等于5,那么就會掉落該裝備,否則就不會掉落。這是獨立概率,每次的概率都是一樣的,不會變化。
但是概率其實是不可靠的,同樣的概率,有的人可能打1,2次就掉落了,有的人可能打30次才會掉落。這也是沒辦法的事情,真隨機就是這樣的。所以,在早期的網絡游戲中,如果你想獲得某個游戲道具,多花時間就好,打的次數多了,肯定就容易獲得你想要的道具。
沒錢的玩家可以多花時間,打裝備賣給有錢的玩家,以換取點卡。大家各取所需。這是早期游戲設計所決定的。那個時代,除了點卡消費,在游戲中,大家都是公平的。
開箱子or大轉盤
????當游戲進入免費時代,游戲設計者為了能夠賺到錢,就開始賣屬性。但是不能直接賣,要間接的賣,賣的巧妙,最好還能多賺錢。于是轉盤這種設計就出來了,不是賣裝備 ,是抽獎,能不能抽到看運氣。每個方格里有不同的道具,有普通道具,也有中級道具,更有高級道具。
看起來每個格子(轉盤)設計的大小,概率都一樣,其實不是這樣的,這只是看起來一樣,具有視角欺騙性,最終還是按概率來。可能高級道具的概率連1%都不到,要不停的轉才有可能得到,其實就是一個簡單版的打怪掉落程序,只不過不需要打怪,花錢就直接按概率掉落。
不過這種把戲后來慢慢被看穿了。于是,開箱子的方式改進了一下,就是已經抽到的道具不再參與轉盤。相當于每獲得一個格子中的道具,就減少一個道具,所有剩下的道具概率重新計算,每個道具的獲得概率提升了。
但是,你想獲得高級道具,仍然是要花大量的錢。
抽卡保底算法
????????當卡牌游戲開始流行后,抽卡這種模式就越來越受到大眾歡迎。抽卡就成了免費游戲的主要收入來源。簡單直接,而且隱秘。簡單是因為,只要點擊一次,就會從牌庫中,隨機獲得一張卡牌。隱秘是因為,牌庫是比轉盤還要復雜隱秘的,里面有太多道具,除了基本抽取的概率,內部每個道具的概率也是不一樣的。所以,需要不停的抽卡,因為牌庫太大,抽卡完全是看臉。
如果概率無法控制,其實對玩家是不太友好的。于是大部分的抽卡游戲都增加了保底功能,抽10次必得。就是為了防止連續抽多次也抽不出來的情況。還有一部分,采用幸運值累積的方法,每次抽卡如果沒中,就會累積幸運值,幸運值越高,就越容易獲得想要的道具,其實也是變相的提高概率。
這種其實是偽隨機。
那么什么是保底設計?保底設計準確來說是為運氣不好的人提供的一種保障,能夠獲得自己想要的卡牌。
設計保底的方案有多種,這里說下三種方案:
1.固定或浮動數值保底。這種方案在于你需要預先給對應保底的卡牌進行定價,比如價值1000 RMB,那么當玩家抽卡次數達到一定值N時(這里假設每次十連抽價格為188 RMB,N約為60,注意:卡牌定價≈N*抽卡價格 就可以),如果依舊沒有獲得保底卡牌,則必然會獲得一張,一旦玩家獲得保底卡牌后,N重置為0,重新開始計數。
這種方案比較簡單,N可以為固定數值也可以為一定的浮動值,這種方案主要為運氣不好的人服務,擋不住歐皇。
2.不重置抽卡。這種方案在于每個玩家抽卡前先將卡池設計好,比如卡池生成了1000張卡牌,900張R卡,90張SR卡,10張SSR卡。玩家每次抽卡都是從這個卡池中取卡,取出的卡牌不再加入這個卡池,直到玩家將這1000張卡牌全部抽完。再重新生成1000張卡牌,再次進行這個循環。
理論上來說,這種方案是最公平,所有玩家在抽完卡池后,獲得卡牌都是一樣的。但是這種方案在于大多數玩家抽不空卡池,更大的弊端在于一旦增加新卡進入卡池,這個卡池就要變換,導致達不到保底的效果。
3.浮動概率。這種方案有點類似于PRD算法。這種抽卡的機制在于每次抽完卡后調整所有卡牌的比例,讓單人整體抽卡的感覺更趨近與高斯分布,但是收斂的方式會更快,從而讓最終的結果接近于期望。
這種方案相對來說比較復雜,目前也只見過極少數項目用過,需要大量的數學公式,個人對這塊研究不深,就不展開了。
其實,我們看到在抽卡的概率上面設計者并沒有做太多的隱藏設計,但是為什么玩家怎認為是設計有缺陷,甚至調侃到玄學上面去呢?
我認為是基于兩方面,一方面是因為幸存者偏差,很多玩家更多將注意力放在抽到卡牌的玩家,而對于沒有抽到玩家沒有關注(全服通告也只會告知玩家誰抽到好卡,而不會告知多少玩家沒有抽到)。另外一方面在于抽卡的概率在大量玩家的基數上是平均的,但是對于單個玩家的概率并非平均。
從個人體驗設計來說,個人認為保底是必須,哪怕會打破真實概率,因為比起獲得卡牌的成功體驗,失敗的體驗設計對玩家來說是非常糟糕。甚至有些大R玩家直接會打電話給客服,寧愿花錢去購買卡牌,而不是讓自己一次次體驗失敗。
洗牌算法
洗牌算法最典型的應用莫過于音樂播放器的隨機播放。
在最早期的時候,播放器的隨機播放就是采用的真隨機,但是用戶很快就發現,經常會遇到接連播放同一首歌,或者連續多次在幾首歌之間來回切換,而另外某些歌曲幾百次也放不到。為了解決這個問題,播放器就把真隨機改為了洗牌算法。
所謂的洗牌算法就是:如果你的歌單有20首歌,就建立一個1到20的數組,再把這20個數字像洗牌一樣洗成亂序。
在洗完之后,如果第一個數字是n,第一次就播放歌單里的第n首歌。以此類推。
組合隨機算法
所謂的組合隨機,典型的應用就是在抽獎的時候進行兩次判斷:
一次不隨機:根據預設好的確定數組,給予玩家對應的chest。
這一次主要是用于確定獎品品質。
一次真隨機:從選中的chest中隨機抽取一件物品給玩家。
這一次就是從對應品質的獎品堆中隨機獲取一件物品。
最典型的例子就是《我叫MT》的手游。
在這個游戲里,你第幾次抽獎能中紫卡是完全確定的,但是你具體抽到哪一張紫卡則是隨機的。
在游戲中一般會用到真隨機和偽隨機兩種方式。
可以說,真隨機是一種自然的隨機機制,用代碼來實現也非常容易,只需要用一個隨機數與一個常量進行比較,根據大于小于等于分別觸發不同的結果就行了。
而偽隨機則是人為創造出來的一種機制,他需要程序員寫下更多的代碼,也需要數值設計者做更多的計算。
那么,既然偽隨機費時費力,還反自然,為什么在應用領域還要引入各種偽隨機的算法呢?
其目的就在于——讓用戶得到更好的體驗。
真隨機,就是原始時代的怪物掉落,掉不掉全看運氣。每次概率都是一模一樣。
偽隨機就是,如果該玩家第10次還未掉落該道具,則系統會強制必掉該道具。同時在獲得該道具后,概率又恢復初始。還有一種做法,就是每次沒有獲得該道具,概率就增加,到第10次,概率是100%,必得。
概率是為了增加游戲的樂趣和期望,但是概率是不可控的。為了降低概率不可控所帶來的挫敗感,在游戲中,都增加了一些機制,來讓概率的設計符合預期。
早期的游戲,概率只是游戲樂趣的一部分。而現在,概率成了游戲設計者賺錢的一種主要方式,說不上算好還是壞。