AMD Schola
AMD Schola is a library for developing reinforcement learning (RL) agents in Unreal Engine and training with your favorite python-based RL Frameworks.
We’re excited to announce AMD Schola v2.1, a major follow-up to Schola v2. This release deepens integration with Unreal® Engine workflows, adds new ways to train and evaluate at scale, and expands imitation learning data paths—while keeping the same core idea: bridge Unreal Engine to Python RL frameworks with a clear, customizable API.
If you are new to Schola, see our v2 announcement for an overview of the new architecture introduced in Schola v2.0.
Schola v2.1 adds integration with the Unreal Engine StateTree framework so you can tie RL decisions into existing NPC logic during both training and inference. That makes it easier to blend learned policies with designer-authored logic, reuse familiar StateTree tooling, and keep high-level behavior structure visible in the editor.
Training no longer has to assume a single local Unreal process for every workflow. Schola v2.1 introduces an Kubernetes support for distributed training setups, so you can scale out learners and workers in cluster environments where that fits your pipeline. Pair this with the distributed training section in the Schola documentation for architecture and setup notes.
Imitation and offline RL get more first-class support: Minari-related workflows and collection tooling are expanded, with new tools for collecting demonstration data. Whether you are recording human or scripted play or curating datasets for behavior cloning, Schola v2.1 tightens the loop between Unreal, the Python® SDK, and Minari.
The command-line experience from Schola v2 is enhanced in v2.1:
schola entry points you use for training.Together, these changes make day-to-day iteration and hand-off to teammates or automation simpler.
Multi-agent training with RLlib is more explicit and flexible: Schola v2.1 adds additional metadata so you can explicitly control how agents map to policies.
For temporal observations, Schola v2.1 adds frame stacking utilities—including Box and Dict stackers so you can stack frames consistently whether your observation is a single array or a collection of different observation types.
ONNX export has been updated and hardened, with fixes for issues users hit when moving models from training into Unreal’s inference path. If you rely on UNNEPolicy and exported models, upgrading should smooth that handoff.
Under the hood, the Python side sees meaningful improvements:
pyproject.toml instead of legacy setup.py-only flows.grpc 1.80.0, protoc 31.1) and an updated Ray RLlib constraint band so you stay on supported combinations with the rest of the ecosystem.If you already use Schola v2:
schola package layout.See the v2.1.0 release notes on the main AMD Schola page for a concise checklist-style summary.
/Plugins folder.pip install -e <path to Schola>/Resources/python[all]| Schola version | Unreal Engine | Python | Status |
|---|---|---|---|
| 2.1.x | 5.5–5.7 | 3.10–3.12 | Current |
| 2.0.x | 5.5–5.6 | 3.10–3.12 | Legacy |
| 1.3 | 5.5–5.6 | 3.9–3.11 | Legacy |
| 1.2 | 5.5 | 3.9–3.11 | Legacy |
Schola is open source and we welcome contributions.
AMD Schola v2.1 is the result of contributions from the AMD Software Technologies team, especially Tian Yue Liu, Mehdi Saeedi, and Noah Monti. Special thanks to all contributors who have helped make this release possible.
AMD Schola v2.1 is available under the MIT license. Whether you are shipping game AI, running large-scale training, or combining learned policies with State Trees and handcrafted logic, this release is meant to meet you where you work—in the editor, in Python, and in the cluster.
Unreal® is a trademark or registered trademark of Epic Games, Inc. in the United States of America and elsewhere.
Microsoft, Visual Studio, and Windows are trademarks of the Microsoft group of companies.
Python is a registered trademark of the PSF.