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

作者: holymars   2018-03-07 21:23:21
※ 引述《LiNcUtT (典)》之銘言:
: ※ 引述《ZMTL (夜風/瀟湘 VR板已經開板!)》之銘言:
: : 嗯,雖然我是APP工程師,但大學不是唸本科畢業後才半路出家的,
: : 對這點真亂數、假亂數以前耳聞過討論卻沒什麼概念,剛好跟遊戲有關想到就問一下。
: 首先要有一個觀念
: 目前沒有所謂的真亂數
: 程式裡用隨機函式(後面用rand()代稱)產生的亂數全都是假亂數
: rand()有很多種,但不論哪種都是人寫出來的
: 有自己寫過的就會知道流程大概都如下
: 1.給一個seed > 2.演算法做運算 > 3.得一個值 > 跳回2得3 loop
: 所以seed固定,後面產出的值也都會固定,連續取3的值建表就是所謂的隨機表,這是正常的
: 不同的seed會有不同的表,更改seed可以視作"洗牌"
: 通常是用系統時間或tick做seed
: : 首先舉例使用假亂數表的遊戲,以下有稍微簡化過程:
: : 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
: : 順帶一提,很多線上遊戲/網路遊戲的都市傳說有時候我不會完全不信的原因也是這個。
: 老實說我覺得就是寫程式的人問題
: 大多數都是直接call平台內建的rand()來用
: 而沒有去了解該rand()的內部演算法
你說反了..
正是因為了解rand()的演算法
所以寫程式的人才決定要把seed存在玩家記錄裡
如果不把seed存在存檔裡,就可以S/L大法一直試
不管你是什麼其他的東西當種子,只要種子每次讀取舊檔時不同
就可以一直重覆嘗試到想要的結果
所以一個遊戲的隨機性簡化成兩個問題
1.要不要將seed存在玩家存檔裡
2.哪些地方的rand()呼叫要用這個seed
MHW的問題在,把seed存在存檔裡,但是用到這個seed的地方太少
只有
1.決定熔山龍任務是否出現
2.決定冥燈龍任務是否出現(每三場呼叫一次)
3.珠子鍊金
沒了,目前看起來就這三個地方共用存檔裡的seed
所以才會被找出規律...
更慘的是因為1和2的存在
玩家可以一直過關來達到不消耗素材也能呼叫一或兩次rand()的機會
如果只有3會呼叫rand()
就算你找出規律還是得消耗素材才能前進,那就沒什麼用處了
總之呢,要解決MHW的問題,又要避免被S/L大法的話
1.只有 珠子鍊金時使用存檔的種子
或者
2.
結算素材也用存檔的種子呼叫rand()
這樣玩家即使先建預測表,也很難準確的擊中想要的珠子
作者: LiNcUtT (典)   2018-03-07 21:26:00
了解,我沒去研究MHW存檔機制,只是想說真要避免被反推是OK
作者: holymars   2018-03-07 21:27:00
另外單機遊戲用time當種子更危險,直接改本地時間就..以前某一代的真三國無雙洗隨從好像就是這樣
作者: LiNcUtT (典)   2018-03-07 21:28:00
這樣看來就是為了避免重複S/L而刻意為之的,只是沒做到位
作者: ayubabbit (ウォロックが倒せな)   2018-03-07 21:30:00
終於有內行人講話了
作者: yoyun10121 (yoyo)   2018-03-07 21:31:00
與其說沒做到位, 不如說單機遊戲花大力氣防止玩家修改的好處在哪裡
作者: dieorrun (Tide)   2018-03-07 21:33:00
MH這套好幾代了 不覺得有啥不妥 倒不如還好是可預測的
作者: pinacolada (西洽的包皮饅頭很獵奇)   2018-03-07 21:42:00
官方大不了全隨機就好啦…
作者: LiNcUtT (典)   2018-03-07 21:43:00
元PO有講了,全隨機就變成大家一直S/L
作者: toulio81 (恩...)   2018-03-07 22:45:00
推!看到現在終於有比較內行的人出現了!
作者: seaEPC (沒看見,我沒看見 >_<)   2018-03-07 22:56:00
是說我直接把MHW當成網路遊戲了...XD 才想起他算單機
作者: aaaaajack (丁丁是個人才)   2018-03-07 23:06:00

Links booklink

Contact Us: admin [ a t ] ucptt.com