[問題] 單機遊戲用seed生成的假亂數表好處是?

作者: ZMTL (夜風/瀟湘 VR板已經開板!)   2018-03-07 11:50:42
嗯,雖然我是APP工程師,但大學不是唸本科畢業後才半路出家的,
對這點真亂數、假亂數以前耳聞過討論卻沒什麼概念,剛好跟遊戲有關想到就問一下。
首先舉例使用假亂數表的遊戲,以下有稍微簡化過程:
1.魔物獵人:世界
「煉金」功能是拿X個珠子生成三顆新的珠子,存檔讀檔結果不會變。
後來被發現有一張表,像這樣
A B C
D E A
A A C
如果你是這次煉金出來是ABC,下次煉金出來是DEA,下下次煉金出來是AAC
那你可以先不練金,去打兩場任務出來就會變成AAC。
(實際上打任務推進的序列是1、1、2輪迴,按下不提)
細節:https://forum.gamer.com.tw/C.php?bsn=5786&snA=137873
2.神奇寶貝
「生蛋」功能是公母方配種生出子代,特定變因固定下存檔讀檔結果遺傳項不會變。
父母都有 A B C D E F六項能力,分別遺傳父母的哪幾項在變因固定下是不會變的,
但變因不包括父母是誰,所以可以確認會遺傳哪一項後再更換父母取得特定遺傳的子代,
進階一點用法就是找到第XXXX次會生出色違後,
用低步數就生出來的神奇寶貝跳過中間不需要的部分,
在指定的位子再更會為要的神奇寶貝快速取得色違。
細節:https://home.gamer.com.tw/creationDetail.php?sn=3427102
那問題來了,
如果說是避免玩家用SL大法來硬洗出想要的成果,卻反而造成未來成果會被預測,
難道單機遊戲做不到真正在產出結果當下進行亂數,或者亂數表假亂數表有什麼優點嗎?
其實對這問題有疑問好久了w
很多人說MHW洗珠子無聊會消耗熱情,但經過PM的洗禮我真的覺得還好XD
順帶一提,很多線上遊戲/網路遊戲的都市傳說有時候我不會完全不信的原因也是這個。
作者: gaym19 (best689tw)   2018-03-07 11:52:00
為了方便 就這樣
作者: emptie ([ ])   2018-03-07 11:52:00
可預測有時候是優點啊
作者: qqq3892005 (ShinyaS)   2018-03-07 11:52:00
電腦就做不出真隨機的 什麼公式都只是用來算出要挑「亂數表」的哪一格
作者: tonyxfg (tonyxfg)   2018-03-07 11:52:00
因為比較簡單,搞得太複雜又沒好處,平白浪費時間與空間
作者: yyh121 (' 3' /)   2018-03-07 11:52:00
比較好寫
作者: WiLLSTW (WiLLS)   2018-03-07 11:52:00
電腦就弄不出真隨機....
作者: ZMTL (夜風/瀟湘 VR板已經開板!)   2018-03-07 11:53:00
以我現在開發app而言,下個亂數指令怎麼想都比用seed建表方便啊XD
作者: robo3456 (冽影)   2018-03-07 11:53:00
mh以前就有各種亂數調整刷護石
作者: arrenwu (鍵盤的戰鬼)   2018-03-07 11:53:00
因為亂數表比你舉的例子大多了 你要預測啥?
作者: gaym19 (best689tw)   2018-03-07 11:53:00
而且電腦用不了真隨機 只能盡量接近
作者: squays ( 葵寶)   2018-03-07 11:53:00
十年前P2G就在洗骨頭惹
作者: ZMTL (夜風/瀟湘 VR板已經開板!)   2018-03-07 11:54:00
以我舉得兩個例子而言,都被直接讀出表來在用各種方式跳過中間的行了,其實可以很不隨機
作者: ilohoo (ilohoo)   2018-03-07 11:54:00
有沒有考慮發到GameDesign版問問?
作者: ZMTL (夜風/瀟湘 VR板已經開板!)   2018-03-07 11:55:00
我知道電腦做不出真正隨機這個說法,但這兩例會被解出來也離仿真隨機有點距離了?
作者: gaym19 (best689tw)   2018-03-07 11:55:00
不要小看遊戲研究家 他們亂數找的很精
作者: arrenwu (鍵盤的戰鬼)   2018-03-07 11:56:00
我好像誤會你的意思了 你的意思是設計者自己定義一個很小的樣本空間是嗎?
作者: gaym19 (best689tw)   2018-03-07 11:56:00
只有非真隨機 他們就有方法找出表
作者: ZMTL (夜風/瀟湘 VR板已經開板!)   2018-03-07 11:56:00
也可能很大,但那個空間一被讀出來就可以被猜到下面幾步
作者: seaEPC (沒看見,我沒看見 >_<)   2018-03-07 11:56:00
資訊領域裡面講的真假隨機跟你舉例子的照表執行是兩回事
作者: gaym19 (best689tw)   2018-03-07 11:57:00
當然不一定是完全正確 但隨著發展 準確率仍會持續提升
作者: arrenwu (鍵盤的戰鬼)   2018-03-07 11:57:00
痾 如果程式亂數是用 rand() 你建出表也跟隨機差不多了
作者: lordmi (星宿喵)   2018-03-07 11:57:00
兩件事 1.電腦即時產生真亂數表成本太高 2.自然亂數
作者: arrenwu (鍵盤的戰鬼)   2018-03-07 11:58:00
應該說你講的這兩個例子都可以說是相當短的遊戲時間內進行預測 對吧?
作者: lordmi (星宿喵)   2018-03-07 11:58:00
是非均勻的,不利控管歐皇比例
作者: gaym19 (best689tw)   2018-03-07 11:58:00
但那樣沒什麼意義 反而累得要死
作者: arrenwu (鍵盤的戰鬼)   2018-03-07 11:59:00
即時call rand() 成本會很高嗎?因為原po所講的情況是開發者刻意用一個既定樣本空間
作者: h1818181 (汽水)   2018-03-07 12:00:00
MH的亂數表我都只是當作他是這系列的特色
作者: arrenwu (鍵盤的戰鬼)   2018-03-07 12:00:00
而且那個樣本空間還不是很大 看幾個sample就可以預測
作者: ZMTL (夜風/瀟湘 VR板已經開板!)   2018-03-07 12:00:00
嗯,我表達不好,我主要也是想知道為什麼不及時call亂數function
作者: arrenwu (鍵盤的戰鬼)   2018-03-07 12:01:00
如果今天你要看100個sample才能預測 也夠隨機了XD
作者: gaym19 (best689tw)   2018-03-07 12:01:00
這個你要回到開發時間當下才能知道
作者: vsepr55 (vsepr55)   2018-03-07 12:01:00
其實遊戲客群大部分沒那麼閒在那邊算吧…
作者: gaym19 (best689tw)   2018-03-07 12:02:00
可能現在可以 但當時大概會出問題
作者: arrenwu (鍵盤的戰鬼)   2018-03-07 12:02:00
ZMTL至在說有些變數的樣本空間小到玩家能找出規律了
作者: qqq3892005 (ShinyaS)   2018-03-07 12:02:00
你用亂數function的話 SL不就會變了?這樣大家會很幹啊,刷到好寶物運氣不好打不贏,結果一SL就變廢物
作者: gaym19 (best689tw)   2018-03-07 12:03:00
而且我覺得工程師也沒想到會有狂人研究得這麼徹底
作者: arrenwu (鍵盤的戰鬼)   2018-03-07 12:03:00
破譯程式碼這跟作弊沒兩樣啦 到是可以不用考慮
作者: billzs (ayato)   2018-03-07 12:03:00
用表 玩家SL的時間成本比直接隨機來的高
作者: arrenwu (鍵盤的戰鬼)   2018-03-07 12:04:00
只是如果看過一次ABC就可以預測下次跟下下次 這就太小了
作者: asd823 (Jason)   2018-03-07 12:04:00
能保證機率才是重點
作者: howdiee (浩呆)   2018-03-07 12:05:00
跟遊戲體驗也有關係吧 真隨機就會有玩家非洲到崩潰
作者: arrenwu (鍵盤的戰鬼)   2018-03-07 12:05:00
你講的大概就像大富翁2台灣地圖國泰人壽一定會飆漲一樣崩潰? 拜託 賭博就是要有風險好嗎 不然怎麼讓人賭到瘋狂
作者: gaym19 (best689tw)   2018-03-07 12:06:00
假隨機理論上就算非到靠北 一定刷得到素材
作者: emptie ([ ])   2018-03-07 12:06:00
有些遊戲,像是Minecraft或是矮人要塞那種 輸入同一個seed,所有的rng要素都一樣
作者: lordmi (星宿喵)   2018-03-07 12:08:00
真隨機=巨觀風平浪靜微觀波濤洶湧 認真講 就只有一個原因
作者: gaym19 (best689tw)   2018-03-07 12:08:00
拿PUBG來說的話 有些降落點物件明顯比其他點豐富且強大
作者: bnd0327 (阿噗噗)   2018-03-07 12:08:00
有看過相關研究指出真隨機反而讓人感覺不出隨機感
作者: milkool   2018-03-07 12:09:00
PC系統裡可以用IO熵值池拿出亂數 但拿光後就會堵塞卡住
作者: lordmi (星宿喵)   2018-03-07 12:09:00
控管容易,單機還好 大一點線上遊戲公司需要配置相當人力
作者: gaym19 (best689tw)   2018-03-07 12:09:00
真隨機大概就變成開場隨便跳個邊緣點都能滿裝這樣
作者: lordmi (星宿喵)   2018-03-07 12:10:00
在做這塊,我當PM以前還被禁止跟這些人討論咧w
作者: milkool   2018-03-07 12:11:00
IO熵值池會收集網路訊號、鍵盤滑鼠、硬碟反應等資料作成亂數值 理論上是不可預測的
作者: blc (Anemos)   2018-03-07 12:15:00
控制機率吧,遊戲發行量那麼大,難保有玩家會一路非到底
作者: arrenwu (鍵盤的戰鬼)   2018-03-07 12:16:00
有人一路非到底這才叫做機率吧XD
作者: SCLPAL (看相的說我一臉被劈樣)   2018-03-07 12:16:00
無雙三的寶珠算嗎?
作者: rewisyoung (小月兒)   2018-03-07 12:17:00
真隨機還真的會有非到靠背的情況
作者: SCLPAL (看相的說我一臉被劈樣)   2018-03-07 12:17:00
裝備刷等級~~有些我一直刷不到20級QQ
作者: gaym19 (best689tw)   2018-03-07 12:17:00
做了都無法跟計算的一樣 他們會知道這樣行不通然後重算
作者: higreater (覺醒)   2018-03-07 12:17:00
Spotify以前有真隨機選歌 結果是使用者大多覺得不隨機
作者: seaEPC (沒看見,我沒看見 >_<)   2018-03-07 12:18:00
不管產生的過程是真還假隨機,當你可以恢復上一動的環境重取同樣的數字的時候,就已經是可預測了啊
作者: siro0207 (希羅)   2018-03-07 12:19:00
為什麼不使用常態分布亂數? 每次煉金就算一次不就好了?
作者: longlongint (華哥爾)   2018-03-07 12:20:00
真隨機會有一定比例玩家重複嘗試都失敗不夠平均 會覺得衰 就跟你的人生一樣
作者: kaj1983   2018-03-07 12:21:00
保留SL的空間是好事啊
作者: gaym19 (best689tw)   2018-03-07 12:21:00
555555我的人生
作者: siro0207 (希羅)   2018-03-07 12:22:00
珠子有稀有度啊 當然不夠平均 所以我才建議常態分布
作者: arrenwu (鍵盤的戰鬼)   2018-03-07 12:23:00
均勻分布也可以展現不平均啦
作者: elase2000 (吉米黃)   2018-03-07 12:24:00
大部份的程式語言取亂數都有種子值,同種子值就會產生相同的亂數序,所以種子值都會是系統時間,以免產生相同亂數,會特意給值的大多是故意的。
作者: jack9731 (hidochunk)   2018-03-07 12:28:00
如果製作類似xb2的類保底不就可以避免非到炸的情況了嗎?
作者: darkckman (小喻)   2018-03-07 12:39:00
也許是寫遊戲的人也覺得刷卡些很無聊,故意露破綻
作者: kronioel (鵝妹子英)   2018-03-07 12:40:00
能預測>刷步數 不能預測>SL 沒辦法啊XD
作者: darkckman (小喻)   2018-03-07 12:43:00
樓上說的不存在的,可以強迫存檔覆蓋啊
作者: EricTao   2018-03-07 12:43:00
覺得是故意 讓你有hack的爽感
作者: zxc1020305 (理解不能)   2018-03-07 12:44:00
我也覺得是遊戲體驗的考量,真的仿隨機下去做就會有人非到爆炸,怎麼刷都刷不到,然後歐洲人各種輕鬆刷。人們感覺上的隨機跟真實的隨機是兩回事,記得看過音樂播放器的隨機播放如果真的仿隨機去播反而會被投訴不隨機w
作者: gigayaya (gigayaya)   2018-03-07 12:47:00
別忘記遊戲原本的目的是什麼
作者: Golu (沒了戒指的魔王)   2018-03-07 12:49:00
就隨機性(真假隨機)與遊戲體驗和營收控制的問題,決定要用那種做法
作者: smart0eddie (smart0eddie)   2018-03-07 12:49:00
非洲人需要的是強制保底
作者: aaaaajack (丁丁是個人才)   2018-03-07 12:52:00
因為好做啊,真隨機性很貴的...
作者: siro0207 (希羅)   2018-03-07 12:54:00
不過其實在SL大法下 真隨機也沒有用就是了
作者: aaaaajack (丁丁是個人才)   2018-03-07 12:54:00
至於保證遊戲體驗這種事情是來自保底機制之類的東西,不是來自偽隨機,不要想太多
作者: Bencrie   2018-03-07 12:55:00
存取 /dev/random 跟 /dev/urandom 速度差很多的
作者: siro0207 (希羅)   2018-03-07 12:55:00
像我提的常態分佈實作很簡單 但一樣會被SL大法攻破
作者: krousxchen (城府很深)   2018-03-07 12:55:00
我覺得唯一能用假亂數表的就是像SFC聖火
作者: FallenAngelX (跌倒)   2018-03-07 12:56:00
原po講的東西跟電腦弄不出真隨機根本是兩碼子事情
作者: krousxchen (城府很深)   2018-03-07 12:56:00
隨時隨地存檔、就算重開該死還是死,不會凹到活
作者: orze04 (orz)   2018-03-07 12:57:00
如果是完全無法預測的真隨機亂數,debug時就知道了
作者: krousxchen (城府很深)   2018-03-07 12:57:00
像機器人大戰的機率跟沒有一樣,直接重開到有=100%戰棋式就是玩機率,但真隨機能凹就叫玩S/L大法
作者: NoLimination (啊啊啊啊)   2018-03-07 12:59:00
如果不能預測 pm更會刷到崩潰吧
作者: siro0207 (希羅)   2018-03-07 12:59:00
能解決的方法就只有一種 就是存檔不在玩家手上這樣不管你是真隨機還是假隨機都可以
作者: orze04 (orz)   2018-03-07 13:00:00
要debug得重現,真隨機慢慢de到死吧
作者: guogu   2018-03-07 13:00:00
很多人沒看懂原po的問題...他想要問的是遊戲幹嘛自己還要做個亂數表反正都是要做隨機效果的另外做表不是很多餘的事情嘛?
作者: seaEPC (沒看見,我沒看見 >_<)   2018-03-07 13:02:00
你確定是做表嗎? 給你一個rand()函式,指定的seed,指定的
作者: FallenAngelX (跌倒)   2018-03-07 13:02:00
debug才不是什麼理由吧
作者: guogu   2018-03-07 13:03:00
直接用rand之類的就好 還更不容易被玩家抓到規律
作者: icemango (我是芒果)   2018-03-07 13:03:00
以遊戲設計的面向來說 這樣可以當成某種保底機制
作者: seaEPC (沒看見,我沒看見 >_<)   2018-03-07 13:03:00
所以問題不在rand怎麼取,而是Load回去之後你能把程式環境
作者: FallenAngelX (跌倒)   2018-03-07 13:04:00
MHW的例子就很奇妙 假亂數表 但是強制存檔
作者: seaEPC (沒看見,我沒看見 >_<)   2018-03-07 13:04:00
還原到取第N個值時的變因,那你永遠取第N的值都嘛固定數字
作者: guogu   2018-03-07 13:04:00
rand你可以用不同的seed 自己做表就是一種而已
作者: icemango (我是芒果)   2018-03-07 13:04:00
capcom 大可以每週塞一個新的表給你 讓你試不完
作者: FallenAngelX (跌倒)   2018-03-07 13:05:00
要說保底好像也怪怪的 那動機真的很迷XD
作者: seaEPC (沒看見,我沒看見 >_<)   2018-03-07 13:05:00
想打破這規律也很簡單,load回去後用當下時間重作seed就是
作者: guogu   2018-03-07 13:05:00
贊同保底的說法 像音樂播放程式為了讓你覺得"隨機"並不是真的跑rand之類的而是有規律的分配
作者: Golu (沒了戒指的魔王)   2018-03-07 13:05:00
因為要做出對不知道的人來說如同真隨機,但對知道的人來說就是固定結果所產生的玩家優越感差異,以及對於不同階段遊戲知識差異產生的新鮮感,這兩個概念結合的做法之一就是產生固定的表去處理隨機性
作者: guogu   2018-03-07 13:06:00
那樣一般遊戲如果要做隨機先弄了rand再去處理保底機制
作者: seaEPC (沒看見,我沒看見 >_<)   2018-03-07 13:06:00
然後"保底"這機制跟原PO問題是不相干的東西就是了
作者: FallenAngelX (跌倒)   2018-03-07 13:07:00
guogu的疑問seaEPC有回啊 單純以MHW的例子
作者: dreamnook (亞龍)   2018-03-07 13:07:00
未來結果被預測那代表說玩家已經深耕了
作者: guogu   2018-03-07 13:08:00
也就是做一個讓人感覺"隨機"的表 比用隨機讓人感覺更隨機
作者: dreamnook (亞龍)   2018-03-07 13:08:00
反而不是壞事而是好事
作者: FallenAngelX (跌倒)   2018-03-07 13:08:00
那單純就是rand()的seed是固定值 所以不會變沒什麼增加運算量的問題
作者: aaaaajack (丁丁是個人才)   2018-03-07 13:08:00
喔被標題誤導,所以癥結點是為什麼不重置seed?
作者: Golu (沒了戒指的魔王)   2018-03-07 13:08:00
有時候一些設計不能只從效能或程式面來看,玩家體驗才是最重要的依據
作者: FallenAngelX (跌倒)   2018-03-07 13:09:00
我就是在說MHW肯定不是這種例子因為有人洗了上千顆珠子還有沒看過的珠子如果說他們有特殊處理 那這常態分佈處理得相當失敗
作者: guogu   2018-03-07 13:11:00
卡普空不是專門做讀心晶片的嘛? 讓你刷不到才是他想要的(X
作者: FallenAngelX (跌倒)   2018-03-07 13:11:00
所以單純以MHW這例子而言 特殊處理讓玩家感受隨機應當不會是他們採用固定seed的理由才對好、好喔...XD
作者: guogu   2018-03-07 13:12:00
對,所以我的說法應該修正成 廠商不想要那麼隨機的結果至於是讓玩家感覺比較隨機還是嘿嘿嘿就不知道了w
作者: aaaaajack (丁丁是個人才)   2018-03-07 13:14:00
單純點就防SL而已吧,甚至一種可能是寫的時候根本沒考慮這麼多。很久以前遊戲公司應該根本沒想過玩家會研究隨機變因
作者: emptie ([ ])   2018-03-07 13:16:00
音樂播放器很多都是直接shuffle掉你給的清單,但播完會保證所有歌曲都輪一遍
作者: icemango (我是芒果)   2018-03-07 13:16:00
很多時候真的是沒想那麼多XD以前有個隨機抽格言的只是拿時間取餘數上線幾年以後變成讀心格言的傳說 超好笑
作者: aaaaajack (丁丁是個人才)   2018-03-07 13:18:00
音樂播放器那個是因為大家本來想要的就是shuffle啊,跟偽隨機完全沒有關係
作者: arrenwu (鍵盤的戰鬼)   2018-03-07 13:23:00
應該說音樂的shuffle才是大家要的東西
作者: cooper6334 (庫波)   2018-03-07 13:25:00
直接隨機的話反而容易用SL來凹結果用固定的亂數表不能直接SL,要改變結果就是多一道手續
作者: ZMTL (夜風/瀟湘 VR板已經開板!)   2018-03-07 13:29:00
多一道手續,但多了那道手續後效果比SL好也比SL省時間呢(?
作者: CreamP (人妻騎士)   2018-03-07 13:29:00
音樂shuffle比喻是要是真隨機可能會MHW5連刷出一項同能力所以故意建表讓玩家感覺是隨機 這解釋好像滿合理
作者: arrenwu (鍵盤的戰鬼)   2018-03-07 13:30:00
那個就要看設計者打算營造什麼樣的隨機產出情景了音樂這個隨機並不是要真實感
作者: seaEPC (沒看見,我沒看見 >_<)   2018-03-07 13:31:00
當然啊,你seed固定了後續的結果都是固定的
作者: arrenwu (鍵盤的戰鬼)   2018-03-07 13:31:00
但是很多遊戲中的隨機性是為了讓遊戲的世界增添更多真實
作者: ZMTL (夜風/瀟湘 VR板已經開板!)   2018-03-07 13:32:00
我是說從遊戲體驗出發,發現自己以為的「機率」其實是「命定」的話,很多人會說歐洲非洲從創角那刻就沒救了
作者: cooper6334 (庫波)   2018-03-07 13:33:00
舉例來說 煉金沒有想要的結果時,有70%的人會想SL
作者: arrenwu (鍵盤的戰鬼)   2018-03-07 13:33:00
ㄟ 那只是從 隨機變數 變成 隨機程序 而已
作者: seaEPC (沒看見,我沒看見 >_<)   2018-03-07 13:33:00
那就不是你這篇原文的範圍了,而是要有"保底"機制,那是另
作者: arrenwu (鍵盤的戰鬼)   2018-03-07 13:34:00
SL 是因為sample的時間點比他存檔時間更早啊
作者: ZMTL (夜風/瀟湘 VR板已經開板!)   2018-03-07 13:34:00
我講的只是用來反駁出於遊戲體驗採表的方式
作者: arrenwu (鍵盤的戰鬼)   2018-03-07 13:35:00
如果是為了遊戲體驗要實作pseudo prob的話也不會做非洲表
作者: kingroy (手殘總比腦殘好)   2018-03-07 13:36:00
遊戲上的設計來說他沒有需求去做到真正的隨機,雖然是可以連線的遊戲但他本質上還是單機,在亂數的結局上也沒有需求去做到公平或像轉蛋那樣保障消費者及保證公司收入的部分,只要能讓玩家感覺到這東西每次結果都不太一樣就好,有沒可以被分析出來的規律性都沒差,只要你的表格夠長,出同樣結果的頻度不足以讓玩家覺得怎又是一樣的程度就足夠了
作者: fkzj (fkzj)   2018-03-07 13:45:00
PS2上的真三國無雙Ⅲ,武器的各屬性就是以時間當seed的亂數只是在PS2上跑的時候時間只取到秒。然後就有了重置系統時間
作者: jimmy689 (吉米蛆蛆)   2018-03-07 13:49:00
我也想過一樣的問題,為什麼要使用預生成的表
作者: fkzj (fkzj)   2018-03-07 13:49:00
的方式來洗武器屬性。
作者: jimmy689 (吉米蛆蛆)   2018-03-07 13:55:00
後來想到,可能根本就沒有什麼預生成,是亂數過程的結算邏輯被玩家反推出來最外層看起來才像是已經有預定的表
作者: aaaaajack (丁丁是個人才)   2018-03-07 13:56:00
重看了一遍問題,我覺得核心原因還是真隨機難做阿...系統時間接近真隨機,但連續多個系統時間效果就不太好這個本來就是,所有變因確定的當下結果就不變了,預生成就是先算好,跟你要用的時候再算沒有區別啊
作者: jimmy689 (吉米蛆蛆)   2018-03-07 14:00:00
也有可能只是在照顧哈摳玩家w
作者: seaEPC (沒看見,我沒看見 >_<)   2018-03-07 14:03:00
所以需求隨機性比較嚴格的會去利用系統熵池產生隨機數列
作者: FallenAngelX (跌倒)   2018-03-07 14:04:00
系統時間隨機效果再怎麼差也比固定seed好吧
作者: chigi (  )   2018-03-07 14:05:00
其實說穿了,單機遊戲有必要真隨機嗎?讓玩家某個程度上可以掌控遊戲減少農度也是很重要的
作者: aaaaajack (丁丁是個人才)   2018-03-07 14:08:00
沒這回事,在"seed真隨機"的情況下偽隨機數可以符合比較低限度的需求,但系統時間你可能連續好幾個動作剛好差一秒
作者: FallenAngelX (跌倒)   2018-03-07 14:11:00
原po在問為什麼要用seed固定的作法然後你的回答是seed真隨機比seed用時間好所以seed不用時間你不覺得這回答邏輯上哪裡怪怪的嗎
作者: ssccg (23)   2018-03-07 14:12:00
建表只是解釋給不寫程式的人的說法,實際上就只是一個固定
作者: FallenAngelX (跌倒)   2018-03-07 14:13:00
MHW的狀況是 你現在刷珠子 第幾次刷到什麼都註定好
作者: ssccg (23)   2018-03-07 14:13:00
的函數而已,seed進去結果出來,至於seed為什麼不用真隨機這一定不是程式設計問題,是遊戲設計問題
作者: aaaaajack (丁丁是個人才)   2018-03-07 14:14:00
我只是在討論為什麼不每次隨機直接拿抓一個seed來用...
作者: FallenAngelX (跌倒)   2018-03-07 14:15:00
一樣啊 原po問說seed為什麼用固定的然後你的回答是 因為真隨機難做 seed用時間效果不好seed用時間效果有比seed固定差嗎?你回答seed用時間比seed真隨機差完全答非所問啊
作者: aaaaajack (丁丁是個人才)   2018-03-07 14:17:00
我的前提是單次系統時間接近真隨機,多次則不然,因此"每次取時間"比"用時間當seed"差直接開噴是吃炸藥膩
作者: FallenAngelX (跌倒)   2018-03-07 14:19:00
...所以還是沒回到為什麼用固定seed啊
作者: aaaaajack (丁丁是個人才)   2018-03-07 14:20:00
每次真隨機難做,因此取真隨機當作固定seed,然後做偽隨機,有問題?
作者: kokal (細菌)   2018-03-07 14:21:00
答案就簡單,好寫, 對randomness不要求的東西就會用固定seed
作者: Golu (沒了戒指的魔王)   2018-03-07 14:22:00
如果表中800次內都是爛東西,那自然是設計得差造成遊戲體驗差,但實際上都會在一定的次數內放一些稀有但不一定當前需要的東西"激勵"玩家繼續洗下去,"激勵要素"沒考慮進去只想到可能都爛東西,那自然會馬上想到都爛東西的可能性
作者: FallenAngelX (跌倒)   2018-03-07 14:24:00
ok我會錯意 我以為你說seed真隨機是說seed隨機變動
作者: Golu (沒了戒指的魔王)   2018-03-07 14:24:00
更多的眉角都是在程式面以外的設計
作者: GKki2012 (chichi)   2018-03-07 14:25:00
我外行地問一下若要做真隨機的話是要用某種感應器可以測測量出某種物理量當作隨機函數的參數去做的?還是什麼方還是用其他方法做出真隨機嗎
作者: aaaaajack (丁丁是個人才)   2018-03-07 14:27:00
像上面seaEPC大講的熵池吧,龜毛一點可以用量子 lol
作者: wifi (請輸入密碼)   2018-03-07 14:28:00
看到這個我莫名地想到骰動人生好運道....
作者: GKki2012 (chichi)   2018-03-07 14:31:00
有碰過熱力學的entropy 但是資訊理論的entropy我可能要
作者: seaEPC (沒看見,我沒看見 >_<)   2018-03-07 14:33:00
你可以查一下wiki上 /dev/random 的頁面
作者: aaaaajack (丁丁是個人才)   2018-03-07 14:33:00
基本上就是用硬體的各種noise吧,實際運作我也不清楚這裡的熵應該比較物理(?)
作者: GKki2012 (chichi)   2018-03-07 14:37:00
總而言之感謝各位專業的大大
作者: gn00399745 (Michael)   2018-03-07 14:40:00
某人提問的姿態不知道在高幾點的 這樣知道的人憑什麼要告訴你
作者: siro0207 (希羅)   2018-03-07 14:40:00
load回去後用當下時間重作seed不可行啊 這就代表我只要一個大龍脈石 就可以反覆SL大法取得我要的珠子所以我上面才說要解決 就只能存檔不在玩家手上
作者: lordmi (星宿喵)   2018-03-07 14:47:00
關於真隨機跟假隨機可以看這篇 https://goo.gl/cMFFtZ
作者: hank0305 (漢克)   2018-03-07 14:50:00
我認為這是開發者故意留的後門,做成密技之類的讓人鑽研
作者: seaEPC (沒看見,我沒看見 >_<)   2018-03-07 14:52:00
只要能S/L保存/還原遊戲狀態,不管開發者用什麼,玩家都能凹啊XD能變更seed好歹玩家還會有些期待感下一次搞不好就成了固定seed又不能跳過結果的話,等於是跟玩家說你下一次的投資固定打水漂.會讓人有沮喪感的
作者: siro0207 (希羅)   2018-03-07 14:58:00
我也有想到這點 而且這點搞不好就是原PO想要的回答廠商知道會有玩家靠SL大法來取得珠子 但是又不希望珠子太容易被取得 於是產生整個表 讓你不得不刷很多場之後才獲得你要的珠子如果每次煉金都亂數產生 那就重複SL大法就好 就不會想說我要的珠子後面一定會拿到 先來去打幾隻魔物好了
作者: ZMTL (夜風/瀟湘 VR板已經開板!)   2018-03-07 15:10:00
感謝lordmi,下班後我來研究XD
作者: kaltu (ka)   2018-03-07 15:11:00
我其實不懂為什麼不用玩家進度的組態的雜湊值作為種籽建表,這樣一來每一次S/L骰到的東西會一模一樣,但是又不可預測因為組態改變整個亂數表又變一次。等於用 A組態去試出來的亂數表,換成 B組態就失效。也就是說不能用快速的方法試出未來機率分佈然後再拿想要的高成本物品去撞
作者: zseineo (Zany)   2018-03-07 15:19:00
你這麼做對玩家的遊戲體驗有幫助嗎?
作者: darkckman (小喻)   2018-03-07 15:20:00
那如果以一般遊玩來說呢,如果試過S/L大法發現沒用,之後就不會為了這個存來存去的,也許這就是作者想要的流暢的一部分
作者: kokal (細菌)   2018-03-07 15:21:00
我認為防SL的狀況是side effect, 並不是選用PRNG的原因
作者: zseineo (Zany)   2018-03-07 15:22:00
如果這遊戲大部分玩家都會選擇SL,那麼是數值流程之類的出問題了,如果只是少數玩家這麼做…那麼為了他們去防這件事感覺意義還好…?
作者: kaltu (ka)   2018-03-07 15:28:00
防止作弊需要意義嗎,防堵S/L可以重骰一次的漏洞和利用固定亂數表的漏洞都是作弊吧?這麼想讓作弊,為什麼不直接釋出cheat code
作者: zseineo (Zany)   2018-03-07 15:33:00
拿本文提到的PM來說,依你的定義這樣生蛋是作弊沒錯吧但這點只有少數玩家會去做,不去防這點對決大多數玩家的遊戲體驗都沒有影響那麼把這點改掉真的有意義嗎?
作者: cavitylapper (類聚)   2018-03-07 15:38:00
好處大概是可以close「用家可以透過save-load來降低消耗取得想要的東西」的issue吧save load如果結果會變 就會變成機器人大戰那樣 在那邊讀檔凹個大半天才打完一回合
作者: kaltu (ka)   2018-03-07 15:53:00
但是為了避免每次讀檔可以重骰而使用固定亂數表,明顯是挖東牆補西牆啊可預測性和隨機性本來就是拮抗的概念,為了讓玩家不能重骰所以乾脆放棄隨機性,這是因噎廢食等級的solution
作者: abraxas (Abr.)   2018-03-07 16:04:00
你呼叫的亂數函式也是查表的概念
作者: ZMTL (夜風/瀟湘 VR板已經開板!)   2018-03-07 16:06:00
OK,但以我舉的例子來說是否能說變因太死?或者說他們就是為的單純不想玩家SL快速改變結果,卻造成整體比較好預測(?)有一部分也是想聽這麼設計可能的理由是什麼,今天學到很多XD
作者: aaaaajack (丁丁是個人才)   2018-03-07 16:50:00
上面那篇知乎跟使用seed的偽隨機是不同的概念吧,那種偽隨機是考慮使用體驗的額外設定,跟是否使用seed無關
作者: Kingofknife (L-E-X)   2018-03-07 16:50:00
幹嘛不做更多重的假隨機 就可以無限接近又不失熱情很多遊戲是為了維持保底機率都會做小樣本區那麼可以做成多重骰樣本群中的樣本表來阻止規則要無限接近真隨機是很花資源的 用省一點就是多重骰比如魔物可以骰10種珠子產生順序就會複雜十倍
作者: aaaaajack (丁丁是個人才)   2018-03-07 16:56:00
要讓規律更複雜是做得到,想不想、有沒有必要而已單機遊戲應該沒有自行設計更複雜的PRNG的需求在沒有需求的時候應該就越簡單越好,MHW的原理應該也很單純,因為多打一場多用了一次隨機數,所以鍊金會跳到下一格。我認為是一般的PRNG怎麼做他就怎麼做
作者: C6H8O7 (檸檬酸)   2018-03-07 17:07:00
自然亂數反而會讓玩家覺得不隨機喔
作者: linzero (【林】)   2018-03-07 17:18:00
真要搞玩家,可以偵測SL頻率來修正機率另外一個較常見的做法是減少能SL的時機點
作者: cavitylapper (類聚)   2018-03-07 19:37:00
PM那個算好預測嗎 我覺得研究並破解亂數表是一回事實際實行起來想取得那些有誇張數值的色違稀有PM們幾乎還是會選擇用改的改出來吧

Links booklink

Contact Us: admin [ a t ] ucptt.com