OpenAI Gym Interface
Games defined with GDY files can easily be wrapped by OpenAI’s gym interface.
The simplest way to use a pre-made environment is to just use the following code:
import gym
import griddly
if __name__ == '__main__':
env = gym.make('GDY-Sokoban-v0')
env.reset()
The gym.make
command can also send several Griddly specific parameters to the environment:
env = gym.make(
'GDY-Sokoban-v0'
player_observer_type=gd.ObserverType.VECTOR,
global_observer_type=gd.ObserverType.VECTOR,
level=0,
max_steps=None,
)
See also
More examples and a full listing of all the games can be found on the page for each game in Games
Registering Your Own Environment
It’s easy to register your own GDY files and wrap them with OpenAI gym using the GymWrapperFactory
:
import gym
from griddly import GymWrapperFactory, gd
if __name__ == '__main__':
wrapper = GymWrapperFactory()
wrapper.build_gym_from_yaml('MyNewEnvironment', 'my_new_env_gdy.yaml')
env = gym.make('GDY-MyNewEnvironment-v0')
env.reset()
Observer Types
When generating an environment you can specify how you want the environment to be rendered. You can do this by setting the player_observer_type
and global_observer_type
parameters in the gym.make
function, or the build_gym_from_yaml
function.
See also
For more information about observation spaces, states and event history see Observation Spaces
The Global Observer
The global observer can be used alongside any of the other observers and will always render the entire environment regardless of how other observers are defined. This means that you can pass vector observations to your agents and then render with sprites or blocks to make awesome demos!
env = gym.make(f'GDY-Sokoban-Adv-v0', global_observer_type=gd.ObserverType.SPRITE_2D)
env.reset()
env.render(observer='global')