Announcing AMD Schola v2.1: state trees, scale, and a richer training stack

Originally posted:
Alex Cann's avatar
Alex Cann

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 schola entry 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.toml instead of legacy setup.py-only flows.
  • Bumped gRPC and Protobuf toolchain versions (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.

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 schola package 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

  1. Clone or download AMD Schola from the repository.
  2. Copy to your project’s /Plugins folder.
  3. Install the Python package:
Terminal window
pip install -e <path to Schola>/Resources/python[all]
  1. Enable the plugin in your Unreal Engine project.

Compatibility

Schola versionUnreal EnginePythonStatus
2.1.x5.5–5.73.10–3.12Current
2.0.x5.5–5.63.10–3.12Legacy
1.35.5–5.63.9–3.11Legacy
1.25.53.9–3.11Legacy

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.

Footnotes

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.

Alex Cann's avatar

Alex Cann

Alex Cann, MSc, is the lead developer of Schola. His research interests cover deep neural networks, reinforcement learning, and the intersection of AI and games.

Related news and technical articles

Related videos

Introducing AMD Render Pipeline Shaders SDK
Introducing AMD Render Pipeline Shaders SDK
The brand-new AMD Render Pipeline Shaders (RPS) SDK is a comprehensive and extensible Render Graph framework for graphics applications and engines using explicit APIs (such as DirectX® 12 and Vulkan®). In this video we will take a look at the overview of the design and implementation of the SDK. We will demonstrate how the RPS SDK can help game engines building render graphs easily, managing resource barriers and transient memory efficiently, and more!