安装SMAC
SMAC
是基于暴雪公司星际争霸Ⅱ做的一个多智能体环境,官方GitHub
链接为:https://github.com/oxwhirl/smac。
安装之前更新一下pip
(不更新的话会报一个错误):
ERROR: Command errored out with exit status 128: git clone -q https://github.com/oxwhirl/smac.git /tmp/pip-req-build-tz6uj500 Check the logs for full command output.
更新命令如下:
pip install --upgrade pip
更新之后,我的pip
版本升到了21.1.2
版本:
安装SAMC
的话我们直接采用以下命令即可:
pip install git+https://github.com/oxwhirl/smac.git • 1
安装StarCraft II
因为SMAC
是基于星际争霸游戏引擎的,所以我们还需要安装StarCraft II
,官方指定的版本为SC2.4.6.2.69232
,并且不同版本之间的算法性能测试不一样。相关包的下载可以在如下链接找到:https://github.com/Blizzard/s2client-proto#downloads,这里我采用4.6.2
这个和官方一样的版本进行安装。直接进上面这个链接去选中下图所示的4.6.2
即可:
下载好了之后我们能够得到如下这样一个压缩包:
我们需要将这个zip
文件解压:
unzip SC2.4.6.2.69232.zip
解压的过程需要密码,密码为:iagreetotheeula
。
解压后文件默认路径为~/StarCraftII/
,如果放在别的路径,需要更改环境变量SC2PATH
,所以解压之后我把解压的文件拷贝到了~/
目录下面。
下载SMAC地图
我们需要下载地图,也就是游戏的地图并将其放在之前解压的StarCraft II
文件下面的Maps
目录下面。下载链接为:https://github.com/oxwhirl/smac/releases/download/v0.1-beta1/SMAC_Maps.zip。解压之后得到两个文件夹:
将文件夹直接放在$SC2PATH/Maps
下即可。直接我们就可以进行阶段性的测试了:
- 测试
Map
是否放置成功:
python -m smac.bin.map_list • 1
- 测试
smac
和它的Map
是否配置成功:
python -m smac.examples.random_agents • 1
能够得到以下输出结果:
到此在Linux
下配置星际争霸2
的环境就差不多了。
Py文件中进行测试
如果想要Debug
初步了解这个环境的话,可以采用如下代码:
from smac.env import StarCraft2Env import numpy as np def main(): env = StarCraft2Env(map_name="8m") env_info = env.get_env_info() n_actions = env_info["n_actions"] # 获取动作维度 n_agents = env_info["n_agents"] # 存在多少个智能体 n_episodes = 10 for e in range(n_episodes): env.reset() terminated = False episode_reward = 0 while not terminated: obs = env.get_obs() state = env.get_state() actions = [] for agent_id in range(n_agents): # 对于每个智能体遍历循环 avail_actions = env.get_avail_agent_actions(agent_id) avail_actions_ind = np.nonzero(avail_actions)[0] action = np.random.choice(avail_actions_ind) actions.append(action) reward, terminated, _ = env.step(actions) episode_reward += reward print("Total reward in episode {} = {}".format(e, episode_reward)) env.close() if __name__ == "__main__": main()
对于上述代码,