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

机器之心 2017-08-11 13:36 阅读:62
摘要:选自Github作者:DavidChurchil机器之心编译参与:李泽南随着暴雪与DeepMind在星际争霸系列游戏上的合作不断推进,人工智能领域的研究者们也正在将目光由20年历史的星际争霸一代转向更

选自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


版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。
阅读量: 62
0