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

百家 作者:机器之心 2017-08-11 10:29:43

选自Github

作者:David Churchil

机器之心编译

参与:李泽南


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


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


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


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


目前,CommandCenter 提供以下功能


  • 可以操作人族、神族与虫族进行比赛,并可以对单位进行微操。

  • 进行在线地图分析,提取基础地址与扩展信息等资料。

  • 跟踪所有曾经看到过的敌方单位,记住它们上次出现的地图位置。

  • 拥有 WorkerManager,可以管理资源采集、SCV探机工蜂的位置和建造活动。

  • 可以执行在配置文件中编写的预定义的建造顺序。

  • 你可以轻松创建自己的建造顺序,并在游戏中即时对其进行修改。

  • 包含建筑物摆放算法,可以找到给定地址附近最近的可建造位置。

  • 用建造单位搜索地图,试图寻找敌方基地位置。

  • 一旦达成特定的条件(如默认条件下:12 个战斗单位),AI 将发出指令对敌方基地方向展开攻击。

  • 可以对单位进行编组,其中可包括不同种类的单位,对特定位置进行攻击或防御。


开发者表示,尽管目前还不尽完善,CommandCenter 最终将会包含 UAlbertaBot 的所有功能。以下是目前缺失即将推出的功能列表:


  • 目前 AI 只能通过 ProductionManager 构建单位和基本建筑物——不能控制附加组件,研究或升级。

  • 目前还没有自动构建订单计划系统。

  • 没有战斗模拟机制,无法预测战斗的胜率。

  • 目前 AI 只能用于 1v1 对战,如果进行多人或组队游戏,可能会出现无法预测的情况。


下载和使用


如果你只想下载和运行,看看它和星际争霸 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 的目录,而不是下面描述的目录。

  • 将该 Git 存储库复制到 PC 上的文件夹中

  • 在 VS2017 中打开「CommandCenter / vs / CommandCenter.sln」

  • 将 VS Project include 和 lib 文件夹设置为指向 SC2API 目录

  • 右键单击 VS2017 中的 CommandCenter 项目

  • 选择「属性」

  • 选择要在左上方构建的正确配置(「Release」或「Debug」)

  • 选择左侧的「VC ++目录」

  • 在右侧的表格中选择「Include Directories」选项

  • 点击右侧的下拉箭头,然后点击编辑

  • 修改现有的目录设置以指向 SC2API/include 目录

  • 在右侧的表中选择「Library Directories」选项

  • 点击右侧的下拉箭头,然后点击编辑

  • 修改现有的目录设置以指向 SC2API/lib 目录


  • 在「Build」菜单中,单击「Build Solution」

  • 「CommandCenter.exe」应该出现在 CommandCenter/bin/目录中

  • 运行 CommandCenter bot 可通过:

  • 双击 CommandCenter/bin/目录中的可执行文件

  • 从控制台运行程序

  • 在 VS 中单击「本地 Windows 调试器」以从 VS 内启动程序。对此,你需要将「调试」下的「工作目录」选项设置为「$(ProjectDir)/../bin/」(貌似这个选项无法保存)

  • CommandCenter/bin/BotConfig.txt文件必须在相同的目录下,因此 .exe 才能正确运行


开发者安装/调试(Linux)


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


开发


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


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



本文为机器之心编译,转载请联系本公众号获得授权

✄------------------------------------------------

加入机器之心(全职记者/实习生):hr@jiqizhixin.com

投稿或寻求报道:editor@jiqizhixin.com

广告&商务合作:bd@jiqizhixin.com


点击阅读原文,查看机器之心官网↓↓↓

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接