Bam4d / Griddly

A grid-world game engine for game AI research
https://griddly.readthedocs.io
MIT License
235 stars 24 forks source link

Griddly

[![Discord Chat](https://img.shields.io/discord/728222413397164142.svg)](https://discord.gg/xuR8Dsv) [![PyPI version](https://badge.fury.io/py/griddly.svg)](https://badge.fury.io/py/griddly)

A heavily optimized and flexible grid-world game engine for Game AI research.

WHOOSH!! Some Environments

Check out the full list of pre-built environments here

BOOM Some features

Community Community

Join the Discord community for help and to talk about what you are doing with Griddly!

Documentation Documentation

Full documentation can be found here: griddly.readthedocs.org

Tutorials Tutorials Tutorials 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)

Game Mechanics

Custom Shaders

Installing Installing

``` pip install griddly ``` Build Status | OS | Status | | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Linux | [![Build Status](https://dev.azure.com/chrisbam4d/Griddly/_apis/build/status/Bam4d.Griddly?branchName=develop&jobName=Linux)](https://dev.azure.com/chrisbam4d/Griddly/_build/latest?definitionId=1&branchName=develop) | | Windows | [![Build Status](https://dev.azure.com/chrisbam4d/Griddly/_apis/build/status/Bam4d.Griddly?branchName=develop&jobName=Windows)](https://dev.azure.com/chrisbam4d/Griddly/_build/latest?definitionId=1&branchName=develop) | | MacOS | [![Build Status](https://dev.azure.com/chrisbam4d/Griddly/_apis/build/status/Bam4d.Griddly?branchName=develop&jobName=MacOS)](https://dev.azure.com/chrisbam4d/Griddly/_build/latest?definitionId=1&branchName=develop) |

Building Locally Building locally

Firstly you will need to configure the repo for the build.

You can do this using the configure.sh script in the root directory.

Web Assembly Binaries

Build a debug version of the web-assembly binaries.

Manually

You can run all the build commands manually


# Download the build requirements
conan install deps/wasm/conanfile_wasm.txt --profile:host deps/wasm/emscripten.profile --profile:build default -s build_type=Debug --build missing -if build_wasm

# Configure the cmake build
cmake . -B build_wasm -GNinja -DWASM=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake

# Run the build
cmake --build build_wasm --config Debug

Using [Cmake Presets]()

We provide two presets for CMake to use to develop locally using your IDE (provided it supports CMakePresets)


# Download the build requirements
./configure.sh -p=WASM -b=Debug

# Configure build with preset
cmake --preset="Debug WASM"

# Build with preset
cmake --build build_wasm --config Debug

Native Binaries

Manually

Build native griddly binaries:


# Download the build requirements
conan install deps/conanfile.txt --profile default --profile deps/build.profile -s build_type=Debug --build missing -if build

# Configure the cmake build
cmake . -B build -GNinja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake

# Run the build
cmake --build build --config Debug

Using [Cmake Presets]()

We provide two presets for CMake to use to develop locally using your IDE (provided it supports CMakePresets)


# Download the build requirements
./configure.sh -b=Debug

# Configure build with preset
cmake --preset="Debug Native"

# Build with preset
cmake --build build --config Debug

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:

Debug

cd python
python setup.py develop

OR

cd python
pip install -e .

Release

cd python
python setup.py install

Prerequisites

We use Conan to install all build dependencies and libraries used to compile Griddly.

You will need to set up a python environment of your choice and then install conan using:

pip install conan

Debug Layers for Vulkan

When compiling using Debug, you will need the install vulkan validation layers which are part of the vulkan sdk. Otherwise you will run into errors like:

[2023-01-04 15:21:54.412] [warning] Required vulkan layer unavailable: VK_LAYER_KHRONOS_validation
[2023-01-04 15:21:54.412] [error] Missing vulkan extensions in driver. Please upgrade your vulkan drivers.

Ubuntu

1. Install [cmake](https://cmake.org/download/)

Windows

  1. Install cmake
  2. Install Visual Studio Build Tools

MacOS

  1. Install xcode CLI tools
    xcode-select --install
  2. Install Brew
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
  3. Install cmake
    brew install cmake