關於遊戲中繞不開的“概率”計算問題,不少人可能都有這樣的疑惑:不止抽卡遊戲,就連單機遊戲顯示的數字幾乎都沒有真實的。
99%能MISS 好幾次,80%跟50%一樣,20%跟沒有一樣。
做個真實概率從技術角度應該沒什麼難度,為什麼這些遊戲都像約好了似的要噁心玩家呢?
實際上這種基操並不是為了噁心玩家,倒是真實概率才可能會噁心到玩家。策劃沒事兒幹為什麼要在這個點上噁心玩家?而且還用了一種複雜的方式來幹一件不討好的事情?
最容易實現的方式就是所謂的真實概率,完全不需要做什麼特殊設計。那麼保底和門檻,都是為了避免歐皇和黑臉。排除一些極端結果產生(數據其實反映這種感受總體是負面大於正面的,絕大多數玩家只看最終感受,不會去跟策劃詳細算概率是否真實,除非是需要嚴格計算傷害的一些策略卡牌遊戲)。
這種非真實概率的情況多數在mmo的戰鬥數值裡用到,主要目的還是提升暴擊等百分比屬性的整體體驗,如果你玩的遊戲真是你描述的這個情況,只能說他們沒設計好。
策劃:淦!我英雄25%暴擊,連續打了十幾下,怎麼一次暴擊都不出?!tm人家一反手三個技能,個個都是暴擊!你趕緊看看是不是概率出問題了?
程序:概率沒問題,每次都是隨機的,你臉黑而已。
策劃:那不行啊,他臉白又不會感恩遊戲,給我們充錢,但臉黑的是有可能發貼罵娘,甚至退遊的啊!我聽說你們用的是偽隨機,我們能不能用真隨機啊?你能不能讓它不要連續暴擊,以及不要連續那麼多次不暴擊啊...
程序:你理解的偽隨機和程序理解的偽隨機不是一個概念。
偽隨機不是假的隨機,而是指隨機數在特定週期內重複而已。一般是通過一定的算法和種子來產生。隨機數的質量取決於算法質量(隨機數生成器)。
而真隨機是指通過真實隨機事件取得的隨機數,比如噪音、核裂變、宇宙射線的觸發時間、腦電波等等,具有隨機性、不可預測性、不可重現性。計算機的代碼、算法是確定的,不可能生成真隨機數。
策劃:…
我希望的隨機分佈是這樣的:假設遊戲中暴擊率是25%,我希望每100次攻擊中出現25次暴擊,然後這些暴擊的出現呈相對均勻的分佈,不能連續的暴擊或者連續很多次的不暴擊。我說清楚了麼?
程序:你要是學過概率就知道,隨機函數只在大數據量的情況下滿足隨機分佈,並不在有限的次數內呈現隨機分佈,越是少的次數,分佈可能越差。
策劃:我理解,但是你要考慮一下玩家的感受。就以15%暴擊率為例,連續10次不暴擊的幾率高達19.69%,連續20次不暴擊的幾率也有3.87%。玩家遇到這種情況,是要罵策劃司馬,甚至退遊的。
程序:那只能在邏輯上層人為干預,比如限制每個玩家每週最多且一定能抽到1個SSR,每個玩家在某個活動中最多隻能獲得一個寶石,等等。
策劃:這種邏輯很繁瑣,而且會影響玩家對於遊戲的預期,一旦某周抽出1個SSR,那玩家就不會再抽,直到週期被重置。
程序:有種算法叫洗牌算法,音樂播放器的隨機播放就是採用這種算法。這個算法的原理是將(0, M)個數字隨機打亂,形成一個序列,它必定滿足隨機性及在(0, M)之內的均勻分佈。然後,我們每次從中抽取一個數值,與我們期望的數值進行比較,從而判斷是否命中。比如15%的概率,可以簡化為在(1, 100)中抽取一張,如果小於等於15,那麼就命中。當然,我們也可以用(1,20)中抽取小於等於3的數值作為命中。
策劃:好像也不是太行,這種算法每次都要把牌發完,才允許重置序列,這樣只能在小範圍內保證隨機分佈的均勻。為什麼Dota裡面玩劍聖的時候就不會出現連續10幾次不暴擊的情況?
程序:War3使用的是PRD算法,記錄隨機數的上下文,用於人為的干預隨機數的產生,使得隨機數可以按照期望的規律在較小的次數內呈現較為均勻的分佈。通過這種方法,甚至可以模擬出完全的抽取式的隨機,比如20%的幾率即意味著,5次裡面必然出現並且只能出現1次...
策劃:有點意思了,展開講講。
程序:在WAR3中,一個暴擊率20%的英雄,並不是每一刀都20%暴擊率,而是以5.57%作為初始暴率,如果第一刀不暴,則第二刀的暴率增加到初始值的2倍,即11.14%;如果還是不暴,就繼續增加到初始值的3倍:16.71%,以此類推。而如果在這個過程中任何一次攻擊打出了暴擊,就會把暴擊率重置到5.57%。
策劃:對啊,這才是我想要的隨機效果!
程序:這個算法也不只是用在暴擊/掉落上面,在合成、強化等系統都可以考慮。
策劃:這個可以,但你說這樣會不會就不刺激了呢?陰陽師那麼多非酋百抽啥也不給不也還玩著麼?
程序:…
#遊戲#遊戲行業#遊戲概率#