Introduces a new way to define levels. See e.g. cooking_zoo/utils/level/coexistence_test.yaml for an example. Also removes meta files, instead merging them into the yaml file definitions. Some features:
Intuitive & easy to edit visual representation
Items can spawn in any square labelled *.
You can also define 'exclusive spawn groups' by labelling squares with integers to e.g. guarantee that only one agent spawns in each side of the room (see cooking_zoo/utils/level/partially_prepared.yaml).
Items can be spawned in a partially prepared state by setting an appropriate attribute (see cooking_zoo/utils/level/partially_prepared.yaml)
Counters can also be spawned at random (see cooking_zoo/utils/level/partially_prepared.yaml)
Adds explicit RNG handling for reproducible pseudorandom level generation
Makes rendering consistent with PettingZoo API and distinguishes between a "human" render mode (which opens a PyGame window) and "rgb_array" render mode which does not (to allow for rendering on headless servers).
It's a big PR so happy to answer any questions or work through any changes.
This PR introduces a few features:
cooking_zoo/utils/level/coexistence_test.yaml
for an example. Also removes meta files, instead merging them into the yaml file definitions. Some features:*
.cooking_zoo/utils/level/partially_prepared.yaml
).cooking_zoo/utils/level/partially_prepared.yaml
)cooking_zoo/utils/level/partially_prepared.yaml
)"human"
render mode (which opens a PyGame window) and"rgb_array"
render mode which does not (to allow for rendering on headless servers).It's a big PR so happy to answer any questions or work through any changes.