星际争霸AI编写环境搭建教程

BWAPI的使用

Posted by Nathaniel on 2017-01-27

星际争霸AI编写环境搭建教程

Power Overwhelming

星际争霸是什么?

星际争霸是暴雪公司旗下的一款即时策略类游戏(RTS),游戏中,玩家可选择 人类、星灵、异虫 三个种族,进行资源采集和因资源的争夺而引起的战斗。战役部分在此不予详述,自定义战斗的终极目标就是消灭敌人的所有建筑物。

为什么选择星际争霸1?

答案当然是库的支持,星际争霸2尚未有相关支持代码操纵游戏的库,同时通过对屏幕分析从而获取游戏内信息的方式也显得难度过高,而AI编写的主要精力应该放在对人工智能的研究上而非游戏具体的操作(Performance)上。因此,星际争霸1显然是更好的选择。其发行多年,版本稳定,对计算机资源消耗较少,最重要的——有强大的库:BWAPI的支持,它允许我们使用简单的函数来操作游戏内单位的动作,同时可以迅速的获取当前游戏状态(game state)

所以打算进行开发的话我需要哪些东西?

这里给出了一份清单,确保你有以下这些东西:

  1. 星际争霸 1.16.1
  2. BWAPI 4.1.2
  3. BWTA2.2
  4. Visual Studio 2013.aspx)

有了这些东西之后呢?

  1. 第一步当然是安装星际争霸了,上面给出的链接解压即可运行
  2. 安装BWAPI和BATA库,用于支持我们所写代码的运行,具体方法就是双击安装包并且不断地下一步,注意记好选择的安装的位置,之后要用到
  3. 右键单击我的电脑->属性->高级系统设置->环境变量
  4. 新建一个名叫BWTA_DIR的环境变量,内容是你的BWTA库安装的目录
  5. 新建一个名叫BWAPI_DIR的环境变量,内容是你的BWAPI库安装的目录
  6. 以管理员身份运行安装完BWAPI所得到的Chaoslauncher.exe
  7. 根据你在VS2013中build你的AI的模式选择这里的执行模式,如果是debug就选择debug运行模式,否则就选release
  8. 选择好后此时要单击下方的config按钮,修改打开的config文件,其中:
    {0}. ai=你的AI对应的dll文件所在位置 例:C:\Users\Nathaniel\Desktop\F92\F92\bin\F92.dll
    {0}. ai_dbg=你用debug模式生成的dll文件所在的位置
  9. 此时算是配置完成了,点击start按钮,打开星际争霸1,随便开启一局游戏,即可得到AI控制游戏的效果

关于生成

当然上面没说dll文件是哪来的。自然,你需要自己写一个,或者从别人那下载一个,或者是从别人那里clone来的代码然后根据代码生成一个。(欢迎clone 我的repo),生成的时候,记得修改对应的config文件位置为你的实际config文件地址。这里注意,由于Windows使用了\作为目录间隔符,所以在代码中应使用\\来消除转义效果。

理论上,上面这些做好了之后,环境变量设置无误的话,就可以正常生成了,生成的产品自然是一个dll文件,之后,我们便可以使用这个生成的dll文件进行测试了。

如何DEBUG(调试)?

自然,有时候我们需要对我们所写的代码进行debug,而dll文件的特殊性使我们的debug较为特殊,下面是步骤:

  1. 在VS中生成时选debug模式
  2. Chaoslauncher中选择debug模式加载带dbg后缀的dll文件
  3. 运行星际,但是不要开始游戏
  4. Vs中选择 调试->附加到进程->显示所有用户的进程->找到starcraft.exe->选中
  5. 这时候可能VS需要重启,没关系,让他重启
  6. 在星际里面开始游戏
  7. 这时候debug模式下,可以单步执行代码,进行调试了

其他小细节

  • config文件内的dll目录只需要一个\即可,另外也可以使用相对目录
  • Chaoslauncher中勾选W-MODE可以以窗口模式进行游戏,方便在游戏与代码之间切换