选自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 提供以下功能
开发者表示,尽管目前还不尽完善,CommandCenter 最终将会包含 UAlbertaBot 的所有功能。以下是目前缺失\即将推出的功能列表:
下载和使用
如果你只想下载和运行,看看它和星际争霸 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)
开发者安装/调试(Linux)
目前,在 Linux 上的开发和测试尚未进行,也没有相应的 Makefile,不过在 Linux 上的运行应该是稳定的。
开发
如果你熟悉 UAlbertaBot,它与 CommandCenter 的逻辑是大致相同的。其中最大的不同是与地图有关的信息、基地位置等内容不再是全局可访问的。该类数据现在存在于主 CCBot 类中,并且必须通过对该类的实例的引用才能进行访问。正因为如此,CommandCenter 中的大部分类都会引用 bot 的主 CCBot 对象。这样,与游戏相关的所有信息、观察和查询就都可以完成了。
更为详细的开发者指南会在未来推出,目前,你可以参考 UAlbertaBot wiki,因为其中的机制大致相同(除了构建计划和战斗模拟器):https://github.com/davechurchill/ualbertabot/wiki
本文为机器之心编译,转载请联系本公众号获得授权。