美文网首页
AI利用GAN创造永远打不完,破不了关的《超级玛利欧》游戏关卡

AI利用GAN创造永远打不完,破不了关的《超级玛利欧》游戏关卡

作者: JQKER | 来源:发表于2021-05-11 01:47 被阅读0次
    image.png image.png

    《超级玛利欧兄弟》的重度玩家们,可能已经发现了,这并不是原本32关里面的。不过,如果你以为这是《超级玛利欧创作家》的杰作,那你就猜错了这是AI利用GAN弄出来的!利用GAN产生红白机游戏画面,并不是新鲜事,不过,这一次是可以无限延长的那种

    image.png

    花样还不少:

    image.png image.png

    只需用4个颜色通道表示对象

    在游戏中,关卡数据以压缩格式存储,通常,每个对像用两个字节来描述位置和类型。

    一个字节指定16x16网格中的xy坐标;第二个字节指定对象的类型。比如在第一关的场景中,仅用了12个字节来描述:

    07 81 | 47 24 | 57 00 | 63 01 | 77 01 | C9 71

    作者为了将关卡编码为16x16的图像,分别设置了4个独立颜色通道:

    image.png

    例如,第一关的截图,就可以表示成这样:

    image.png

    这样的编码方式,既能够涵盖足够多的对象,又不至于太过复杂。

    并且,根据关卡中对象的排列方式进行分组,有利于模型进行学习并重现。比如,实心砖用于布置楼梯、砖块则通常水平放置。

    此外,将所有对象组织成一个合理的方案,减少产生网络失误对输出结果的负面影响。

    比如用硬币代替砖块,影响非常小;而如果用管道或库巴来代替,就会出现问题。

    开发者还找出了游戏的一些特点:

    管道可以连接地面或一排浮动块; 方块通常用来构建各种尺寸的楼梯; 砖块和问题块,大多排在第3位和第7位; 其他角色一般会分成两三组。

    接下来,作者使用TensorFlow作为后端,利用Keras来构建模型,并进行训练。

    产生器透过输入的一组特征矢量,来产生新的样本图像;鉴别器则区分是训练集中的真实图像,还是产生器伪造的。

    随着遍历训练集的次数增加,产生效果也逐渐改善:

    image.png

    最终输出的结果,是这样的:

    image.png

    嗯,效果真的很不错~

    想永不通关?用cGAN

    现在,只需把一张张「截图」连接起来,你就会得到:

    半个库巴、半个管道,以及半个玛利欧……

    怎么才能无缝拼接,得到连贯的关卡呢?

    这就需要利用「有条件的GAN」,把前一个场景作为后一个场景的边界条件。

    就像这样:

    image.png

    可以看出,场景的左侧部分,是以第一行图像作为边界条件产生的。

    具体来说,首先要在之前的基础上,向产生器输入一组16×4的图像,作为上一个场景的边界部分。

    网络架构是这样的:

    image.png

    产生器在输入条件的限制下,产生16x16的图像,然后,把它们与16×4的输入图像进行拼接,再用拼接后的图像来训练鉴别器。

    image.png

    利用16×4图像的不断叠代,最终就能拼接成连续的场景,例如,经过40次叠代的结果:

    image.png

    「不想通关综合症」有救了!

    开发者表示,虽然效果不是特别完美,但是已经具备了趣味性和可玩性~

    image.png

    是不是和那个「能玩一辈子的游戏」—— 《超级玛利欧创作家》有点像?它同样主打关卡制造,不过是玩家来手动设计。

    image.png

    ▲ 超级玛利欧创作家2

    在发布关卡之前,作者必须通关一次,于是有些人就加入隐蔽的「作者通道」,偷个懒直达终点。不少高手都曾被这游戏难倒,当然如果玩家发现隐蔽通道,就能「偷鸡」通关~这样「有趣又有毒」的关卡,不知道AI能否构建出来呢?

    · 资料来源:Using a Generative Adversarial Network to author playable Super Mario Bros. levels

    相关文章

      网友评论

          本文标题:AI利用GAN创造永远打不完,破不了关的《超级玛利欧》游戏关卡

          本文链接:https://www.haomeiwen.com/subject/yvnmdltx.html