🚀 雪球大战 ☃️,由Hugging Face打造的ML-Agents多智能体环境
这是一个使用Unity ML-Agents Toolkit构建的多智能体环境,两个智能体将在1对1的雪球大战游戏中展开竞争。你可以通过在线链接体验该游戏,同时使用它需要你具备一定的ML-Agents技能。
🚀 快速开始
环境设置
- 克隆此项目:
git clone https://huggingface.co/ThomasSimonini/ML-Agents-SnowballFight-1vs1
- 打开Unity Hub并创建一个新的3D项目。
- 在克隆的项目文件夹中,打开
.\ML-Agents-SnowballFight-1vs1\packages
,复制 manifest.json
和 package.lock.json
。
- 将这两个文件粘贴到
你的Unity项目\Packages
中,这将安装所需的包。
- 将
SnowballFight-1vs1
Unity包拖放到你的Unity项目中。
观看训练好的智能体
- 如果你想观看训练好的智能体,打开
Assets\1vs1\Scenes\1vs1_v2_Training
,将 \ML-Agents-SnowballFight-1vs1\saved_model\SnowballFight1vs1-4999988.onnx
放入蓝方智能体和紫方智能体模型中。
训练智能体
- 如果你想再次训练它,场景为
Assets\1vs1\Scenes\1vs1_v2_Training
。
✨ 主要特性
- 多智能体竞争:两个智能体在1对1的雪球大战游戏中竞争。
- 多样化的观察和动作空间:包括射线检测、向量观察和离散动作空间。
- 独特的奖励机制:根据智能体的表现给予奖励。
- 无友军伤害:智能体不会误伤自己或队友。
📦 安装指南
环境设置
- 克隆此项目
git clone https://huggingface.co/ThomasSimonini/ML-Agents-SnowballFight-1vs1
- 打开Unity Hub并创建一个新的3D项目。
- 在克隆的项目文件夹中,打开
.\ML-Agents-SnowballFight-1vs1\packages
,复制 manifest.json
和 package.lock.json
。
- 将这两个文件粘贴到
你的Unity项目\Packages
中,这将安装所需的包。
- 将
SnowballFight-1vs1
Unity包拖放到你的Unity项目中。
观看训练好的智能体
- 如果你想观看训练好的智能体,打开
Assets\1vs1\Scenes\1vs1_v2_Training
,将 \ML-Agents-SnowballFight-1vs1\saved_model\SnowballFight1vs1-4999988.onnx
放入蓝方智能体和紫方智能体模型中。
训练智能体
- 如果你想再次训练它,场景为
Assets\1vs1\Scenes\1vs1_v2_Training
。
📚 详细文档
环境介绍
- 两个智能体在 1对1的雪球大战游戏 中竞争。
- 目标是 击中对手团队,同时躲避对手的雪球 ❄️。
观察空间
-
射线检测:
- 10条向前的射线,分布在100度范围内:检测对手。
- 10条向前的射线,分布在100度范围内:检测墙壁、掩体和边界。
- 10条向前的射线,分布在100度范围内:检测雪球。
- 3条向后的射线,分布在45度范围内:检测墙壁和掩体。
-
向量观察:
- 布尔值
canShoot
(每2秒只能发射一次雪球)。
- 浮点数
currentHealth
:归一化范围为 [0, 1]。
- 向量3
垂直速度
- 向量3
水平速度
- 向量3
起始位置
动作空间(离散)
- 向量动作空间:
- 四个分支动作,分别对应向前、向后、侧向移动、旋转和发射雪球。
智能体奖励函数(依赖)
- 如果团队 受伤:
- 如果团队 死亡:
- (1 - 累计时间惩罚):当雪球击中对手时,累计时间惩罚每固定更新一次减少 (1 / MaxStep),并在每局开始时重置为0。
- (-1) 当雪球击中我方团队时。
补充说明
- 没有友军伤害,这意味着智能体不能射击自己,或者在未来的2对2游戏中不能射击队友。
训练信息
SnowballFight1vs1
训练了5100000步。
- 最终ELO分数为1766.452。
配置文件
behaviors:
SnowballFight1vs1:
trainer_type: ppo
hyperparameters:
batch_size: 2048
buffer_size: 20480
learning_rate: 0.0003
beta: 0.005
epsilon: 0.2
lambd: 0.95
num_epoch: 3
learning_rate_schedule: constant
network_settings:
normalize: false
hidden_units: 512
num_layers: 2
vis_encode_type: simple
reward_signals:
extrinsic:
gamma: 0.99
strength: 1.0
keep_checkpoints: 40
checkpoint_interval: 200000
max_steps: 50000000
time_horizon: 1000
summary_freq: 50000
self_play:
save_steps: 50000
team_change: 200000
swap_steps: 2000
window: 10
play_against_latest_model_ratio: 0.5
initial_elo: 1200.0
📄 许可证
本项目采用 Apache-2.0
许可证。
⚠️ 重要提示
如果你想使用它,需要具备一些ML-Agents技能,如果不是这种情况,请 查看文档。
👉 你可以 在此链接在线游玩。
