[问题] 单机游戏用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