Skip to content

GPUOpen-LibrariesAndSDKs/Schola

Repository files navigation

Schola

The Schola project is an effort to build a toolkit/plugin for controlling Objects in Unreal with Reinforcement Learning. It provides tools to help the user create Environments, define Agents, connect to python based RL Frameworks (e.g. Gym, RLlib or Stable Baselines 3), and power NPCs with RL during games.

Getting Started

Install Unreal Engine

As Schola is an Unreal Engine Project, you will need to first install Unreal Engine. Refer to the below table to identify the correct version of Unreal Engine for each version of Schola.

Note

Each Schola release may be compatible with other versions of Unreal Engine beyond the ones listed here, however these are the version(s) tested for each release.

Schola version Unreal Version
2.1 5.5-5.7
2.0 5.5-5.6
1.3 5.5-5.6
1.2 5.5
1.1 5.5
1.0 5.4

Installing Schola Into Your Project

To use schola in an existing Unreal Engine Project copy this repository to the /Plugins folder of your project, and pip install the schola python package in /Resources/python using pip install -e <path-to-plugin>/Resources/python[all] (the folder that contains pyproject.toml).

Important

Since Schola is provided as C++ source you must recompile your project after adding it. Otherwise, you will receive a warning about Schola being built for another version of Unreal Engine regardless of what version you are using.

Dependencies

Python

See Resources/python/pyproject.toml for a comprehensive list of dependencies. The following optional dependency extras are available when installing with pip (for example pip install -e ./Resources/python[sb3]):

Extra Description
sb3 Dependencies for running training with Stable Baselines 3
rllib Dependencies for running training with RLlib
minari Dependencies for collecting Minari datasets with Schola
all Equivalent to installing sb3, rllib, and minari together
docs Dependencies for building documentation with Sphinx

Test dependencies are declared under [dependency-groups] in pyproject.toml, not as a pip extra. Install them with pip install --group test (for example pip install --group test -e ./Resources/python[all] from your project, or the same with cd into Resources/python first).

C++

All C++ dependencies for using Schola are bundled with the plugin under /Source/ThirdParty and do not need to be installed separately. These consist of gRPC, protobuf and absl(dependency of gRPC).

Build and Test

Important

Schola comes with all dependencies included. Only run these if you encounter issues during the setup.

Building Third Party Dependencies

Third party dependencies, specifically gRPC and Protobuf can be built using Schola\Plugins\Schola\Resources\Build\windows_dependencies.bat or Schola\Plugins\Schola\Resources\Build\linux_dependencies.sh depending on your OS. This will update the plugin ThirdParty folder to include copies of the dependencies including .lib/.a files, and copy protoc, and relevant plugins to the tools directory.

Generating gRPC/Protobuf Code

To generate code for gRPC and Protobuf run schola compile-proto. This will generate *.pb.cc, *.pb.h and *.pb.py files to the correct folders as well as fix several bugs in the default generator (e.g. ignore warnings in C++ code, and fix relative imports for python)

Generating Documentation

Documentation for Schola is build using a combination of Doxygen + Sphinx + Breathe.

  1. Install Doxygen from the website
  2. Install documentation requirements for Schola using pip, for example pip install -e "./Resources/python[docs]" from the plugin root (or pip install -e ".[docs]" after cd into Resources/python).
  3. Run the command schola build-docs --builder html from the root of this project (or supply the path to the plugin folder)

Contributing

See CONTRIBUTING.md for issue and pull request guidelines, coding standards, and testing expectations.

About

Schola is a plugin for enabling Reinforcement Learning (RL) in Unreal Engine. It provides tools to help developers create environments, define agents, and connect to python-based RL frameworks such as OpenAI Gym, RLlib or Stable Baselines 3 for training agents with RL.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors