作者:
orze04 (orz)
2017-10-06 01:18:03※ 引述《dansy (Eye Taiwan)》之銘言:
: 蠻好奇線上遊戲的抽卡機制到底是怎麼運作
: 爬了一下文 沒發現有討論過 提出來問問版上神人
: 有人在業界工作知道如何實作嗎?
: 1.卡片在伺服器端早已序列產生好
: 在巴哈看過的一種說法
: 簡單來說就像買刮刮樂(物理),玩家抽卡只是跟伺服器"領卡片"
: 單抽領1張,10連就領10張,完全照順序發出
: 2.伺服器端即時產生亂數,再依照亂數大小生成卡片
: 這比較像擲骰子的概念,擲中就有
: 先亂數產生一組數值,再參照數值卡片對應表,決定發哪張卡片給玩家
要看random seed怎麼取的,當然官方不可能告訴你
常用的一種亂數方法:
1. 取電腦系統時間當seed(單位可以取到ms)
2. 這個值經過hash(雜湊)運算後會對應到一張固定的表的某個位置
此表可能長這樣9 8 1 0 2 5 7 6 4 3
3. 之後每次開始取亂數時都從這個位置依次往下
假設之前是骰出1,只要seed沒有更新,依次會骰到0 2 5 7 6 4 3 9 8 1....
4. 當然實際情況每次取亂數前都一定會更新seed(回到第1)
卡池中所有卡片(當然有重複)排成一張像第2步中固定、打散的表單
每次抽的時候會重置seed,十連則是根據位置往下連十個
保底機制可以透過表單設計時就排好,任連續十位置內必有SR
關鍵:
Seed用到的參數
雜湊函數
內容物表單
我是覺得不想驗證了,一切隨緣
作者:
asteea (Asteea)
2017-10-06 02:00:00時間反而不會常用... 去看一下entropy吧
作者:
ddavid (謊言接線生)
2017-10-06 02:55:00寫小程式或單機遊戲的話還是挺常用的啦,反正不要求亂數品質,甚至還會反過來利用亂數種子固定這回事XD商業用的話就看情況了,不過我說真的要對付多人轉蛋遊戲,即便時間亂數種子還是綽綽有餘了,要爛到出現時間流抽卡有效還真不是普通的爛才能辦到XD
作者:
ddavid (謊言接線生)
2017-10-06 06:46:00樓上那個影片當年板上就提出來討論過了喔跟當年一樣我就問這句,你拿兩台手機來有沒有能力重現成功如果這不是隨便拿兩台手機來就可以高機率(就不很嚴苛地說百分之百)重現的話,那這影片就沒有什麼驗證時間教的能力XD頂多驗證了只要機率存在就是有人可以賽到XD這影片都一年多了,板上不用多,看有沒有一個人試得出兩台二抽一樣的東西就好XD(雖然要求設到這麼低也是失去證據能力了)。如果這重現幾乎做不到,那就跟法老說五星很好抽是類似的事情XD
假設真的是用時間且取到ms,那影片也沒辦法證明什麼吧,先不說兩隻手是否真的同時按,光 request 回server 的時間就無法掌握了
想就知道納影片不可能證明了阿如果兩個人誤差兩三秒按十連抽第一個人在第三連中了一隻五星 那不就代表第二個人後面必中五星
作者:
kazumi66 (ふぅ☆Bryce♪(*′ω‵*))
2017-10-06 08:36:00而且就算那影片同步 請問你怎知道全世界沒有人跟你同步?那種影片根本不能代表or證明什麼
作者:
LayerZ (無法如願)
2017-10-06 10:48:00mmo抽卡用時間種子亂數表就很夠啦