CommandCenter:基于暴雪官方API的星际争霸2 AI Bot

By 李泽南2017年8月11日 12:03

随着暴雪与 DeepMind 在星际争霸系列游戏上的合作不断推进,人工智能领域的研究者们也正在将目光由 20 年历史的星际争霸一代转向更为「现代化」的星际争霸 2。近日,AIIDE 星际争霸 AI 对抗赛的组织者 David Churchill 发布了基于暴雪星际 2 API 的 AI bot 框架,为开发者们构建人工智能,挑战这一复杂游戏提供了一种基础工具。


项目地址:https://github.com/davechurchill/commandcenter


CommandCenter 是一种星际争霸 2 的 AI bot,它由 C++编写,使用了暴雪提供的星际争霸 2AI API。它是由加拿大纽芬兰纪念大学的助理教授 David Churchill 开发的,此人也是 AIIDE 星际争霸 AI 对抗赛的组织者。


作为星际争霸 2 为数不多的 bot 之一,CommandCenter 基于 UAlbertaBot 架构(星际争霸一代 bot),旨在提供一种稳固、易于使用且能够快速设置的架构,让使用者可以与之对战,并在其上构建自己的人工智能。CommandCenter 本身并不包含太多硬编码的策略或战术,但它为你应用自己的三族战术提供了一个很好的平台。


目前,CommandCenter 提供以下功能:



下载和使用


如果你只想下载和运行,看看它和星际争霸 2 内置 AI 的对战效果如何,你可以下载预编译版本:https://github.com/davechurchill/commandcenter/tree/master/release


你必须拥有星际争霸 2 正版最新版本的游戏才能运行该 bot。你必须下载并安装 AI 可用的相应地图:https://github.com/Blizzard/s2client-proto#downloads


注意:解压密码在页面中已提供。


Bot 的调试文件名为 BotConfig.txt,你可以在其中调整单位建造顺序,在屏幕上显示 debug 信息,设置 bot 参数。你可以在文件中的「Strategies」段落设置同时构建多种类型的订单,并在 AI 使用特定种族时指定其中的一部分。在订单策略中,单位名称必须准确(与游戏中显示的一致,分大小写,无空格)。目前在设置文件中有一些策略无法应用,如风筝的远程单位。


注意,此设置文件的格式为 JSON,如果格式错误,AI 将无法运行。设置文件必须放置在 CommandCenter.exe 相同的目录下。如果你的 JSON 格式有语法错误,可以使用在线的 JSON Validator 来进行检查:https://jsonlint.com/


在默认情况下,当你运行 CommandCenter.exe 时,它会开始玩随机 AI vs 随机星际争霸 2 内置电脑(简单)。你可以在「BotRace」和「EnemyRace」设置中调整对战双方的种族。你也可以在「MapFile」选项中调整对战地图。注意:MapFile 选项与星际争霸 2 的地图目录相关,默认的地址是星际争霸 2 安装地址/maps/,你必须制定合法的地图文件。


开发者安装/调试(Windows)


下载并安装 Visual Studio 2017


下载并安装「星际争霸 II」AI API(https://github.com/Blizzard/s2client-api)。最简单的方法是在页面底部下载预编译库(https://github.com/Blizzard/s2client-api#precompiled-libs),然后将其解压缩到 PC 上的文件夹中。如果你通过复制 Blizzard github repo 并从头开始编译 SC2API,则可能需要将 VS 指向不同于 include 和 lib 的目录,而不是下面描述的目录。



开发者安装/调试(Linux)


目前,在 Linux 上的开发和测试尚未进行,也没有相应的 Makefile,不过在 Linux 上的运行应该是稳定的。


开发


如果你熟悉 UAlbertaBot,它与 CommandCenter 的逻辑是大致相同的。其中最大的不同是与地图有关的信息、基地位置等内容不再是全局可访问的。该类数据现在存在于主 CCBot 类中,并且必须通过对该类的实例的引用才能进行访问。正因为如此,CommandCenter 中的大部分类都会引用 bot 的主 CCBot 对象。这样,与游戏相关的所有信息、观察和查询就都可以完成了。


更为详细的开发者指南会在未来推出,目前,你可以参考 UAlbertaBot wiki,因为其中的机制大致相同(除了构建计划和战斗模拟器):https://github.com/davechurchill/ualbertabot/wiki

声明:本文由机器之心编译出品,原文来自GitHub,作者David Churchill,转载请查看要求,机器之心对于违规侵权者保有法律追诉权。