当前位置: 首页 > news >正文

如何搭建环境并使用星际争霸II学习多智能体协同作战

昨天我的老师找到我,让我给他们搭建一个可供学习多智能体协同作战的环境。虽然最近我很忙,但是我一听,搭建个环境而已,有什么麻烦的,还能折腾老师的学生好几个月结果还搞不定,还用得着我出手?于是我便爽快地答应下来了。 结果这还真有点麻烦,居然用了我一个晚上+一个早上才搞定。遂写下这篇文章,记录详细步骤和坑点,供大家(包括我自己)参考、复现。 如果有哪些地方我没说到的,欢迎来问我。首先需要明确的是,如果你直接下载最新的星际争霸II,那么运行代码时肯定会报错。因为星际争霸II在后续的更新中大幅修改了内部的API和Protobuf通信数据结构,但是牛津大学开发的SMAC官方代码库已经停更很久了,还绑定在旧版的通信协议上。 所以除非你能找到Windows的4.10版本的星际争霸II,否则我们只能使用官方提供的专用于AI训练的Linux的4.10版本的无头客户端。 所以如果你也用的是Windows,那么我们先来安装WSL2(可以把它理解为Linux虚拟机。它甚至原生支持NVIDIA GPU加速,是最适合做AI训练的Linux虚拟机):1. 安装WSL2: 参考微软官方文档:https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/gui-apps 首先我们以管理员身份运行Windows PowerShell,输入: wsl --install 然后等下载。不知道要不要开加速器,反正我是开了。如果此时立刻报错那么大概率就是你禁用了Windows更新,你先取消禁用Windows更新。 安装完成后,它会提示你要重启。 重启后安装会继续,也就是会弹出一个黑框框。我们继续等下载。 然后系统会要求你输入用户名和密码。注意,输入密码时,密码完全不会显示,甚至不会显示 * 号,所以你先想好要输入的密码,盯着键盘一个键一个键敲过去,然后输入回车。然后它会让你再输入一次密码。2. 安装Miniconda(当然你也可以安装Anaconda,但是它体积很大)。这一步是为了之后创建Python虚拟环境以运行Python代码。哪怕你已经在Windows里安装了Anaconda,你也必须在Linux里再安装一遍: 在开始菜单找到并运行Ubuntu,然后: 首先回到用户目录: cd ~ 然后下载Linux 64位版本的Miniconda安装脚本: wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh 然后运行该安装脚本: bash miniconda.sh 然后初始化conda(这一步会让conda命令永久生效,即每次打开终端,conda都会自动加载): ~/miniconda3/bin/conda init bash 然后刷新终端配置,使刚才的更改立即生效(或者你也可以关闭当前Ubuntu,在开始菜单找到并重新运行Ubuntu。理论上这样是行的,但是我没试过): source ~/.bashrc3. 创建Python虚拟环境: 首先回到用户目录: cd ~ 然后创建一个名为smac_env的Python版本为3.12的虚拟环境。其他版本我没试过,听Gemini说许多依赖库对太新的Python版本兼容性极差: conda create -n smac_env python=3.8 然后激活这个名为smac_env的虚拟环境: conda activate smac_env 然后根据CUDA版本(我是11.8版本)安装PyTorch(不知道要不要开加速器,反正我是开了): pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 然后是验证上面几步是否成功,显卡是否能成功穿透到WSL2: python -c "import torch; print('\n>>> CUDA可用状态:', torch.cuda.is_available(), '| 识别到的显卡数量:', torch.cuda.device_count(), '\n')" 如果看到输出 CUDA可用状态: True ,那么就说明到此为止我们都成功了。4. 然后我们需要在这个名为smac_env的虚拟环境里安装几个Python包: 首先激活这个名为smac_env的虚拟环境: conda activate smac_env 然后: pip install pysc2 pip install git+https://github.com/oxwhirl/smac.git pip install git+https://github.com/uoe-agents/smaclite.git 上面三条命令安装的分别是 DeepMind的星际接口 、 牛津大学的多智能体环境 、 EPyMARL的开发者忘记写进requirements.txt里的包 。 接下来我们要下载一个框架。自己从零手写算法太折磨了,学术界和工业界通常使用成熟的框架。EPyMARL就是我们接下来要下载的、目前跑SMAC环境最好用的轻量级框架: 首先回到用户目录: cd ~ 然后克隆EPyMARL仓库: git clone https://github.com/uoe-agents/epymarl.git 此时我们就把这个框架下载下来了。接下来让我们cd到该框架的文件夹: cd epymarl 然后根据requirements.txt安装框架所需的依赖包: pip install -r requirements.txt5. 接下来我们来下载官方提供的专用于AI训练的Linux的4.10版本的星际争霸II无头客户端。我们刚才操作的Ubuntu不要关掉: 在浏览器地址栏输入: https://github.com/Blizzard/s2client-proto#downloads 找到 Linux Packages 那一栏,点击下载里面的 4.10 蓝色链接。 在浏览器地址栏输入(或者你也可以来到这个网址 https://github.com/oxwhirl/smac/releases ,下载Beta release里的SMAC_Maps.zip。Version 1里的SMAC_Maps_V1.tar.gz我没试过,不知道它是咋样的): https://github.com/oxwhirl/smac/releases/download/v0.1-beta1/SMAC_Maps.zip 于是你会得到: SC2.4.10.zip (解压密码为iagreetotheeula) SMAC_Maps.zip 然后我们直接打开Windows文件资源管理器,在地址栏里输入: \\wsl.localhost\Ubuntu\home\你在第1步设置的Linux用户名 (比如我就是\\wsl.localhost\Ubuntu\home\kandao) 然后把 SC2.4.10.zip 解压到该目录下。解压完成后,我们继续来到: \\wsl.localhost\Ubuntu\home\你在第1步设置的Linux用户名\StarCraftII\Maps 然后在当前目录新建一个文件夹,命名为 SMAC_Maps 。必须命名为这个名字。然后我们继续来到: \\wsl.localhost\Ubuntu\home\你在第1步设置的Linux用户名\StarCraftII\Maps\SMAC_Maps 然后解压 SMAC_Maps.zip ,把该压缩包里的SMAC_Maps文件夹下的所有东西,都放到: \\wsl.localhost\Ubuntu\home\你在第1步设置的Linux用户名\StarCraftII\Maps\SMAC_Maps\ 最终效果是来到上面这个目录,就可以看到1c3s5z.SC2Map等文件。6. 然后就是一些杂项。虽然是杂项但我们也必须要做。我们继续使用刚才操作的Ubuntu: EPyMARL框架默认强制去自己项目文件夹下的3rdparty/StarCraftII目录里找游戏。把整个游戏剪切过去当然可以,但因为我们之后可能还会使用别的框架,所以我们最好: 首先回到用户目录: cd ~ 然后cd到EPyMARL框架的文件夹: cd epymarl 然后创建一个名为3rdparty的文件夹: mkdir -p 3rdparty 然后创建一个指向 ~/StarCraftII 的软链接: ln -s ~/StarCraftII ./3rdparty/StarCraftII在Linux中,下载或解压出来的程序默认是没有执行权限的,于是EPyMARL框架不能运行SC2_x64这个游戏主程序。我们需要用Linux的chmod命令,把整个StarCraftII文件夹下的所有程序都加上执行权限: chmod -R +x ~/StarCraftII/7. 一切造物的工都已完毕,我们现在就可以跑第一个真实的强化学习训练了: 首先回到用户目录: cd ~ 然后cd到EPyMARL框架的文件夹: cd epymarl 然后: python3 src/main.py --config=qmix --env-config=sc2 with env_args.map_name=3m 这句命令的意思是使用基于价值的经典算法QMIX,在3m也就是3个枪兵打3个枪兵的地图上进行测试。完成!于是你就可以发现程序开始跑了。这个程序可以跑好久好久,我跑了3小时25分34秒。战利品(结果文件夹)是这个: \\wsl.localhost\Ubuntu\home\你在第1步设置的Linux用户名\epymarl\results 需要注意的是,因为我们使用的是Linux的4.10版本的无头客户端,所以我们是看不到游戏画面的,程序只会在每跑完一局游戏用黑框框向我们展示一些统计信息。 听Gemini说,想看到游戏画面其实也可以,首先你得在训练配置中开启录像功能,然后安装一个最新的星际争霸II,把训练时保存的 .SC2Replay 录像文件用最新的星际争霸II播放,就行了。不过我没试过。vscode有一个微软官方发布的WSL插件,我试了下感觉还挺好用的。你可以重新禁用Windows更新了。
http://www.jsqmd.com/news/698489/

相关文章:

  • Flutter for OpenHarmony 音频播放萌系小指南:给 App 加上软乎乎的 “小音箱”
  • 别再只用SIFT了!手把手教你用Colmap的RootSIFT和自定义特征提升三维重建精度
  • 别再死记硬背了!用PowerDesigner/MySQL Workbench实战ER图转关系模式(附完整SQL脚本)
  • 亲测好用敏感肌使用不过敏防晒霜推荐,Leeyo防晒霜敏感肌防水不致敏不泛白 - 全网最美
  • 2026年银川环保电缆与特种工况电缆供应商深度选型指南 - 企业名录优选推荐
  • OpenPLC Editor:开源工业自动化开发的终极解决方案
  • 告别手动解析!用Python+Tree-sitter快速提取代码语法树(附多语言实战)
  • 3步搞定AMD显卡AI绘画模型训练:kohya_ss终极指南
  • 2026年4月江诗丹顿官方售后网点核验横评与客观解析(含迁址新开) - 亨得利官方服务中心
  • 【兆易创新GD32H759I-EVAL开发板】TLI图层混合与动态UI设计实战指南
  • 有没有能抗光老紧致肌肤的防晒霜?Leeyo抵御光损紧致嫩肤抗老化 - 全网最美
  • Spyder 6.0:重新定义Python科学计算开发体验的技术架构演进
  • 2026年银川环保电缆与特种工况控制电缆采购指南:汇达线缆深度横评 - 企业名录优选推荐
  • STM32H743 FDCAN双通道配置实战:从引脚分配到中断处理的完整流程(含代码)
  • Windows虚拟显示器驱动:为你的PC扩展无限屏幕空间的技术指南
  • BetterNCM安装器:3分钟完成网易云音乐插件框架的终极安装指南
  • LightGlue:自适应剪枝如何重塑深度特征匹配的性能边界
  • 2026年银川环保电缆与控制电缆供应商深度横评:低烟无卤、特种工况一站式解决方案对比指南 - 企业名录优选推荐
  • LunaTranslator:让视觉小说语言壁垒彻底消失的神奇工具
  • 海南洪鑫再生资源回收:海南不锈钢回收电话多少 - LYL仔仔
  • B站M4S转MP4终极指南:三分钟学会视频备份完整方案
  • Proxmox Mail Gateway保姆级安装避坑指南:从换阿里云源到关闭订阅提示
  • Dusun DSGW-130智能家居控制器硬件解析与应用指南
  • IS-IS协议里的“身份证”:一文搞懂NSAP和NET地址的结构与区别(含TLV扩展机制解析)
  • 从模型到决策:农林领域核心模型实战指南与论文写作融合
  • 品冠装饰设计:黄埔口碑好的室内装修公司怎么联系 - LYL仔仔
  • PyMICAPS:气象工作者的终极Python可视化解决方案
  • 探讨2026年实力强的变压器公司,祥控电力排名如何? - 工业品牌热点
  • 杰理之配对名修改是修改ble 配对名【篇】
  • 如何在5分钟内快速上手Ryujinx:免费Switch模拟器终极使用指南