Re: [问题] 单机游戏用seed生成的假乱数表好处是?

楼主: yshinri (ISML实习分析师)   2018-03-07 21:46:00
其实要不要 call rand() 即时产生乱数也是看工程师决定的...
不知道版上还有没有人记得几年前神抄之塔被人找出开盘时的盘面重复性很高
然后有人下去拆包才发现原来开盘盘面是由一个固定有 450 个浮点数的表所决定
然后就出现了这个→https://pastebin.com/ehFB6ZXp
也就是说它的开局只有 450 种 (实际稍少, 因为一些算法的原因)↑↑
这个就是连 rand() 都懒得/不想呼叫的结果
就算系统提供的乱数某种程度上有点糟, 但有的时候这种鸟鸟的东西就很够用了
作者: LiNcUtT (典)   2018-03-07 21:48:00
以前老game也常用预建表,call rand虽说消耗不高但还是有
作者: holymars   2018-03-07 21:52:00
LCG跑乱数比你从内存读表快多了...一个加法一个乘法一个module都在register里执行..你查表还要去内存->cache->register 谁快不用说吧..
作者: kokal (细菌)   2018-03-07 21:55:00
可能是为了游戏体验,要不然一开始就抽到烂盘面会很火
作者: LiNcUtT (典)   2018-03-07 21:58:00
那为啥以前很多老game搞预建表的啊?我以为是有差说XDDOS/95那时的call rand快又省工,那搞预建表的是再搞自己吗XD
作者: holymars   2018-03-07 22:04:00
你是真的decompile发现它内存里有张表吗...rand跑出来的行为和预建表一模一样,你怎么分辨..先用一个种子跑100次rand建表,和实际要用时在呼叫rand结果不是一模一样吗
作者: LiNcUtT (典)   2018-03-07 22:07:00
没实际跑过,但记得以前不少文章都有提XD像原PO讲的神魔这样,我是没实际去拆,说有表我就信了w
作者: holymars   2018-03-07 23:44:00
那要看文章是企划写的还是程式设计师写的....为了理解方便,程式都会跟企划说有张随机表,每次跑出来结果是固定的,用来让企划理解PRNG的数学意义久而久之企划们都以为真的有张表存在内存里面,但实际上并不是...
楼主: yshinri (ISML实习分析师)   2018-03-08 07:53:00
我是有印象有看过 decompile 出来的程式码, 确实是有表

Links booklink

Contact Us: admin [ a t ] ucptt.com