GoBigger 环境
总览
本节主要说明了 GoBigger 的环境设计,其中包括给定好的环境的定义,以及如何自定义生成对应的环境。
已经定义好的环境
GoBigger 定义了一些基础环境,可以通过下面的代码生成这些基础环境
from gobigger.envs import create_env
env = create_env('st_t4p3')
其中,create_env()
接收的第一个参数是一个字符串,是我们已经定义好的环境的名称。类似的,除了 st_t4p3
以外,我们还有 st_t2p2
,st_t3p2
可供选择。下面详细介绍一下各个环境的区别。
st_t4p3
: 创建了一个有四支队伍,每支队伍三个玩家的游戏场景。这是我们定义的标准游戏场景,包括其中的各种球的刷新速度等参数都已经调节至一个比较健壮的水平。用户可以使用这个环境来解决一些复杂空间场景下的合作和对抗问题。st_t2p2
: 考虑到st_t4p3
可能过于庞大,因此我们提供了一个更小的游戏场景。在这个场景内,只有两支队伍,每支队伍两个玩家。同样,地图尺寸,食物球和荆棘球的数量也受到了相应的削减。此外,为了缩减玩家前期发育的时间,我们在st_t2p2
将玩家第一次出生时的分数设置成了 13000 来使得玩家可以快速进行对抗,而这个值在st_t4p3
中是 1000。st_t3p2
: 这是一个间于st_t2p2
和st_t4p3
的中等环境,有三支队伍,每支队伍两个玩家。和st_t2p2
一样,也设置了较高的出生分数来减少发育时间。
此外,上述环境默认都是每两帧做一个动作(一秒20帧)。如果想要更长的动作间隔,可以通过下面代码设置:
from gobigger.envs import create_env
env = create_env('st_t4p3', step_mul=10)
此外,我们还有更多已经定义好的环境,如下:
Name |
Agents Size |
Map Size |
Food |
Thorn |
Init Size |
Limited Frame |
---|---|---|---|---|---|---|
Small Maps |
||||||
st_t1p1 |
1x1 |
32x32 |
[65,75] |
[1,2] |
1000 |
3600(3min) |
st_t1p2 |
1x2 |
48x48 |
[130,150] |
[2,3] |
1000 |
3600(3min) |
st_t2p1 |
2x1 |
48x48 |
[130,150] |
[2,3] |
1000 |
3600(3min) |
st_t2p2 |
2x2 |
64x64 |
[260,300] |
[3,4] |
13000 |
3600(3min) |
st_t3p2 |
3x2 |
88x88 |
[500,560] |
[5,6] |
13000 |
3600(3min) |
Large Maps |
||||||
st_t4p3 |
4x3 |
128x128 |
[800,900] |
[9,12] |
1000 |
14400(12min) |
st_t5p3 |
5x3 |
128x128 |
[900,1000] |
[10,12] |
1000 |
14400(12min) |
st_t5p4 |
5x4 |
144x144 |
[900,1000] |
[10,12] |
1000 |
14400(12min) |
st_t6p4 |
6x4 |
144x144 |
[1000,1100] |
[11,13] |
1000 |
14400(12min) |
自定义生成对应的环境
GoBigger 丰富的配置文件设计使得用户可以很方便地设置游戏内的每一个细节。
如果想要在某个我们已经定义好的环境的基础上进行简单修改,例如在 st_t2p2
修改一局时长,可以如下:
from gobigger.envs import create_env
env = create_env('st_t2p2', dict(
frame_limit=10*60*20,
))
这样,开启的新环境就会在 st_t2p2
的基础上变成了 10 分钟一局。