作为马里奥系列在3DS平台的首秀,这款游戏承载着为3DS扭转局面的使命。
它以强烈的3D视觉体验为特色,开启3D模式能帮助玩家更准确地感知场景中平台间的空间关系,增强游戏的真实感和沉浸感。
尽管采用了3D建模技术构建环境,但游戏玩法保持了经典的2D线性关卡设计。
玩家可以在关卡中看到熟悉的台阶和旗杆,这些元素为游戏增添了熟悉度和挑战性。
同时,一个重要的创新是马里奥的浣熊装回归,并赋予他飞翔的能力,这无疑为游戏增添了新的乐趣和策略元素。
总的来说,超级马里奥3D大陆巧妙地融合了3D视觉与2D游戏的精髓,为玩家带来了独特的游戏体验,无论是对系列粉丝还是新玩家,都是一次值得期待的冒险之旅。
教遗传算法人工智能玩超级马里奥大陆
这是教授 AI 为 GameBoy 玩超级马里奥乐园系列的之一篇文章,在这里我将向您展示如何开发遗传算法 AI 以使用 Python 玩超级马里奥乐园。
(完整代码在我的 GitHub 链接在文末)
《超级马里奥大陆》是任天堂开发的一款平台游戏,它讲述了一个勇敢的水管工马里奥拯救公主的故事。
下面的 GIF 展示了为 GBA *** 《超级马里奥大陆》世界 1-1 之一部分的遗传算法。
在下一节中,我将解释如何自己编写这个算法。
环境
之一步是 Python 和 Game Boy 模拟器之间的集成。
对于这个,我找到了一个很好的 Python 库,叫做 PyBoy。
https://github. *** /Baekalfen/PyBoy
按照 PyBoy 的说明,我能够将 Super Mario Land 游戏集成到 Python 中并开发所有控制交互。
要创建环境的之一个工作版本,必须创建一个“init”函数来定义所有初始变量,如马里奥的生命、剩余时间、世界级别等。
在此之后,您必须创建一个函数以在游戏结束时重置游戏,并创建一个“step”函数以允许 AI *** 与游戏交互并对其执行操作。
在创建允许任何人工智能程序与游戏交互并实际玩游戏的环境之后,让我们选择一种算法并开发 AI *** 。
遗传算法
遗传模型基于使用生物进化概念来优化其行为的算法。
“在生物学中,进化是物种特征经过几代的变化,依赖于自然选择的过程。
” [1]
“生物进化理论基于所有物种都相关并随着时间逐渐变化的想法。
该理论指出,种群中的遗传变异会影响物种的物理特征(表型),其中一些特征可能使个体比其他特征更具优势。
” [1] 。
这些身体优势然后可以通过父母延续到后代。
应用于 AI 的这一理论创建了自学习 *** ,这些 *** 会不断进化并探索环境以更大化结果。
这个想法很简单,我们为每一代创建一些物种并执行交叉和突变以优化和开发基因,然后在最后执行更佳物种的选择。
世代
世代是一组物种,每个物种都具有通过突变和交叉产生的特定特征,这些特征是从父母那里遗传的。
将这一概念应用于人工智能,每个物种在之一代出生时都有一组动作,然后根据它们的适应度选择更好的物种继续下一代。
然后,下一代物种会经历一个交叉过程,以根据上一代和变异产生后代来产生变异性。
这个过程不断迭代直到最后一代。
选择
算法的选择部分基于查尔斯达尔文的自然进化理论。
“具有最适合其环境特征的个体更有可能生存、寻找食物、躲避捕食者和抵抗疾病。
这些人更有可能繁殖并将他们的基因传给他们的孩子。
不适应环境的个体生存和繁殖的可能性较小。
因此,他们的基因不太可能传给下一代。
因此,最适合其环境的个体生存下来,如果有足够的时间,物种将逐渐进化。
” [1]
将此概念应用于人工智能,当我们进入下一代时,我们只选择最适合“生存”并将其“基因”复制到未来的个体。
交叉
在父母将基因传给下一代的繁殖周期中,他们的基因会发生交叉。
交叉过程从亲本 1 中取出一半基因,从亲本 2 中取出另一半基因,为下一代生成基因。
突变
突变是部分基因随机变化的过程。
这些变化可能只是不影响运动的微小变化,也可能导致全新的特征并完全改变物种的行为。
对于人工智能,我们通过在模型生成期间随机改变 *** 动作来执行突变。
适应
遗传算法最重要的变量之一是适应度。
适应度是一个变量,它说明我们希望为我们的环境更大化什么。
适应度公式的微小变化可能会导致 *** 行为的巨大变化。
对于超级马里奥大陆,我们希望马里奥向前走并杀死敌人以完成舞台。
因此,当马里奥向前移动或杀死敌人时,我们会产生一个正值,并且我们每秒钟应用一个折扣,以鼓励马里奥向前快速移动。
遗传算法的完整内容可以参考我们以前发布的文章:
用N.E.A.T遗传算法玩FlappyBird
实验和结果
在对仿真环境进行编程并实现遗传算法后,我们可以开始运行仿真并评估模型性能。
出于研究目的,我运行了一个包含 30 代和 5 个物种的模型,以在第 1-1 阶段玩超级马里奥大陆。
以下是之一代的结果:
马里奥能够向前走,但在之一个障碍,一个简单的 Goomba 中失败了。
让我们看看 *** 在经过一些基因进化后是否能表现得更好……
30 代之后,我们注意到了巨大的进化! AI *** 发现的一些惊人动作是杀死一些 Goombas 并跳过小管道和高块。
很高兴看到 AI 可以用动态编程做些什么。
我们可以通过下面的基准图表跟踪演变。
在图表的之一部分,它是每一代的平均适应度(红线)和更大适应度(蓝线),我们可以清楚地看到随着代的发展,平均适应度和更大适应度的增加趋势。
第二部分显示了每次交互的适应度,我们可以看到每一代内部的变化,这是探索之旅的一部分,以及每一代更大适应度的增加。
如果您想实施此解决方案或了解有关遗传算法的更多信息,您可以在我的 GitHub 存储库上的以下链接中找到完整的 Python 代码:
https://github. *** /octavio
参考
[1] Your Genome, United States, accessed July 2021
还没有评论,来说两句吧...