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