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.
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 |
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.
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).
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).
Important
Schola comes with all dependencies included. Only run these if you encounter issues during the setup.
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.
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)
Documentation for Schola is build using a combination of Doxygen + Sphinx + Breathe.
- Install Doxygen from the website
- Install documentation requirements for Schola using pip, for example
pip install -e "./Resources/python[docs]"from the plugin root (orpip install -e ".[docs]"aftercdintoResources/python). - Run the command
schola build-docs --builder htmlfrom the root of this project (or supply the path to the plugin folder)
See CONTRIBUTING.md for issue and pull request guidelines, coding standards, and testing expectations.