随机性的乐趣:这些经典大作都是如何做随机生成的?

【GameLook专稿,转载请注明出处】

GameLook报道/对于一款游戏而言,加入随机性意味着可重复性的提高,不管是攻击伤害、资源产出还是地图生成,每次看到不一样的结果总可以给玩家带来新鲜感。

但是,如果做不好,随机性也可以给游戏带来负面影响,如果游戏里很多事情的随机性太高,则会让很多不那么有耐心的玩家觉得投入的时间都是浪费,因为“非酋”再怎么努力也是赶不上“欧皇”的,比如因为开箱子和抽卡,不少作品都被人戏称为“看脸的游戏”。

在游戏行业,实际上真正完全随机的游戏是极罕见的,当我们摇骰子的时候,离手之后实际上就不再是我们所能够控制的,当它落到桌子上之后,,你也不知道什么时候会停下来。那么,游戏里的随机性该怎么做才不会出错呢?我们不妨看看一下这三款经典游戏的范例:

《最终幻想1》:从预生成的数字当中按顺序读取

原版的《最终幻想》和Square早期的很多Famicom游戏,都是由Nasir Gebelli写的程序,他本人也是Apple Ⅱ计算器时代的程序大牛,所以,处理游戏当中的随机性,也是他在写代码的时候需要处理的问题。

其中一个案例就是角色走路的时候碰到遭遇战,这些遭遇战大多数都是由存储在ROM里的预制表格完成的,该表格有256个数值,玩家每走一步都会更新指数,这是数字会指向一个临界值,如果存储的数值低于临界值,遭遇战就会生成。

本质上来说,这个系统其实就是一个随机数字的列表,然后重复使用,当系统重置的时候,玩家的位置指数也会重置。

这并不是原版《最终幻想》唯一的的随机系统,在战斗期间,当需要摇骰子的时候,类似的系统就会被调用,而且使用的也是一个256数值的随机系统,只不过这个系统是按顺序读取的,与遭遇战生成指数不同的是,这个随机系统是存储在有电池的RAM里,这就意味着当你重新加载游戏的时候,就可以在同一个区域遇到,而且会是同一批敌人。

有趣的是,虽然这个随机生成器存储在RAM里,但却并不会包含在玩家的存档之中。

在一款RPG游戏里,你必须对随机数字慎之又慎,因为当他们摸清了随机生成的规律之后,再加入遭遇战就失去了意义,对于休闲玩家而言,《最终幻想1》的随机性是很难猜测的,但是,如果随机的结果里,有玩家们完全打不过的战斗该怎么办呢?
比如在游戏的一个房间里有个叫做Warmech的boss,它出现在遭遇战概率很高的房间里,但它只出现在第八组中,而需要出发这个遭遇战只会被3个数值触发,所以就意味着在256场战斗中,你遭遇到Warmech的概率只有3次

《超级马里奥64》:线性同余生成器(Linear Congruential Generator)

伪随机数字的做法是很受欢迎的,因为这意味着在被执行的时候,它们不会对游戏带来破坏性的影响,这就是线性同余生成器。

你首先从一个种子数值开始,然后通过基本的算法操作获得一个结果数值,它在返回数值的同时可以当作下一个种子数值,比如《超级马里奥64》就是用了这种方法,它的算法是在65114个数值之后才开始循环,由于该生成器只有65114种可能,所以如果不是必要情况,是不会加入随机性的,所以只有在需要出现随机性的时候,才会调用。

《口袋妖怪翡翠版》:随机种子数值决定成长属性

《最终幻想》的随机生成器可以决定玩家们何时何地遭遇敌人,但却需要大量的工作才能搞定,《马里奥64》的生成器可以影响金币产出和敌人行为,但却没有对游戏体验带来破坏。《口袋妖怪》的随机生成器则前两者都不同。

当一个妖怪诞生的时候,一些数值在很长时间里都是对玩家隐藏的,但却可以对他们产生长期影响,由于口袋妖怪可以在玩家们之间相互交易,如果玩家可以掌握这种随机性,那么对很多人的游戏体验都会带来灾难性的影响。

所以在该系列的最新游戏当中,开发者把伪随机数字做的更加复杂,由于该游戏非常受欢迎,甚至不少人专门研究如何掌握游戏的随机性,他们这么做是希望得到酷炫的妖怪,虽然没有很高的战斗力,但却是非常稀有的,由于该游戏的随机生成器是通过种子数值获得的,因此因此在特定的帧数可以决定妖怪的属性是否稀有。

如若转载,请注明出处:http://www.gamelook.com.cn/2018/07/333911

关注微信