我的世界:你会用种子,但你真的懂它?伪随机数背后的惊天大秘密
各位老MC、小饥友们好,我是你们的MC萌新老饥友GW。
我们都知道MC《我的世界》地图近乎于无限的大,通过11路生物电车走完地图,都不知道猴年马月了,如果玩家想获得心仪的地图,常常都会询问别人获取“种子”,直接在该地图上冒险。
而“种子”就是决定这个地图样子的关键因素,就像我们长什么样是由爸爸妈妈的基因决定的。在游戏地图生成时,会把一个“种子”丢进一个“伪随机算法”里,得到的“伪随机数”,从而决定地图的模样。
01“伪随机数”具备随机性和规律性
但“伪随机数”同时具备随机性和规律性,老话说:“世界上没有相同叶脉的2片树叶”,其一,表示了世界万物的随机性和唯一性;其二,树叶都长得相似,表现出共性,既规律性。
游戏是计算机执行的,而计算机是产生不了绝对随机的数字串,因为游戏代码也都是程序员按照一定规律编写,“伪随机数”其实也是被安排得明明白白,带有规律。
其中在游戏的源码中有这么两段代码:
1、根据系统时钟记录的“特定数值”,生成“随机种子”
movedata(0x0040,0x006c,FP_SEG(temp),FP_OFF(temp),4);
该段代码的作用:记录系统的时钟值,生成“种子”,以供调用。如何在一样的算法中,加入“相对随机”的变量呢?Bugjang官方的解决办法是利用系统时钟。
每个玩家都是“随机时间”打开游戏的,这不就是最大的“随机”吗?
2、将“随机种子”进一步经过算法生成“伪随机数”
RAND_SEED=(RAND_SEED*12359)%65536;
因为“随机种子”的原因,再经过一步处理后,得到了决定地图样貌的“伪随机数”,看似随机却又有着规律性。
如果具体讨论,为什么计算机产生不出绝对的随机数,那就要从游戏的源码进行分析了,这里就不展开篇幅细说代码和计算机原理,如果各位小伙伴有兴趣可私信GW,GW给大伙说说。
02结论
这里我们可以初步得出有关“伪随机数”的结论:
1、地图由“伪随机数”决定模样。
2、伪随机数是由随机种子根据一定算法得出的一串随机数字。因此,种子一样,算法一样,那么得出的随机数也就一样,地图也就一样。
3、随机种子是由电脑系统时钟来保证随机性。可以说官方程序员富有想象力和挑战力,用看似变化的数值来代入算法(手动调系统时钟,就可保证生成相同的种子,不过也并不影响玩家的游戏体验)
一串看似简简单单的数字,竟蕴含着大学问,我们玩家看似玩的随机地图,却在程序员的代码下安排得明明白白。当然这个“随机性”是可以给玩家所掌握的,官方也曾发发布过amidst“种子查看器”,方便玩家输入种子或导入存档后查看地图,还有根据玩家所选生态群落生成“种子”的工具。
GW也将在下一期分享这个工具的详细使用方法,并进一步讲解一些游戏地图生成的知识。
各位老MC,下方评论分享出你们心仪的种子吧,GW将会帮你生成这个地图贴图给大家看。
学会不要太膨胀,我是GW,给你们带来一个脑洞大开的游戏资讯。
来都来了,不如点赞收藏,关注走一波。