50%暴擊等於4下必暴 遊戲中的偽隨機你知道多少?
很多玩家在遊戲中都經歷過這樣的事:
自己的明日方舟爐石傳說,10連開包次次藍天白雲;朋友1抽,哇!金色傳說。
以前刷大菠蘿,現在刷懷舊服大螺絲,遊戲變了,但運氣還是那般,一世無橙。
玩LOL和DOTA2的時候,自己的英雄50%暴擊紅字難求,對面的15%暴擊重拳出擊。
每當遇到這種倒黴的“隨機事件”,總能讓人頓足捶胸:這哪裡是什麼技術遊戲?分明就是辣雞遊戲,全靠運氣!
其實不管是現實生活還是遊戲世界,都存在各種各樣的“隨機事件”。中彩票有概率、掉橙卡有概率、女朋友無緣無故生氣也有概率。
但兩者又有些不同。女朋友生氣大多數時候是看心情的,難以預測;而遊戲世界裡的大多數“隨機事件”都有一個“劇本”。
也就是說,你今天開的藍天白雲、打怪爆的什麼裝備,其實系統早就給你安排得明明白白了。這些所謂的“隨機事件”其實不是真隨機,而是按照程式碼來實現的“偽隨機”。
那問題來了,什麼是“偽隨機”?
01 偽隨機
大家可以簡單理解為,能用演算法生成近似於隨機結果的嘗試,叫偽隨機。(此處的演算法一般指梅森旋轉演算法,這裡不展開)
舉個通俗易懂的梨子,音樂app的隨機播放就是典型一個的偽隨機。
今天我想在咪咕上隨機播放3首歌。系統會根據演算法,隨機給我生成一個播放列表。如果是真的隨機,我會聽到重複播放的歌曲。比方說我聽完《Love Story》下一首還是《Love Story》的概率是33.3%。
然而事實卻是,隨機播放的歌基本不會重複。所以當這個歌單播放了2首歌之後,我是能準確預測第3首歌的。
這種“部分可預測性”是偽隨機的最大特徵之一。
而真正的隨機事件,是相互獨立的,它不受其他事件的發生而影響。它不會因為你播放了這首歌,而影響下一首歌的播放。每一個結果都不可預測(最多有概率)。
那為什麼要用這樣的“偽隨機”來營造一種“隨機”的感覺呢?
說出來你可能不信,選用“偽隨機”是為了照顧玩家(使用者)的體驗,讓玩家(使用者)感到更“隨機”。
02 遊戲中的偽隨機
遊戲中也存在各種各樣的隨機事件。
就以文章前面說到的明日方舟為例。遊戲中最優質的卡牌——六星幹員爆率是2%,這個概率雖然看著通俗易懂,但很多人其實是有認知盲區的。
不少玩家將它簡單地理解為“開50包必有1張六星”,但其實開50包至少有1張六星的概率只有1-(1-0.02)^50=63.58%,剩下36.42%的人即使開滿50包,他們連見六星影子的機會都沒有。
就算是把開包的次數增加到100次和150次,依然會有13%和5%玩家開不到六星。在真實的隨機事件下,這些情況下是客觀存在的。
但對玩家來說,他們很難意識到這點。看著自己充了足夠多的錢,卻享受不到良好的遊戲體驗,他們會遷怒於遊戲的運營和策劃,罵遊戲作假、策劃暗改數值。
為了避免這種情況的發生,大多數集卡式遊戲的抽卡系統都有一個叫Pity Timer(憐憫計時器)的保底機制。
還是以明日方舟為例。前50次不出六星的話,從第51次開始每次抽取就增加2%的六星爆率。就算是“非酋”,最多也會在第99次時抽到1張六星。
這種模式,有點類似war3的偽隨機機制:PRD機制(英文全稱Pseudo Random Distribution)。
其實現在很多競技遊戲中的偽隨機機制,都是從war3演化而來的。就拿文章開頭的暴擊率為例。
DOTA2中的主宰(劍聖)有一個技能叫“劍舞”,滿級時能提供35%的暴擊率。
如果按照真實隨機來計算的話,連續打出2次暴擊的概率是12.25%。
過高的暴擊概率或許是觀眾的一發興奮劑,但對嚴謹的競技賽事來說,這無疑是砒霜。因為一次人品爆發秒掉對方核心,可能毀掉一個職業戰隊1年的努力。
為此,在不調整概率的情況下,V社學習了war3的機制,修改了相關的演算法。目前DOTA2中所有的暴擊、閃避、擊暈、格擋效果都遵循PRD機制。
所謂的PRD機制可以用一個公式概括:
P(N)=C×N
其中,C是一個小於1的常數(演算法複雜,但有現成的數值表),P(N)是事件第N次嘗試時的概率。公式所表達的意思是,從事件發生起,每次不成功的嘗試都會增加1個固定值;成功後概率重新計算。
這麼說可能有點雲裡霧裡,我用實際情況表達一次大家可能就理解了。
主宰的暴擊率是35%。但第一次攻擊時,它的實際暴擊率(C值)只有16%。此後每次不暴擊的攻擊都會使暴擊率提升16%。一直到第7下時暴擊率為112%(理論上的數值),這意味著必出暴擊。
DOTA2 WIKI提供的資料
換句話說那就是,35%的暴擊率=攻擊7下至少出1次暴擊。將新機制代入計算後,你會發現,35%暴擊率連續觸發暴擊的概率僅有2.56%。相比之前,下降了近10%。
這樣的計算方式降低了小概率事件的連續觸發,大大降低了運氣對比賽結果的影響;同時也規避了連續不觸發的情況,保證了玩家的遊戲體驗。
除了DOTA2以外,LOL的暴擊率也是採用了類似PRD的偽隨機機制。
早在2011年的一次美服更新裡,就有寫道這麼一句話:
(參考譯文)我們已經改變了暴擊和閃避的計算方式。你現在會有更少的“幸運”或“不幸運”的場景,你不會有連續的暴擊或閃避,也不會被連續暴擊或閃避。你的平均暴擊率和以前一樣,如果你有50%的暴擊率,你攻擊100次仍然會暴擊50次。
這樣的機制一方面在保護玩家的體驗,另一方面又讓結果傾向“隨機”。除此之外,我們還能從這個機制“預測並掌握”一些資訊。
比方說蠻王的被動技能“戰鬥狂怒”會提供最高50%的暴擊率。它的起始C值約為30%(參考DOTA2的C值)。如果連續3次平A都不出暴的話,那麼第4次是必然出暴的。
因此實戰的時候,當你發現自己A了小兵3下都沒出暴擊的話,那麼第4下可以果斷選擇A對方的英雄了。
當然競技遊戲裡還是有少部分設定是“真隨機”,比方說DOTA2藍胖的多重施法,是歐皇還是非酋全看臉。
03 計算機與偽隨機
每次在提到遊戲偽隨機這個話題的時候,總離不開一句“至理名言”:計算機只能生成偽隨機。
事實上,當68年前第一臺商用計算機Ferranti Mark 1問世後,“電腦科學之父”阿蘭·圖靈就設計出了一個真隨機數發生器(True Random Number Generators,簡稱TRNG)。
它的原理是根據系統內的電器噪聲,生成一個20位元的隨機數字串。經過近半個世紀的發展,TRNG的技術才真正成熟。現在的TRNG已經可以通過採集環境中的空調聲、雷暴聲、女朋友撒嬌等聲音來生成隨機數了。
在這其中有一個比較知名的真隨機數網站:RANDOM.ORG。如果大家需要一些隨機數,可以去嘗試一下(不用梯子)。
隨機數視覺化後的影象,孰真孰偽很明顯
因此準確來說應該是:計算機可以生成真隨機但程式不能。
那既然有TRNG,為什麼還有那麼多遊戲用程式生成偽隨機呢?
這裡主要是成本和效率的問題。TRNG的除錯、維護成本都很高,而且效率低下。中國一個大型網遊幾十萬人同時抽卡的運算量,TRNG可能都應付不過來;作為對比,偽隨機程式可以輕鬆搞掂上千萬的運算量。
再加上現在的偽隨機數程式,已經快做到“以假亂真”的程度了。在諸多現實因素的綜合考量下,用偽隨機數的app、遊戲才會越來越多。
所以啊,別去迷信那些所謂的“抽卡玄學”了。程式早就給你安排得明明白白了。
參考資料:
1、NGA:wjndante的“概率與隨機”三部曲之其一——如何用計算機生成“真隨機”
2、DOTA2 WIKI、爐石傳說WIKI
3、random.org網站上Dr. Mads Haahr的文章
後記
1、關於音樂app的隨機播放,最開始iTunes用的確實是真隨機。但後面有使用者投訴說,怎麼老是聽到重複的歌?你這是真的隨機嗎?你耍我呢??
蘋果公司有苦說不出,最後把“真隨機”改成了”偽隨機”。改完之後,蘋果使用者紛紛點贊。我佛了。
2、PRD機制中的C值計算是一個比較複雜的過程,有興趣的玩家可以去DOTA2 WIKI頁瞭解一下。另外因LOL沒有公開相關的C值,因此文中相關的討論參考了DOTA2中的數值,如果不太準確,還請大家見諒。
3、DOTA2的暴擊、閃避、格擋等機制一開始採用的是真隨機的演算法,但玩家試玩後表示並不習慣,後來V社還是沿用了先前war3的PRD機制,並做了改進。
不得不說,war3真是一款偉大的遊戲。那時的暴雪擁有一群富有靈性、眼光卓絕的遊戲天才,真是當之無愧的遊戲夢工廠。
作者:遊戲大俠達文戲
來源:遊民星空
原地址:https://club.gamersky.com/activity/393558?club=163
相關文章
- 策劃解讀:關於“暴擊”的誤解與數值的“偽隨機”隨機
- 街機遊戲中與眾不同的費血技能 超高傷害的暴擊效果遊戲
- 凱撒文化暴漲背後,位元組遊戲的進擊之路遊戲
- using 你知道多少?你必須知道的.NET讀書筆記筆記
- 關於web中的顏色表示方法,你知道多少?Web
- oracle中*_name你知道多少?Oracle
- 玄不救非,氪不改命 如何分清遊戲中的“真隨機”和“偽隨機”?遊戲隨機
- matlab中的偽隨機數原理Matlab隨機
- CSS中如何實現偽隨機?CSS隨機
- 關於釣魚郵件,你知道多少?
- 關於Python縮排,你知道多少?Python
- 這些關於WebSocket的知識,你知道多少?Web
- 高校畢業生暴增,“就業”or“創業”,你知道該怎麼選嗎?就業創業
- 微信戀愛小遊戲的甜蜜暴擊 看這些產品如何花樣撒糖?遊戲
- 《風暴英雄》裡那些超棒的遊戲設計遊戲設計
- 關於持久記憶體(PMem)你知道多少?記憶體
- 關於輪播圖的技術理解你知道多少
- 10種常見的計算機病毒,你知道多少?計算機
- 遊戲公司豪賭數億,暴富抑或暴斃?遊戲
- C#.NET 中你必須知道的反射C#反射
- 暴風魔鏡5釋出 暴風新一代VR手機盒子又來了VR
- 關於Http協議,你必須要知道的HTTP協議
- 關於知識付費原始碼,你知道多少?原始碼
- 遊戲股集體暴漲 但中長期來看風險猶存遊戲
- 談談戰鬥力【二】——暴擊、穿透與減法公式穿透公式
- 暴風影音等數千款APP遭惡意SDK嵌入APP
- win10系統下暴風影音中暴風盒子載入不出來如何解決Win10
- 來自次世代的暴擊:虛幻引擎5首亮相,遊戲實時渲染媲美影視級作品遊戲
- 偽隨機數是什麼?偽隨機數生成方法有哪些?隨機
- 你必須知道的 SmartSql !SQL
- 漫畫|面試風暴面試
- Linux下的OpenSSH,你知道多少?Linux
- 讓電網從大風暴、網路攻擊、太陽耀斑等破壞中快速恢復,美能源局看上AI的效力AI
- 關於NoSQL,你必須知道的九件事SQL
- “20%暴擊”!為什麼在遊戲裡的各種增益總需要一個百分比?遊戲
- 基於python的多執行緒暴破指令碼Python執行緒指令碼
- 03.關於執行緒你必須知道的8個問題(中)執行緒
- 華為Q1智慧手機出貨量暴漲 50%,成為世界第一穩了?