这段时间AI的呼声非常高,除了BD的双足机器人会站在台子上面后空翻之外,再早一些时候,Dota AI也在1vs1中,微操做赢了人类冠军,更不要说之前Google的AlphaGo Zero通过改进的强化学习,可以从一片空白,在36小时之内击败其前辈AlphaGo,而且利用的计算能力更小(李世石版使用了176个GPU和48个TPU,而如今的阿尔法零只使用一台机器和4个TPU)。
不过在星际争霸中,AI栽了跟斗:在韩国的星际争霸比赛中,三名人类选手(两名学生选手和宋炳具)分别与四个接受过《星际争霸》训练的人工智能机器人展开了竞争,其中包括来自韩国世宗大学的MJ机器人、来自澳大利亚的ZZZK、挪威的TSCMOO以及Facebook开发的CherryPi。最终,游戏玩家宋炳具(Song Byung-gu)以4:0击败了人工智能。
作为一个星际爱好者,非常希望看到高水平的AI可以,或许可以和自己比试一下,或者可以完爆计算机内置AI。最近折腾了一阵子,弄明白了星际争霸的AI对战方法。尝试了一下,结论是:AI打星际的水平还比较低,最高水平的AI和计算机相比,1vs2可以获胜,但是1vs3或者更高就差距很大,几乎是必死。普通水平的AI和计算机相比,1vs1也是必输,看了机器的表现,我也能赢AI,后面说说如何赢。星际是RTS的代表,因此估计其他的RTS游戏中,AI也不太可能战胜人类。
先简单说一下背景、配置和使用:
1、BWAPI的由来。一伙发烧友逆向工程了Blizzard的BroodWar,研究出来直接写BW的内存来获取状态并发布操作命令,有些类似破解,这个方法需要主队BW进行程序注入,因此也需要用Windows管理员权限来执行程序,否则就会报错。此后,很多爱好者可以通过这个接口开发AI与机器或者人类对战。目前有BWAPI有不少扩展。由于Blizzard不允许这伙人破解SC2,因此,BWAPI目前仅仅支持SC一代。
- BWAPI有个主页:http://www.starcraftai.com/wiki/Main_Page
- BWAPI是开源的:可以自行下载编译,用VS 2015编译了一下,除了有些项目配置需要修改之外,可以顺利编译并运行。
- 原先打算尝试一下多个AI对战,折腾了Win8.1虚拟机上配置BW,目前MS对外免费提供Windows虚拟机用于Edge浏览器测试,但是上面缺少很多VS的Lib,虽然可以安装vcredist程序,但是一些CRT的库还是没有,有个技巧是直接安装Paint.NET就可以了(需要安装一堆NET)
2、BWAPI的好几个主要版本和Bots,除了早期的2系列之外,其中3.7.4、4.0.1和4.1.2是主要版本,多数AI bot都是基于3.7.4的,目前一共有61个bots,如下,其中多数Bots都采用神族(Protoss),有个别几个是人族(Terran),虽然没有逐个查看,没有看到虫族AI。在所有AI中排名最高的是XIMP,一个斯洛伐克学生
Tomas Vajda写的AI(Comenius University in Bratislava, Slovakia),这个AI作战很有特点:
- 广泛的探索地图,建设至少3个基地
- 除了主基地之外,外部副基地都用大量地堡(Cannon)守卫,主要是采集资源
- 进攻方式为4个一组的航母(Carriers)和一个探测器(Observer)
- 航母和农民都会采用微操作减少伤亡
3、XIMP的介绍和能力
XIMP的作战模式是一种简单的粗暴的成功案例,类似人族的堵门战术和虫族的地刺战术,在资源充足的情况下,很有杀伤力。在1vs2的情况下,几乎可以稳获胜利,但是1vs3就难以取胜。XIMP会将人数提升到170-190之间,形成人数上的优势。仔细观察了失败的场景,航母在资源不足的情况下,完全失去控制力,被敌人快速击败。而且XIMP还是缺乏人类的智慧,主要实在重复固定的套路。
XIMP的地堡战术
XIMP主基地,建设丰富的建筑
一支航母舰队
航母舰队
威力巨大的航母舰队
XIMP在1vs2作战中获胜,杀伤人数很多
XIMP自身损失的主要是地堡
XIMP的胜利完全源自对资源的大量消耗
4、SC II Client。这个是Blizzard的官方API(与Google合作),可以通过非破解的方式来访问游戏状态并发布操作。CommandCenter是David Churchill组织开发的一个AI框架(加拿大纽芬兰纪念大学的助理教授,此人也是 AIIDE 星际争霸 AI 对抗赛的组织者)。CommandCenter可以支持BWAPI,也支持SC II AIAPI,但是系统架构还是采用前面提到的UAlbertaBot。
主要特性:(来自https://www.jiqizhixin.com/articles/2017-08-11-2的翻译,原文在https://github.com/davechurchill/commandcenter )
- 可以操作人族、神族与虫族进行比赛,并可以对单位进行微操。
- 进行在线地图分析,提取基础地址与扩展信息等资料。
- 跟踪所有曾经看到过的敌方单位,记住它们上次出现的地图位置。
- 拥有 WorkerManager,可以管理资源采集、SCV\探机\工蜂的位置和建造活动。
- 可以执行在配置文件中编写的预定义的建造顺序。
- 你可以轻松创建自己的建造顺序,并在游戏中即时对其进行修改。
- 包含建筑物摆放算法,可以找到给定地址附近最近的可建造位置。
- 用建造单位搜索地图,试图寻找敌方基地位置。
- 一旦达成特定的条件(如默认条件下:12 个战斗单位),AI 将发出指令对敌方基地方向展开攻击。
- 可以对单位进行编组,其中可包括不同种类的单位,对特定位置进行攻击或防御。
- 开发者表示,尽管目前还不尽完善,CommandCenter 最终将会包含 UAlbertaBot 的所有功能。以下是目前缺失\即将推出的功能列表:
- 目前 AI 只能通过 ProductionManager 构建单位和基本建筑物——不能控制附加组件,研究或升级。
- 目前还没有自动构建订单计划系统。
- 没有战斗模拟机制,无法预测战斗的胜率。
- 目前 AI 只能用于 1v1 对战,如果进行多人或组队游戏,可能会出现无法预测的情况。4、SC2LE训练集 。8月7日,Facebook的AI团队发布了史上最大的《星际争霸:母巢之战》游戏数据集。紧接着10号,Deepmind就和暴雪联合发布了《星际争霸2》的游戏数据集与AI训练平台SC2LE。看这个架势,巨头们准备大张旗鼓地弄AI了
从目前的情况看,AI对于单一能力的掌握和提升具有很强的优势,特别是对于大量同类对象的控制能力,在BWAPI中就可以看的很清楚。但是一旦涉及到多种能力的组合、对场景的全局掌控、对合作方的联合控制时,AI就显得能力不足了,这一点目前看来在其他领域,AI也未能取得突破。还需要一些时间,也许这一波AI浪潮就这么过去了,留下了一大批算法和原型
相关信息:
2、三年内的电脑程序AI是否能在星际争霸,星际争霸2,魔兽争霸3
3、http://www.starcraftai.com/wiki/List_of_bots
4、Nova:一个人族AI、源代码
5、BWAPI源代码
6、BWAPI 4.2.0说明文档
7、CommandCenter: AI Bot for Broodwar and Starcraft II(没试过)
8、BWAPI的发行版,懒人可用
9、Starcraft 2 Automated Player
10、CommandCenter:基于暴雪官方API的星际争霸2 AI Bot
11、Deepmind和Facebook两大AI巨头
《星际争霸AI的真实能力》有1个想法