A heavily optimized and flexible grid-world game engine for Game AI research.
Some Environments
Check out the full list of pre-built environments here
Some features
-
Design and build game mechanics using a simple YAML-based language: GDY
-
Fast execution speed environments can run up to 70k FPS on a single thread.
-
Don't worry about complex efficient rendering code, just define the images for each game object and Griddly passes this to the GPU.
-
Supports Single Agent, Multi Agent and RTS environment interfaces.
-
Multiple observervation modes:
- Vectorized
- Configurable one-hot encodings for each x,y coordinate
- Rendered
- Isometric, sprites and simple shapes
- We also let you use custom shaders to render however you want!
- State Maps
- Description of the entire environment including objects, locations and variables.
- Event History
- Descriptions of actions that have happened in each step.
- Configurable partial observability
- Vectorized
-
Copyable Forward Models
- Game state can be cloned at any point in time. This is super useful for many Algorithms. For example Mont-Carlo Tree Search.
-
Reinforcement Learning with RLLib
- Integration with Wandb
Community
Join the Discord community for help and to talk about what you are doing with Griddly!
Documentation
Full documentation can be found here: griddly.readthedocs.org
Tutorials
The most awesome part of Griddly is the ability to easily customize and build your own research environments. To make this extra easy we've written lots of tutorials:
Making A Simple Game (Sokoban)
- This tutorial takes you through how to create a simple game environment using GDY.
Game Mechanics
-
Proximity Triggers
- Configure interactions between objects based on their distance.
-
Projectiles
- Objects that move under their own power.
-
Level Design
- How to design levels for single and multi-agent environments.
-
Stochasticity
- How to make environments with stochastic mechanics.
-
A* Search
- Use A* pathfinding for mobs in Griddly
Custom Shaders
- Customize rendering for environments using SPIR-V shaders.
Installing
Building locally
Firstly sync up the git submodules:
git submodule init
git submodule update
cmake . -DCMAKE_BUILD_TYPE={Debug|Release}
cmake --build .
Artifacts can then be found in {Debug|Release}/bin
Tests
Test can be run with:
ctest .
Python Installer
To install the built libraries with python you need to do one of the following (depending if your built the binaries with Debug
or Release
)
The installer should copy the following files into the python/griddly
directory:
-
resources/*
->python/griddly/resources
-
{Release|Debug}/python_griddly.cpython*
->python/griddly/libs
Debug
cd python
python setup.py develop
OR
cd python
pip install -e .
Release
cd python
python setup.py install
Prerequisites
Ubuntu
wget -qO - http://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add -
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-bionic.list http://packages.lunarg.com/vulkan/lunarg-vulkan-bionic.list
sudo apt update
sudo apt install vulkan-sdk
Windows
MacOS
- Install xcode CLI tools
xcode-select --install
- Install Brew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
- Install cmake
brew install cmake
- Install Vulkan