schola

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.

https://github.com/gpuopen-librariesandsdks/schola

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.0%) to scientific vocabulary
Last synced: 7 months ago · JSON representation ·

Repository

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.

Basic Info
  • Host: GitHub
  • Owner: GPUOpen-LibrariesAndSDKs
  • License: mit
  • Language: C++
  • Default Branch: main
  • Homepage: https://gpuopen.com/schola/
  • Size: 66.4 MB
Statistics
  • Stars: 46
  • Watchers: 5
  • Forks: 7
  • Open Issues: 0
  • Releases: 4
Created about 1 year ago · Last pushed 9 months ago
Metadata Files
Readme License Citation

README.md

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

Release 1.0 of this this project is designed for Unreal Engine 5.4 which is available for Download and is tested on 5.4.3 and 5.4.4. Release 1.1 supports Unreal Engine 5.5 (It is not compatible with Unreal Engine 5.4).

Important for Visual Studio Users Only MSVC v143 Build Tools should be selected during install including other build tools will cause linking errors. Sepcifically, use MSVC14.X where X>34 from Visual Studio 2022, and Windows 10.0.22621.0 SDK to avoid linking errors

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

Dependencies

Python

See setup.py for python dependencies. Installing schola via pip will automatically install all python dependencies.

C++

All C++ dependencies for using Schola are bundled with the plugin under /Source/ThirdParty.

Build and Test

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 /proto/compile.py. 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 sphinx, breathe, and the Read The Docs theme for sphinx using pip pip install sphinx breathe sphinx_rtd_theme sphinx-tabs sphinx-copybutton
  3. Generate xml to /Docs/Doxygen/xml using the Doxyfile in /Docs/Doxygen
  4. From the Docs/Sphinx folder run breathe-apidoc -o API/Unreal ../Doxygen/xml
  5. Run sphinx-build or make to generate the unified docs.

Contributing

Unreal Coding Style

All unreal code with be styled following the Unreal Style Guide in the Unreal Documentation.

One potential auto-formatter is the Clang Formatter which has visual studio support.

Comments

Comments are based on doxygen /** style to match closely with javadoc (which Unreal uses) but support handy visual studio features such as comment previews. To enable autogenerated doxygen stubs go to Tools -> Options -> Text Editor -> C/C++ -> Code Style -> General and change the option from XML to Doxygen (/**). This will enable autogeneration of stubs with ctrl + /, or whenever you type /** in visual studio.

Python Coding Style

All python code will be styled( and formatted) following the Black style guide. Code style: black as well as pep.

Black has an automatic formatter as well as Visual Studio support.

Comments

Docstrings in python are in numpydoc style and can use any rst directives supported by sphinx. Inherited functions and members can be left undocumented if the implementation doesn't require any additonal details to explain.

Testing

Testing is implemented through pytests in the ScholaExamples repository. These tests build a fresh copy of this project before running unit tests on Python + Unreal. This tests whether all examples run with each framework and are functional based on the API.

Owner

  • Name: GPUOpen Libraries & SDKs
  • Login: GPUOpen-LibrariesAndSDKs
  • Kind: organization

Libraries and SDKs from the GPUOpen initiative

Citation (CITATION.cff)

cff-version: 1.2.0
title: Schola
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Alexander
    family-names: Cann
    name-particle: Alexander
    email: alexcann@amd.com
    affiliation: AMD
  - given-names: Tian Yue
    family-names: Liu
    email: TianYue.Liu@amd.com
    affiliation: AMD
  - given-names: Nathan
    family-names: Hung
    email: Nathan.Hung@amd.com
    affiliation: AMD
  - given-names: Mehdi
    family-names: Saeedi
    email: Mehdi.Saeedi@amd.com
    affiliation: AMD
repository-code: 'https://github.com/GPUOpen-LibrariesAndSDKs/Schola'
url: 'https://gpuopen.com/amd-schola/'
abstract: >-
  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.
keywords:
  - Reinforcement Learning
  - Unreal  Engine 5
  - Python
license: MIT
version: '1.1'
date-released: '2025-04-01'

GitHub Events

Total
  • Release event: 3
  • Watch event: 41
  • Push event: 3
  • Public event: 1
  • Fork event: 5
  • Create event: 3
Last Year
  • Release event: 3
  • Watch event: 41
  • Push event: 3
  • Public event: 1
  • Fork event: 5
  • Create event: 3

Committers

Last synced: 10 months ago

All Time
  • Total Commits: 3
  • Total Committers: 1
  • Avg Commits per committer: 3.0
  • Development Distribution Score (DDS): 0.0
Past Year
  • Commits: 3
  • Committers: 1
  • Avg Commits per committer: 3.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Mark Simpson m****n@a****m 3
Committer Domains (Top 20 + Academic)
amd.com: 1

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 0
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels

Dependencies

Resources/python/setup.py pypi
  • grpcio >=1.51.1
  • gymnasium ==0.29.1
  • onnx >=1.11,
  • protobuf >=3.20