我们集中在伯克利校区里的一个会议室里,局域网的设备散落在我们周围。桌面上堆满了电脑和披萨,屏幕上投影的是一场《星际争霸》的比赛。Oriol Vinyals,一位计算机科学的博士生,正指挥着他的人族部队和虫族部队进行着殊死的战斗。
Oriol非常强——他曾经参加过WCG,是西班牙赛区的第一名,欧洲赛区的16强。但现在他的处境岌岌可危:他的机器人能够击退虫族的飞龙,但是却没法面面俱到。虫族玩家很狡猾,遇到凶猛的火力就撤退,但并不跑远,而是专捡软柿子捏,保持着对对手的压力。
Oriol犯了一个错误。他的机器人的走位出了一点问题,虽然只有几秒钟。但这就足够了。飞龙立刻做出了反应,由人族防守的间隙鱼贯而入直奔对方脆弱的农民。当Oriol指挥着他的机器人把飞龙赶走时,他的农民已经全部阵亡,经济遭受沉重打击。
Oriol对虫族基地发动了绝望的最后一击,试图在飞龙得到补充之前突破对方的防线,但这已经太迟了。他的大脚机器人一个接一个的被虫族消灭掉。当新一波飞龙从虫卵中孵化出来的时候,他只能认输——向刚刚击败了他的计算机人工智能认输。
房间里洋溢着庆祝的喜悦,Oriol也不例外。打败他的是一个计算机人工智能程序,名叫伯克利“主宰”,由我们小组花了几个月的时间开发而成。“主宰”是我们参加“2010星际争霸人工智能挑战赛”的作品。在数十场比赛后,它终于第一次击败了我们的人类星际高手。
。距离提交代码的最后期限只剩三天了,我们还有很多清理和调试的工作。Dan Klein教授,我们的顾问、将军、教练和动力,微笑着转向了白板。他划掉了我们还需要测试的二十个场景之一。
“好了,”他说。“我们可以打败大脚机器人的战术了。下面来测哪一个?”
下面就是我们如何创造了伯克利“主宰”程序以及它背后的技术的故事。
迫不及待的想要改变未来
《星际争霸》是史上最流行的电子游戏,来自一家伟大的公司一款伟大的作品。它对玩家的技巧有很高的要求,是职业游戏联赛的主要项目。在韩国,《星际争霸》非常流行,其职业选手的合同收入达六位数,游戏比赛会在国家电视台上进行直播。
这对于人工智能来说也恰好是一个非常具有挑战性的舞台,一个成功的《星际争霸》人工智能必须解决很多困难的问题。在伯克利教授人工智能入门课程的Dan说:“我能一一列举这门课向你展示的所有概念以及它们分别在《星际争霸》以及我们的程序中的应用。”
《星际争霸》发布于1998年,在视频游戏领域看来这差不多是八百年以前了。多年以来,游戏的开发商暴雪一直在更新它,使得《星际争霸》成为史上制作最精良也是最平衡的即时战略游戏之一。游戏有三个种族:拥有我们熟悉的坦克和星舰人族(Terran),生物群落形态的虫族(Zerg)和科技发达、兵种强大而昂贵的神族(Protoss)。每个种族都有不同的单位和游戏理念,但没有任何一个种族或是兵种组合是无敌的。玩家的技巧、创造力和随机应变的能力都能决定胜负。
精细复杂的设计使得《星际争霸》成为人工智能研究的理想环境。在即时战略游戏中,所有事件都是实时的,玩家的指令会被立即执行。玩家需要收集资源来生产单位进行战斗。地图被“战争迷雾”所笼罩,敌方的单位和建筑都只有在己方的单位或建筑物的视线之内才可见。玩家需要采集并分配资源,生产单位,移动单位进行战斗,侦查、分析并对敌方的行动作出响应,这些都是实时的。对于计算机来说这些都是难题。
Dan有时会把《星际争霸》和那些曾经驱动了人工智能研究前进的游戏作比较。“国际象棋难在你必须能看的远,围棋难在每一步棋的可能性太多,而扑克则难在不确定性。”他说。“但在《星际争霸》中你每时每刻都面临着所有这些问题,而你能够用来计算的时间却非常少。”
人类高手通过培训和练习来掌握丰富的技巧和知识以解决这些问题。我们不可能简单的把这些人类掌握的知识移植到人工智能中去,因为它需要能够主动的判断游戏的形势并决定未来的行动。创建一个能够与人类选手匹敌的《星际争霸》人工智能需要把现在计算机的能力所及向前推进一大步,并且可能在游戏以外的领域得到应用。
“星际争霸人工智能挑战赛”的目的是以《星际争霸》为环境推进人工智能的研究。人工智能研究人员在过去也曾使用过即时战略游戏,但都受限于可用的技术。开源的游戏有很多缺陷并且缺乏测试,而像《星际争霸》这样的商业游戏则是封闭的。
在2009年初发布的母巢之战API(BWAPI)改变了这一切。BWAPI是由一群狂热的游戏爱好者开发的开源工具,使程序能够直接访问游戏。加州圣克鲁斯智能表现力实验室的学生Ben Weber一直致力于基于即。于是他着手举办了这项星际争霸人工智能比赛,以期能够激起大家的兴趣并开启研究的进程。
比赛的消息正式宣布于2009年11月,并迅速在游戏类的网站和博客中传播开来:第一届“星际争霸人工智能挑战赛”将于2010年10月在斯坦福大学的“2010人工智能与互动数字娱乐大会”上举行。
课程:星际争霸 101
当Dan和他实验室的学生听说这项赛事时,他们立即兴奋了。“当我听说‘有API能够访问《星际争霸》’时,”他说,“我就知道有好玩的东西可以研究了,科学研究和课堂项目都有了很多新的空间。”
第一个挑战是定义问题域:一个星际玩家需要完成哪些操作,如何把这些操作转化成人工智能的行为?
此时小组的成员包括Dan和一些他的博士生,以及伯克利人工智能与机器人研究实验室的几个研究生(包括本文的作者)。这群人熟悉人工智能但却不会玩《星际争霸》,而伯克利的计算机科学的本科生中则有许多喜爱《星际争霸》的玩家。
。这门课给了我们分享知识并探索如何将游戏中的问题转化为算法可以解决的具体问题的机会。这也正是展现和解释人工智能概念的非常好的方法。
这门课一经宣布便受到了热烈的回应,并且取得了巨大的成功。我们花了一学期的学习《星际争霸》和人工智能,探索算法和框架,并尽可能多的尝试了很多不同的东西。我们从中获得的宝贵的经验对我们的人工智能的进化非常有帮助。“可以肯定地说,没有这门课我们不可能做的这么好。”丹赛后说。
在这门课的最后,我们已经把游戏对人工智能的要求归结为三个方面的问题。首先,程序需要采集并管理资源并在何时建造什么建筑或单位。用游戏术语来说,这叫做“宏观管理”,或者叫“大局观”。它本质上是一个规划与优化的问题。
接下来的任务是“微观管理”。一旦我们有了一支部队,程序需要选择目标并且移动自己的单位。这是一个复杂的多对象控制问题。最后,程序需要管理信息,对敌人进行侦查并且有针对性的调整自己的策略。这需要单位控制和高层次规划的多方面知识。
“你需要采集更多的vespene气体”
我们的人工智能要做的的第一件事就是收集资源并生产建筑和单位。这既非常容易又十分困难。开局策略,也就是开局时建筑物和单位的建造顺序,在星际社区中已经是被详细研究过的话题了。和象棋一样,不同的开局意味着玩家将会在游戏中期采取不同的策略。早期低级兵种的rush、空中骚扰或是中后期暴兵都会有不同的开局。
这些开局都是经过高度优化过的,用若干脚本或是有限自动机的方式简单的把它们直接硬编码到程序的“宏观规划”中去是十分诱人的想法。这正是《星际争霸》的内置AI以及很多其他游戏AI的工作方式:直接将人类专家的知识编码为一连串的动作或预定义的转型。生产坦克,并在对方生产空军单位的时候生产防空单位。如果敌人建造隐形单位,则生产探测器,等等。我们的人工智能的早期版本的确是采取了这种策略,用人族暴坦克。或许我们的第一个教训就是这种方法不靠谱。
我们这一课是在尴尬中度过的。我们的终极目标和深蓝挑战卡斯帕罗夫是类似的,而《星际争霸》正是一块人类选手表现的很优秀而人工智能则很糟糕的领域。因此,检验和改进人工智能的唯一办法就是让它和人类玩家对战。带着已经能够打败内置AI的自豪,我们在课堂上让我们的人工智能和John Blitzer玩一局。他是Dan的一名博士后,经常在iCCup上玩天阶。
这是一场灾难。
Blitzer使用的战术叫“偷气矿”,就是让一个农民到我们的人工智能的家里把气矿修了。这下程序只能在将对手的气矿建筑打掉并建造了自己的气矿建筑之后才能开始采集气体。我们完全没有预料到这种战术,而我们的AI,由于战术中的建筑物非常依赖于气体资源,完全陷入了一片混乱。当人工智能还在等待气体来建造坦克时,Blitzer的大军就已经兵临城下了。我们曾认为Blitzer也许会用更好的战术击败人工智能的坦克大军,但我们从未想过比赛也许根本进行不到那个份上。
。它给我们上了宝贵的一课:人工智能必须足够健壮,能够容忍干扰,否则它就会被卡住。
想让AI变得强壮,一种办法是让人类程序员预见到所有可能性并将应对措施教给它。完全不这么做很难,但是在《星际争霸》这么复杂的系统中,事先预料到所有的场景是不可能的。这也是为什么内置的AI很容易被打败的原因:只要找到了它的缺陷就可以反复利用。
下面的视频就是一个这样的例子。视频的主角是“神奇农民”Sparky。它是游戏早期我们的人工智能派出的一个探路农民,实际上也是我们这支队伍的吉祥物。“偷气矿”战术让我们对非常规早期战术重视起来,并且吸收了一部分到我们的人工智能中去。
在录像中,Sparky攻击了内置AI的农民。内置AI的程序知道应该反击,但却不知道该何时停止反击。Sparky最后偷了对方的气矿,但它也可以很轻易的将对方的农民拖入无限的追击之中,这样内置AI就完全不会去采集资源和建造单位了。Sparky的这种行为对于内置AI的打击是毁灭性的,以至于在测试中我们必须禁止他这么干,否则游戏就无法进行到后续的环节。
应对Sparky的小把戏只需要一些人工干预,但管理资源和规划建造顺序则需要更灵活的策略。最终我们的建造规划器和资源分配器的结构和操作系统的调度器很相似。我们把动作和进程相对应。不同的动作需要向“主宰”的中央控制器请求不同的资源,比如水晶、气体或是单位。中央控制器负责根据优先级来满足不同动作的需求。这种体系结构给了我们很大的灵活性。
David Hall是Dan小组的博士生,也是小组长之一。建造规划器——“我们基本上考虑到了所有当前能做的事情,然后选那个最好的”,他说。我们不会使用固定的建筑和单位建造顺序,而是给出最需要的建筑以及单位的组合,让规划器自己去尽可能的达到它。
这样产生的建造顺序比固定顺序要强壮的多。人工智能不会再被无法预料到的敌方行动卡住。当对手成功的偷到了气矿的时候,我们的AI会去开另一片有气的新矿或是在恢复采气之前建造那些不需要气体的单位。
最终,规划器产生的建造顺序和我们在网上能够看到的高手开局非常接近,而且它具有变通的能力。要赢得《星际争霸》比赛,这种灵活性和强壮性是必不可少的,无论是对于人类选手还是对于人工智能而言。开发过程的主题就是一次又一次在人工智能中将游戏各方面的人工行为的替换为能够推理和决策的工具。
“我成为主宰之时,就是虫群统御天下之日”
到2010年夏天,建筑部分的基础设施终于完工,到了研究如何使用这些建筑的时候了。人工智能要能在战斗中控制己方的部队,选择进攻的目标并按照战术移动己方的单位。但现在我们腹背受敌:挑战赛的最后提交期限是九月,我们快没时间了。
我们必须有些节制。Dan的另一位博士生也是小组长David Burkett说:“我们发现控制混合部队有困难,因此生产多兵种的部队得不偿失。所以我们开始自问,哪个兵种的性价比最高?”
我们把注意力集中在了虫族的飞龙:既能对空也能对地的高速类龙生物。他们的机动性无与伦比,我们认为用计算机控制他们特别合适。飞龙价廉物美,但在比赛中很少看到人类选手大量使用他们,因为只有叠起来的飞龙才比较好操作,但是这样又容易被面攻击(区域伤害,而非单体伤害)大量杀伤。而计算机则不会有这样的局限。
另外,我们一直想设计一个虫族AI,并且把它命名为“主宰”,即《星际争霸》同名小说中控制虫群的大脑。Dan提出了唯一可能的反对意见:“你知道,从申请研究经费的角度来说,如果我们的AI控制的是人类力量而不是一群不断流口水的外星异形是不是更好一些……”
理论上来说,电脑没有人类的局限性,应该能够同时控制多个单位。事实上,一个普遍的误解认为,《星际争霸》的实时性意味着在游戏中反应速度最重要的。虽然速度的确很有用而且很重要,但是最重要的是别干蠢事。正确的决策才是带兵之道。即使是让飞龙在战场上机动也并不是一件简单的事情。飞龙应该去攻击他们的目标但同时避开其他的敌人;它们应该集中火力,但在遇到有面攻击能力的敌方单位时又可以迅速的散开。最后,所有的飞龙的行为都应该同步。
为了处理这些问题并限制的计算开销,我们的AI使用了人工势场来控制单位的移动。势场会使目标对飞龙产生引力而使有威胁的敌方单位对飞龙产生斥力,飞龙最终会飞向合力的方向,这样的的策略简单而强健。像飞龙这样的空中单位即不会受到地形的限制也不会相互碰撞让我们的工作轻松了很多。
势场控制非常强大。例如,只要在开火之后忽略引力就能实现“打了就跑”的战术,斥力会让飞龙自动在攻击间隙离开对方的武器射程。引力可以让编队中的单位集火,而一旦面杀伤的威胁出现时,斥力就使它们四散躲避。
下面的视频展示了飞龙在遭遇白球(强力防空单位)时的这种行为。势场使得“我们期望的行为自然的产生了”,David Burkett说。
。强斥力场可以保证飞龙的安全但是会妨碍它们集火,不同的敌人需要不同的应对方式,也就意味着不同的力场参数。但是人工遍历并调整所有参数花费的时间太多了。
因此,与之相反,我们希望“主宰”能在战斗中学习。
在北欧神话中,武士们的灵魂在一个叫“瓦尔哈拉”的天堂中进行着永恒的战斗。我们使用《星际争霸》的地图编辑器为“主宰”创造了一个瓦尔哈拉,它能够在其中自动的重复不同的战斗场景。通过瓦尔哈拉中的反复试炼和调整,我们的人工智能找到了对付各种敌人的最佳参数组合。
下面的视频演示的是我们的飞龙和电兵的战斗。高阶圣堂武士(电兵)在人类比赛中是一种对抗飞龙的标准兵种,它的闪电能够覆盖一大片区域,屠杀聚集在一起的飞龙。在适当的斥力场作用下,飞龙在躲避心灵风暴时能够轻松的立即散开并重新集结发动攻击。
飞龙的控制逻辑的最后一部分是智能的选择目标。在攻击指定目标时势场工作的很好,但如何选择正确的目标让我们很头疼。我们的飞龙也不能幸免于硬编码策略所带来的危害:早期的目标策略是基于简单的威胁等级指定的,在一般情况下表现尚可,但会周期性的犯傻。飞龙有时会在快要摧毁掉一个人族基地的时候突然转而飞跃半张地图去攻击一个枪兵,或是勇敢的在成排的防空塔阵地前自杀。
最后,解决办法是赋予AI预测自己行为后果的能力。在游戏中,单位之间互相攻击的伤害是已知的,因此我们可以大概算出一群飞龙在消灭一个目标时会承受多少伤害以及花费多少时间。按照建造单位所消耗的资源为目标和飞龙都打分之后,人工智能就能知道目标单位的价值,能够判定最有价值攻击的单位以及攻击的优先级顺序。这样就实现了目标选择的智能化。
下面就是“主宰”战胜Oriol的比赛的一段视频。其中的飞龙群已经集成了最后的改进,在进攻人族基地的时候能够在攻击最有价值的目标的同时最大限度的躲开敌方的防御。
最后的结果是一群飞龙聪明的和对方交火,消灭高价值的目标并避免无意义的损失,直到它具有了压倒性的优势。对手的基地和部队被一点一点的吃掉了。
拨开战争迷雾
夏天过了一半的时候,灵活的建造规划器和经过瓦尔哈拉试炼的智能飞龙群已经使伯克利的“主宰”变成了一个可怕的对手。但是我们在测试中又发现了AI的一个弱点,这使我们懂得了获取和分析敌方情报的极端重要性。
飞龙是二级兵种,这意味着需要一些建筑以及升级才能制造这个兵种。在这之前,我们的人工智能是非常脆弱的,这一点在测试中一览无余。一旦飞龙群达到一定规模,它们几乎是不可阻挡的,但对手能够通过前期的进攻来阻止飞龙成型并取得胜利。
我们的第一反应是让建造规划器在游戏初期建造更多的防御建筑和廉价的地面部队。这的确可以防范前期对手的进攻,但也将生产飞龙的时间推后了。这反映出了一个普遍存在的经济和军事的平衡问题。农民补的太多会使前期很脆弱,但农民不足则不足以支撑一只庞大的部队。把资源分配给防御建筑就意味着进攻兵力的减少。
这个平衡问题答案在于对手的部队数量和意图:对手前期进攻,我们就需要更多的防御;对手发展经济,我们就全力出飞龙。
如果我们的人工智能可以看到对手正在生产什么,那么建造规划器就能相应的调整建造顺序。由于战争迷雾限制了选手的视野,收集对手信息就需要在敌方火力的威胁下不断的进行侦查。在游戏的早期,这意味着用一个农民或是地面单位溜到对方家里,并存活尽量多的时间以看到对方都造了些什么。
对于虫族,游戏中期和后期的侦查大部分来自于良好运用的领主。领主飞行缓慢,但视野开阔,还能够提供人口。把领主分散到地图各处可以帮助AI更好的选择目标并且进行宏观规划,但是失去领主也意味着视野缩小,而且有可能卡人口。侦查的好处应该和失去领主的风险相平衡,人工智能也需要保护领主不被消灭。
我们一开始控制领主的行动和侦查的策略很笨。《星际争霸》的地面单位寻路算法很糟糕,这已经困扰了所有玩家十多年了。随着开发的推进,Dan不想再被撞了南墙也不回头或是不断绕圈的部队郁闷了,于是我们决定开发我们自己的寻路算法。
能成功的从A点走到B点已经很好了,但是真正的挑战在于在寻路中感知敌方的威胁。“主宰”会将所有它见过的敌方单位的最后位置保存下来并不断更新。由于《星际争霸》中所有单位的攻速和射程都是已知的,AI可以利用这些知识和敌人的位置创建一张威胁地图。它能够计算每一种单位在一片区域中的威胁等级。将威胁地图和寻路算法结合起来,把某个区域的威胁值作为穿越该区域的成本加入计算。高危的捷径就会被安全的远路所替代。我们需要花一点心思让改动过的算法足够快,但是搞定之后它的价值就体现出来了。尽管最初它只是被在探路农民上,我们发现它完全可以用在所有的地方。
带有威胁感知的寻路算法带来了一系列的改进。飞龙可以在对手防守的缝隙中发动进攻。在游戏早期,地面单位能够溜进对方基地、避开对方的战斗单位长期存活。新的寻路算法也使得领主能够安全的散布到地图的各个角落。我们的人工智能的宏观视野因此得到很大的改善。对敌方力量了解的更多,建造规划器就能更好的做出应对、建造防御并在经济和军事间做出平衡。
下面的视频就是一个这样的例子。其中我们的领主飞进了对方的基地并发现神族的飞机场是亮的。这使“主宰”在对手的空军来到之前就造好了防空建筑。
这种寻路算法还可以应用到寻路以外的地方。除了扩大视野之外,领主的另一项重要任务是反隐。但是领主的速度跟不上飞龙,所以两者无法协同前进。于是AI会根据各个领主距离飞龙群的“安全距离”动态的使用不同的领主为飞龙提供反隐保护。“安全距离”最近的领主会被分派反隐的任务。随着飞龙在地图上移动,不同的领主会被分派这样的任务,这样就能够在保证一定的地图视野的同时为飞龙提供最大限度的反隐。
在这段视频中你将看到一个领主被召唤来帮助飞龙反隐。
威胁感知、寻路和侦查形成了一个良性循环。威胁地图使侦察单位活的更久,而更好的侦查又能更好的更新威胁地图。AI的视野越好,它越能更好的侦查,反之亦然。最后这个特性使得伯克利“主宰”更加强大,他能生产单位,指挥它们作战并智能的应对敌人的行动。
让Oriol担任“教练”给了我们巨大的帮助。Oriol在进入学术界之前是《星际争霸》的职业级玩家,他在队伍中的作用既是教练,也是陪练,还是百科全书。
在完成了所有算法并和人类高玩对抗了之后,我们的人工智能在最后的几个星期进步飞快,最终在最后期限前几天第一次击败了Oriol。我们在最后时刻提交了这个人工智能,时间已是最后一天的午夜。现在能做的只剩下等待了。
“你的部队接敌了”
在2010年9月15日比赛提交结束之后,实际比赛是九月底在线下进行的,最后结果会在10月13日的人工智能和互动数字娱乐(AIIDE)大会上公布。
全部比赛分为四个类型。第一类和第二类的主题是小股部队的局部对抗。第三类是简单化了的游戏,没有战争迷雾,能够生产的单位也有限制。第四类是正常游戏。我们只参加了第四类比赛,规则是BO5双败赛。最终的结果是,我们的伯克利“主宰”赢得了所有的比赛,小分22战21胜,在17只参赛队中排名第一。
比赛的录像既让人激动又让人担心,有些比赛非常非常接近。所有有上佳表现的人工智能都非常复杂。它们都能生产部队、骚扰、在遇到强大敌人时撤退并采用克制敌人的策略。Sparky能够骚扰到一些对手,但更多的对手防备得当。最强的对手使Sparky的骚扰完全失效,并且对偷气矿的战术免疫。有些对手也有它们的Sparky,也会使用偷气矿战术。
比赛中也有许多惊喜。亚军程序Krasi0也非常强大,它的一种行为出乎了我们的意料,因为我们在人类比赛中没有见过。(译者注:不是吧,没见过scv的各种修?)人族农民有修理机械单位和建筑的能力,但是这中技能很少在战斗中使用,因为其需要的操作和带来的收益相比不值当。
Krasi0把几个农民编为一个修理小分队专门照顾它的坦克和大脚机器人,有时候修理的速度会超过飞龙攻击的强度。我们的人工智能没有考虑到这一点,因此经常会做出错误的判断。我们和它的比赛都变成了残酷的消耗战,“主宰”依靠限制对方的扩张最后通过资源的优势取得了胜利。
最后,AI的胜利让我们欢欣鼓舞,不止是因为它赢了,更因为它取得胜利的方式。“主宰”在比赛中的行为和优秀的人类选手很相似,不是因为我们把这些行为硬编码到了它的身体里,而是因为它有能力去思考和判断,而这些行动就是它判断的结果。建造规划器产生的建筑和单位顺序和已知的建筑顺序非常相像,当领主察觉到对手的进攻时,防御建筑也能够自然平滑的插入到建造序列当中。
最有趣的是,这种击败了Oriol和Krasi0的“围堵-骚扰-扩张”战术完全是AI自创的。在预测代码的帮助下,我们的人工智能知道不应该进攻重兵防守的敌人基地,于是它就在其附近徘徊寻找战机。这一策略成功的阻止了对手的扩张,因为飞龙的高机动性使得对手无法同时防守多个基地。与此同时,“主宰”则飞快的占领了地图上所有其他的资源点,然后暴出一只无法阻挡的大军。所有这一切自然的产生于AI的各层决策,并非有人教给了它。
“好了,下一步是什么?”
最近的目标很明确:人工智能挑战赛会在下一届AIIDE大会上继续举行,所有的队伍都会仔细观看比赛录像并用各种方法改进他们的AI。
我们也将这样做。想要了解更多的信息,请登录我们的网站overmind.cs.berkeley.edu,那里有最新的消息和许多视频。准备充分了之后,我们想让这个人工智能在网上和人类选手对战。我们也会将“主宰”背后的各种算法写成论文。
尽管还有许多困难,这次比赛让我们感觉到未来的《星际争霸》人工智能还可以变得更强大。更高级的规划策略,多兵种的配合以及更好的信息管理都是有待解决的问题。
伯克利“主宰”在对抗Oriol时取得进步让我们欣慰。头几场比赛Oriol轻松的取得了胜利。无论是前期rush还是后期大兵团作战,无论是用地面单位还是用空军,甚至是用农民,我们允许他使出任何战术、任意兵种组合,只要能够击败我们的AI。当提交截止日期临近之时,“主宰”的水平已经让他不得不认真应对了。
“有一些我们想跑却没法实现的测试”,Dan说,“因为我们没法进行到游戏的某个阶段,要么他在前期就能取胜,要么飞龙会赢。”Dan认为在几年之内就会出现能够与最高水平的人类选手相抗衡的人工智能。虽然还有许多工作要做,但这一切看起来只是时间问题。