克里斯托弗·佩克特(Christopher Peikert)
Battlecode的竞技并不总是打打杀杀。在2001年举办的首届Battlecode比赛中,克里斯托弗·佩克特(Christopher Peikert)编写了一款能够玩转夏威夷跳棋的算法,最终赢得了比赛。
自那以后,Battlecode就成为了发掘优秀程序员的选拔赛。
今年比赛的主题是“复原”,Battlecode设定的世界正从废墟中恢复原貌,一千多支参赛队伍需通过植树积累分数。
他们要么需要对这项事业做出最大的贡献,要么就得在时间耗尽之前消灭做出更大贡献的对手。
AI在比赛中能够支配园丁、伐木工和坦克等角色,它们拥有各自的统计指标和能力。
子弹既是弹药也是种子,它们可以射向敌人,也可以用来植树。
每年,参赛队伍会在比赛的头几天确定战略,然后编写出一款能够运行的AI。
“通常情况下,你要做的头一件事就是编写一种能够在引擎上运行的算法。”科里·李说。
接下来的几周,参赛队伍将通过不计排名的训练赛和实时直播的比赛,对各自的AI进行测试和调整,直到进入决赛。
包括李在内的很多队伍都会借鉴历届比赛中优秀程序员留下的代码,试图获得优势。
“在决赛前一周,我们发现,原来每支队伍都会使用特别的交流方式。”李说,“我们可以利用这一点来掌握他们机器人的特征。”
受到一种Battlecode黑客战术的启发,李开发的AI可以监听对手的通讯,从而识别出对手,进而调整战略,对敌人的弱点加以利用。
然而,在三局两胜制比赛的前两局,这套黑客战术都没有被触发。
摩根拿下了第一局,李的团队在第二局勉强获胜, 且一直到这个时候,黑客战术都没有奏效。
随着第三局比赛打响,李心情忐忑地站在台上,跟队友讨论着赛况。
“真的希望这一次代码能够被触发。”他说,“这是未经测试的代码,而我们把一切都押在了它身上。”
像黑客那样,侵入比赛系统,李不是第一个,也不会是最后一个。李汲取灵感的那套黑客战术诞生于三年前。
当时,格雷格·利特尔(Greg Little)设计的AI得以监听对手的通讯,干扰信号网络,最终令一些机器人无法动弹。
去年,最令人印象深刻的黑客战术是一种AI把自己的军队转变为僵尸,对其他队伍发起暴风骤雨式的攻击。这套战术赢得了现场观众热烈的掌声。
Battlecode 2016年的获胜者格雷格·麦格林(Greg McGlynn)和靳路昶(音)没有使用什么黑客战术,而是编写出了一套碾压对手的强大算法。
作为三冠王,麦格林深谙Battlecode的制胜之道。
“在我看来,独特的战略并不能让你在比赛中占据优势。”他说,“重要的是,想想机器人在遇到每一种可能的情形时,应该做出什么样的合理反应,然后去一一实现。”