超级玛莉是一款非常经典的任天堂游戏,现在又有了新的玩法:编写Mario AI程序来玩游戏!在IEEE 消费电子协会组织的首届游戏创新会议上,一群人工智能专家和游戏程序员参与这样一个竞赛:Mario AI Competition,组织者希望通过这样一个经典的游戏来比较不同的人工智能技术。本文首先介绍一下游戏环境和规则,然后分析一下2009年的比赛结果和相关技术。
游戏环境和规则
游戏软件是根据Java版本的超级玛莉 Infinite Mario Bros改写而成,能够无限地随机生成关卡,并且能以超过1000X的速度运行,这给希望使用机器学习技术的用户带来很大方便。
游戏的接口很清楚:智能体(控制程序)从游戏软件得到当前的环境信息,并返回要做的动作,其结构如图。
游戏的任务就是开发一个超级玛莉程序(智能体)去过关,比的是看谁的程序过的关最多、花的时间最小、得的分最多。智能体从游戏中能得到的信息有:
- 周围22X22 大小范围内的物体(如:墙、大炮、生物等),如图
- Mario的自身状态:位置、是否在地面、能否跳跃、大/小 等
Mario能够做的动作和原作游戏一样:上下左右方向、跳跃和加速。游戏的挑战性在于:
- 需要处理的状态空间很大(超过 22x22x4x5)
- 需要处理复杂的情况(不像赛车游戏那么简单)
- 需要一定的迂回策略(如先后退以获得足够的速度冲过悬崖)
Mario AI Competition 2009
在2009年的比赛中,大家主要使用的技术有:搜索、规则系统、遗传算法、遗传编程和人工神经网络。从结果来看A*搜索胜过了其它所有的算法,前三名都是采用的A*算法,这点正好印证了“有效的方法往往是简单的”。而组织者则认为应该进行一些改进以使得机器学习算法更有竞争力。
让我们来看看冠军Robin Baumgarten的设计思路。他首先分析游戏的物理引擎,得到所有物体的运动公式;接着编写自己的物理引擎来预测状态的变化;然后将物理引擎放入到A*算法中来评估每个节点;当然搜索还需要启发信息:需要多久才能到达目标;还要排除掉掉入深渊或者受伤的状态。最终A*算法给出一条“最佳”的运动路径。
由于游戏是一个确定的、可预测的环境,所以搜索算法十分有效。来欣赏一段游戏视频吧:
怎么样?够刺激吧,组织者表示2010年将继续组织比赛,并希望推广到更多的学术会议中,有兴趣的可以关注一下比赛的网站:Mario AI Competition。
参考文献
- S. Karakovskiy and J. Togelius Mario AI Competition @ CIG 2009 IEEE Symposium on Computational Intelligence and Games
- A. J. Champandard Infinite Mario AI using A* Search: The Definitive Interview with Robin Baumgarten http://aigamedev.com/open/interviews/mario-ai/
Super mario,AI,有意思
这么早起床,赞啊!
Cool, I like Super Mario too!!
嘿嘿,不错呀,今天才看到~~我转载了~~谢谢~~