星际争霸1真的是儿时的回忆,1999年那时候网吧都是个稀奇事物。那时本人小学,放学了偷跑去网吧,看人玩星际1.04就是一个下午。儿时最大梦想是可以有自己的电脑,不限时间玩星际争霸。2005年第一台电脑,装的第一个游戏就是星际争霸。大学毕业的时候接触到bwapi相关的东西,打开了全新的大门。随着GOOGLE对于DL,RL的突破,星际争霸这个RTS游戏界的鼻祖,又有了新的生命。为AI世界提供虚拟环境,演练算法。
BWAPI:Brood War Application Programming Interface(血巢之战程序通用编程接口)
下面是github的BWAPI解释介绍:
The Brood War Application Programming Interface (BWAPI) is a free and open source C++ framework that is used to interact with the popular Real Time Strategy (RTS) game Starcraft: Broodwar. Using BWAPI, students, researchers, and hobbyists can create Artificial Intelligence (AI) agents that play the game.
在接触BWAPI这几年里面,他的联赛,论坛,资料也是越来越多。
联赛2011-2019
,
论坛
,
博客
还是打算好好记录一下,学习总结BWAI。不光为了娱乐,更是为了学好AI。
以前安装过名为
ualbertabot
的AI,是BWAPI 4.4.0下的。今天再装一次。最后,BWAPI不是专业的程序员,对于github,C++,python不是很熟的话,只能慢慢摸索。千里之行始于足下。
步骤1:配置环境
安装
vs2019社区版
,最好还是使用C++进行,JAVA版本支持不好。
克隆
ualbertabot
,github上有。
下载一个纯净的
星际争霸1.16.1
。
下载
BWAPI 4.4.0
。
安装Visual Studio
- 从Microsoft网站安装Visual Studio 2019,这可能需要几分钟
- 仅需要C ++开发选项
安装星际争霸
- 安装StarCraft:Broodwar版本1.16.1(这是唯一可以使用的版本)。
-
我强烈建议安装路径短且没有空格,例如
c:\Games\Starcraft
- 在此步骤之后连接到Battle.net或运行任何游戏修补程序都会中断安装,您需要从头开始重新安装Starcraft(注意:这是指在BW中连接到bnet,而不是现代的bnet启动器程序)
安装BWAPI
-
确保将BWAPI安装到目录中,目录名称中没有任何空格。这是由于在UAB项目中使用了不喜欢空格的Windows环境变量。我强烈建议将其
c:\libraries\BWAPI_440
作为安装BWAPI 4.4.0的目录 - 使用BWAPI exe安装程序,或将.7z文件提取到安装目录
- 将文件从BWAPI的StarCraft文件夹复制到您的StarCraft安装目录中
-
将文件从BWAPI的Windows文件夹复制到您的
c:\Windows
目录或StarCraft目录中
Windows环境变量
- UAlbertaBot项目利用Windows环境变量来查找BWAPI库文件的位置。这样做是为了使项目可以在任何系统上编译而无需更改项目文件本身。
-
打开“开始”菜单,键入,
env
然后出现编辑环境变量的选项 -
创建一个名为的Windows环境变量
BWAPI_DIR
。这个变量的值应该是BWAPI安装目录的完整路径(例如:
c:\libraries\BWAPI_440
)
步骤2:编译BWAPI和UAlbertaBot
编译BWAPI 4.4.0
-
BWAPI_DIR/ExampleProjects.sln
在VS2019中打开VS解决方案文件 -
对于
BWAPILIB
和
BWAPIClient
项目:在项目上单击鼠标右键,
Properties
在左侧菜单中选择,然后
Platform Toolset
在右侧菜单中将更改为
Visual Studio 2019 (v142)
。请确保对左上角选择的
Release
和
Debug
配置都执行此操作。由于BWAPI最初是使用VS2017创建的,因此此步骤是必需的。 -
右键单击并
Build
在
BWAPILIB
和
BWAPIClient
项目。这将生成UAlbertaBot将链接到的必需的LIB文件。请确保同时在
Release
和
Debug
模式中构建,这是在上方工具栏中选择的。 -
如果正确完成,则应在BWAPI安装目录中创建两个文件夹:
Release
和
Debug
。这些文件夹中的每一个现在都应包含
BWAPILIB.lib
和
BWAPIClient.lib
,它们将由UAlbertaBot项目在下一步中通过环境变量值链接
编译UAlbertaBot
-
UAlbertaBot/VisualStudio/UAlbertaBot.sln
在Visual Studio 2019中打开 -
选择
Release
或
Debug
模式。该
Debug
版本的运行速度会慢得多,因为它会在调试时跟踪所有变量。如果要尽快运行漫游器,请选择
Release
。
Debug
模式编译速度更快,建议用于开发。 -
右键单击
Build
该
UAlbertaBot
项目(将创建所有项目) -
编译后的可执行文件将转到
UAlbertaBot/bin
目录 -
根据是在
Release
还是
Debug
模式下编译,生成的exe文件将分别是
UAlbertaBot.exe
或
UAlberaBot_d.exe
步骤3:运行UAlbertaBot和Starcraft
为了在Starcraft中使用基于BWAPI的机器人,您必须通过
Chaoslauncher
BWAPI附带的程序运行Starcraft 。Chaoslauncher将BWAPI .dll文件注入Starcraft,以便它可以与您的机器人通信。Chaoslauncher的可执行文件
Chaoslauncher.exe
位于,并且位于中
BWAPI_DIR/Chaoslauncher/
。Chaoslauncher可以在系统上的任何位置运行,因此可以将其保留在BWAPI目录中,但是我建议在任务栏上为其创建快捷方式,因为您将经常使用它。还有一个多实例版本,允许您同时运行多个Starcraft实例。
-
确保
Chaoslauncher.exe
和
Starcraft.exe
设置为以管理员身份运行。右键单击该.exe文件,选择
Properties
>
Compatibility
>检查
Run as Administrator
-
跑
BWAPI_DIR/Chaoslauncher/Chaoslauncher.exe
-
根据自己的喜好编辑
UAlbertaBot配置文件
。默认情况下,配置文件位于
bin/UAlbertaBot_Config.txt
。该文件必须与
UAlbertaBot.exe
。除非您熟悉漫游器及其配置,否则请跳过此步骤。 -
确保
BWAPI 4.4.0 Injector Release
在Chaoslauncher中选中了该选项 -
运行
UAlbertaBot
以下两种方法之一:1)从VS运行(通过单击
Local Windows Debugger
上方),或2)
bin/UAlbertaBot.exe
通过双击文件或从控制台运行文件来运行文件 -
该机器人现在应该在自己的控制台窗口中运行,
Game table mapping not found
每秒打印一次。这将一直持续到Starcraft使用BWAPI运行为止,届时机器人将自动连接到Starcraft并运行 -
Start
在Chaoslauncher中单击以运行《星际争霸》,游戏开始时UAlbertaBot将连接 -
第一次执行步骤7时,Chaoslauncher可能会抱怨它不知道Starcraft的安装位置。单击
Settings
窗口顶部的选项卡,然后编辑
Installpath
目录。 -
星际争霸里面使用开始游戏
Single Player
>
Expansion
>
Play Custom
,选择任何标准的多人地图和使用
Melee
设置启动。注意:漫游器不能与多个对手一起使用,也不能与单人游戏一起使用。
注意:默认情况下,bot可执行文件
UAlbertaBot.exe
已编译并放置在
bin
UAlbertaBot项目的目录中。该文件实际上可以从系统上的任何位置运行,但是它必须与bot的配置文件位于同一目录
UAlbertaBot_Config.txt
中,默认情况下,该文件也位于该
bin
目录中。
步骤4.开发周期
首次启动并运行所有功能后,建议您使用以下工作流程:
- 在开发过程中保持Chaoslauncher打开,没有理由将其关闭
-
将
BWAPI.ini
文件编辑为
AUTO_MENU
on,以便您不必在每次运行游戏时都选择Starcraft设置(请参见下文) -
在VS中更改代码后,只需单击
Local Windows Debugger
VS中绿色箭头旁边的按钮即可运行漫游器,然后在Chaoslauncher中单击“开始”。这将首先运行UAlbertaBot,然后启动Starcraft -
最后,必须先关闭Starcraft和UAB,然后才能再次编译bot。您只需关闭“星际争霸”窗口即可,该窗口将自动停止该
UAlbertaBot.exe
过程。
开发者注意:开发机器人并不得不多次运行时,手动导航Starcraft菜单变得非常繁琐。您可以配置
BWAPI.ini
文件以使用该
AUTO_MENU
功能,该功能将使用您的输入设置来自动选择要玩的地图和种族。我建议在开始进行bot开发之前,先使其工作。要编辑
BWAPI.ini
文件,请先
BWAPI 4.4.0 Injector [RELEASE]
在Chaoslauncher内部选择,然后单击
Config
右侧的按钮。这将
Starcraft/bwapi-data/BWAPI.ini
在记事本中打开文件。
有关BWAPI配置文件的完整详细信息,
请点击此处
感谢UAlbertaBot原作者写的安装说明。