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.
What’s new in AMD Schola v2.1?
StateTree integration for training and inference
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.
External simulation and Kubernetes-oriented distributed training
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.
Stronger imitation learning and Minari workflows
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.
Eval commands, YAML configs, and a more capable CLI
The command-line experience from Schola v2 is enhanced in v2.1:
- Eval commands for both Stable Baselines 3 and Ray RLlib, so you can evaluate checkpoints through the same
scholaentry points you use for training. - YAML configuration for training CLIs, making experiments easier to reproduce and share without long one-liners.
- A new project simulator option that lets you build and train from a single command.
- Support for spawning multiple processes when training from the CLI, for workloads that benefit from parallel rollouts.
Together, these changes make day-to-day iteration and hand-off to teammates or automation simpler.
Multi-agent RLlib: agent type mappings
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.
Frame stacking and observation shaping
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 and inference pipeline
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.
Python SDK: async, packaging, and dependencies
Under the hood, the Python side sees meaningful improvements:
- Async gRPC protocol support (for SB3 environments) for running multiple Unreal Engine processes efficiently using non-blocking communication.
- Clearer protocol and simulator module layout after refactoring.
- Modern packaging via
pyproject.tomlinstead of legacysetup.py-only flows. - Bumped gRPC and Protobuf toolchain versions (
grpc1.80.0,protoc31.1) and an updated Ray RLlib constraint band so you stay on supported combinations with the rest of the ecosystem.
Upgrading from Schola v2.0.x
If you already use Schola v2:
- Expect some Python import path changes if you depended on internal module names; align with the new
scholapackage layout. - CLI subcommands have been adjusted so that the simulator is now a subcommand of the train/eval command
- Re-pin Python dependencies after the gRPC, Protobuf, and RLlib updates.
See the v2.1.0 release notes on the main AMD Schola page for a concise checklist-style summary.
Getting started with v2.1
Prerequisites
- Unreal Engine 5.5+ (tested with 5.5–5.7).
- Python 3.10–3.12.
- Microsoft Visual Studio® 2022 with MSVC v143+ build tools (Windows®).
Installation
- Clone or download AMD Schola from the repository.
- Copy to your project’s
/Pluginsfolder. - Install the Python package:
pip install -e to Schola>/Resources/python[all]
- Enable the plugin in your Unreal Engine project.
Compatibility
Community and support
Schola is open source and we welcome contributions.
Acknowledgments
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.
Try it today
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.



