玄学VS数学:电子游戏的“伪随机”设计原理

发布时间:2024-07-15 16:14:36 浏览量:206次

你对游戏的随机性有何期待?想知道电子游戏的“伪随机”设计原理吗?那就跟我一起探讨一下吧!

有人认为游戏应尽量减少随机性,一切由玩家操作决定。攻击必中,结果确定,不应有意外。例如在射击游戏中,对准开枪,击中目标不该受到干扰。

现实中,几乎没有真正的“完全随机”,而是用各种方法实现“伪随机数生成器”。游戏的随机性问题一直备受关注。下面以三款经典游戏为例,探讨它们的“伪随机”机制的本质、运作方式,以及可能存在的问题。

《最终幻想》:内含预设数字列表

初代《最终幻想》使用了传奇程序员Nasir Gebelli开发的伪随机生成系统。在遇敌场景中,游戏ROM中存储着含有256个数字的列表。每次游戏重启时,列表都会被初始化。每走一步,游戏系统读取一个数字,根据设定的阈值决定是否遇敌。这是一个循环使用数字列表的过程。

此外,《最终幻想》还采用了另一种遇敌机制,使用另一份数字列表,存储在卡带的RAM中,与玩家存档一起,不受重启影响。这使得玩家在特定区域存档后,重启游戏后仍然能遇到相同敌人。有趣的是,存档文件与乱数列表是相互独立的。

《最终幻想》

避免重复遇敌?在战斗中仍然有随机性。程序员设计了一个巧妙的机制,防止玩家利用乱数序列创造优势。

进入战斗后,“最终幻想”每刷新2帧读取一次乱数,但不进行遇敌判定。这种高频率的乱数消耗使得玩家无法准确预测乱数结果,保持游戏体验的未知性。

游戏体验中的这种“未知”是至关重要的。我们可以说,《最终幻想》的乱数机制将结果与玩家无法准确还原的操作联系起来。

《超级马力欧64》:线性同余法

线性同余法是目前软件开发中常用的随机数生成方法,任天堂在《超级马力欧64》中大量使用该方法生成金币等游戏元素。

线性同余法通过一个线性同余方程无限推演出一个数列。在N次计算后,数列会开始重复,形成循环。尽管这种方法在外行看来近乎随机,但对程序员来说既方便又高效。

《超级马力欧64

《精灵宝可梦》:多重算法结合

宝可梦系列采用在全球范围内热门的“马特赛特旋转演算法”等复杂的算法来保证游戏随机性,旨在防止破解和利用。有无数玩家试图破解宝可梦的随机算法,甚至创建了专门的研究平台。

《精灵宝可梦》

破解算法的目的之一是获取稀有的“闪光”宝可梦,以及高V宝可梦。尽管官方通过降低获取难度减少了破解的意义,但游戏中的随机性仍然是宝可梦系列设计的核心一部分。

热门课程推荐

热门资讯

请绑定手机号

x

同学您好!

您已成功报名0元试学活动,老师会在第一时间与您取得联系,请保持电话畅通!
确定