Go-Bigger:多智能体决策智能环境
欢迎使用 GoBigger v0.2!
更多详情请参阅我们在 ICLR2023 会议上发表的论文(GoBigger:一个可扩展的合作竞争多智能体交互仿真平台)。
GoBigger 是一个高效简洁的类 agar 游戏引擎,为游戏 AI 开发提供了各种接口。这个游戏类似于巴西开发者 Matheus Valadares 创建的大型多人在线动作游戏 Agar。在 GoBigger 中,玩家控制地图上的一个或多个圆形球体。游戏目标是通过吃食物球和比玩家球体小的其他球体来尽可能增大体积,同时避开可能吃掉玩家球体的更大球体。每个玩家一开始控制一个球体,当球体达到足够大小时,玩家可以将其分裂成两个,从而控制多个球体。
我们更加关注以下几点:
- 合作比单独行动更有收益。
- 在小范围区域内容易爆发激烈竞争。
- 可扩展的环境,能够模拟各种团队和每个团队中的多个智能体。
- 丰富的动作空间和部分可观察的观察空间。
- 针对不同类型的小游戏提供更详细的配置。
目录
概述
GoBigger 允许用户在基本规则内轻松与多智能体环境交互。用户可以通过给定的接口简单地获取游戏中的观察信息,并对其智能体施加操作。GoBigger 虽然具有复杂的观察空间,但其构建基于简单的规则和动作。
基本规则
为了理解游戏规则,GoBigger 提供了以下几个概念:
比赛
:GoBigger 允许多个智能体参与一场比赛。比赛中有许多不同的单位,如食物球、刺球、孢子球和克隆球。比赛结束时,每个智能体应通过吃掉其他球体来增加体积,以获得更高的排名。智能体
:每个智能体控制一个团队,包括多个玩家。团队合作对智能体与其他智能体对抗至关重要。玩家
:每个玩家一开始拥有一个球体。为了提高游戏的操作性,GoBigger 为玩家球体提供了几种操作,包括分裂
和喷射
。球体
:GoBigger 在比赛中提供 4 种球体。食物球
:食物球是游戏中的中立资源。如果玩家球体吃掉食物球,食物球的大小将转化为玩家球体的大小。刺球
:如果玩家球体吃掉刺球,刺球的大小将转化为玩家球体的大小。但同时,玩家球体会爆炸并分裂成几个碎片(默认为 10 个)。孢子球
:孢子球是由玩家球体喷射出来的。克隆球
:克隆球是你可以在游戏中控制的球体。你可以改变它的移动方向。此外,它可以通过覆盖其他球体的中心来吃掉比自己小的球体。
更多详情,请参阅 什么是 GoBigger。
观察空间
GoBigger 还提供了丰富的可观察信息,观察空间可分为两部分。以下是对观察空间的简要描述。更多详情,请参阅 观察空间。
全局状态
全局状态提供与整个比赛相关的信息,如地图大小、比赛总时间和剩余时间,以及包含团队名称和得分的排行榜。
玩家状态
玩家状态应如下所示:
{
player_id: {
'rectangle': [left_top_x, left_top_y, right_bottom_x, right_bottom_y], # 视野在地图中的位置
'overlap': {
'food': [[position.x, position.y, radius, score], ...],
'thorns': [[position.x, position.y, radius, score, vel.x, vel.y], ...],
'spore': [[position.x, position.y, radius, score, vel.x, vel.y, owner], ...],
'clone': [[[position.x, position.y, radius, score, vel.x, vel.y, direction.x, direction.y,
player_id, team_id], ...],
}, # 视野内所有球体的信息
'team_name': team_name, # 该玩家所属的团队
'score': player_score, # 玩家的得分
'can_eject': bool, # 玩家是否可以执行`喷射`动作
'can_split': bool, # 玩家是否可以执行`分裂`动作
},
...
}
在这里,GoBigger 为玩家提供了其视野内所有球体的信息。
动作空间
实际上,一个球体在比赛中只能移动、喷射和分裂。因此,动作空间简单包括:
- 玩家球体的移动方向。
- 分裂:当球体达到足够大小时,玩家可以将一个球体分裂成两个。
- 喷射:玩家球体可以在移动方向上喷射孢子。
更多详情请参阅 动作空间。
入门指南
环境设置
我们在以下系统中测试了 GoBigger:
- Centos 7.6
- Windows 10
- MacOS Catalina 10.15
我们建议您的 Python 版本为 3.6。
安装
您可以通过以下命令从 PyPI 轻松安装 GoBigger:
pip install gobigger
如果您使用 Anaconda 或 Miniconda,可以通过以下命令安装 GoBigger:
conda install -c opendilab gobigger
您也可以通过 GitHub 安装最新版本。首先,使用以下命令行获取并下载官方仓库。
git clone https://github.com/opendilab/GoBigger.git
然后您可以从源代码安装:
# 安装使用
# 注意:使用 `--user` 选项将相关包安装到用户自己的目录中(例如:~/.local)
pip install . --user
# 开发安装(如果您想修改 GoBigger)
pip install -e . --user
使用
安装完成后,您可以根据以下代码轻松启动游戏环境:
import random
from gobigger.envs import create_env
env = create_env('st_t2p2')
obs = env.reset()
for i in range(1000):
actions = {0: [random.uniform(-1, 1), random.uniform(-1, 1), -1],
1: [random.uniform(-1, 1), random.uniform(-1, 1), -1],
2: [random.uniform(-1, 1), random.uniform(-1, 1), -1],
3: [random.uniform(-1, 1), random.uniform(-1, 1), -1]}
obs, rew, done, info = env.step(actions)
print('[{}] leaderboard={}'.format(i, obs[0]['leaderboard']))
if done:
print('游戏结束!')
break
env.close()
您将看到如下输出。它显示每帧的帧号和排行榜。
[0] 排行榜={0: 3000, 1: 3100.0}
[1] 排行榜={0: 3000, 1: 3100.0}
[2] 排行榜={0: 3000, 1: 3100.0}
[3] 排行榜={0: 3000, 1: 3100.0}
[4] 排行榜={0: 3000, 1: 3100.0}
[5] 排行榜={0: 3000, 1: 3100.0}
[6] 排行榜={0: 3000, 1: 3100.0}
[7] 排行榜={0: 3000, 1: 3100.0}
[8] 排行榜={0: 3000, 1: 3100.0}
[9] 排行榜={0: 3000, 1: 3100.0}
[10] 排行榜={0: 3000, 1: 3100.0}
...
更多详细信息,请参考gobigger_env.py。
与游戏的实时交互
GoBigger允许用户在个人电脑上实时玩游戏。支持多种模式供用户探索这个游戏。
与机器人对战 & 部分视野
如果你想在电脑上玩实时游戏,可以使用以下代码启动游戏:
python -m gobigger.bin.play --mode st --vision-type partial
在这种模式下,请使用鼠标控制你的球体移动,"Q"键表示向移动方向喷射孢子,"W"键表示分裂你的球体。
与机器人对战 & 全视野
你可以使用以下代码启动游戏:
python -m gobigger.bin.play --mode st --vision-type full
GoBigger中的高级操作
向中心喷射
团队合作
分裂和合并
分裂吞噬他人
引用
@inproceedings{zhang2023gobigger,
author = {Ming Zhang and Shenghan Zhang and Zhenjie Yang and Lekai Chen and Jinliang Zheng and Chao Yang and Chuming Li and Hang Zhou and Yazhe Niu and Yu Liu},
title = {GoBigger: A Scalable Platform for Cooperative-Competitive Multi-Agent Interactive Simulation},
booktitle={International Conference on Learning Representations},
year = {2023},
url={https://openreview.net/forum?id=NnOZT_CR26Z}
}
资源
更多详细信息,请参考GoBigger文档(中文版)。
加入和贡献
欢迎加入OpenDI Lab GoBigger社区!扫描二维码并在微信上添加我们:
或者你可以通过slack或电子邮件(opendilab@pjlab.org.cn)与我们联系。
许可证
GoBigger根据Apache 2.0许可证发布。