Gems in Open 3D Engine

Gems are packages that contain code and/or assets to augment your Open 3D Engine (O3DE) projects. With the Gem system, you can choose the features and assets that you need for your project without including unnecessary components. You can also create custom Gems to contain a collection of assets, extend the Editor, or develop features and gameplay logic for your project.

O3DE features two types of Gems:

  • Code Gem: Contains assets as well as code that performs certain functions upon the assets.

  • Assets Gem: Contains only assets and no code.

Gems come from three different sources:

  • Standard O3DE Gems: Gems that are considered as part of the core O3DE. All standard O3DE Gems are available in O3DE.

  • Third-party Gems: Gems that are provided by third-party developers. Third-party Gems are provided by external sources.

  • Custom Gems: Gems that your team creates. Custom Gems are provided by external sources.

O3DE comes bundled with standard O3DE Gems. Their source code is located in the <engine>/Gems directory. For a list of all Gems included in O3DE, refer to Gem Reference .

Section topics

Gem ReferenceThe complete reference to all Gems available in O3DE.
Core O3DE GemsLearn about the core Gems that are required for most projects in O3DE.
Extend the Editor TutorialsTutorials to extend the O3DE Editor by creating a custom tool Gem in C++ or Python.

Common workflows

Adding Gems to a project

Gems provide modular features and assets to your project. You can add standard O3DE Gems, third-party Gems, or custom Gems.

Depeneding on your project configuration, your project enables a set of Gems by default. The O3DE build system detects enabled Gems and sets them as dependencies for your project. You can find the list of Gems enabled in your project in the enabled_gems.cmake file in the <project>/Code/ directory.

The following is a high-level overview for adding a Gem to a project:

  1. Register the Gem, if it’s not already. Standard Gems that are bundled with O3DE are already registered. However, you must register Gems from an external source. Refer to Register Gems to a Project .

  2. Add and remove Gems. You can add and remove registered Gems in your project. Refer to Adding and Removing Gems in a Project .

Creating custom Gems

You can create an asset Gem or a code Gem. An asset Gem contains only a collection of assets. A code Gem contains code and assets to extend the Editor or develop features and gameplay logic for your project.

The following recommended topics help you create an asset Gem or a code Gem:

  1. Create an O3DE Gem : Both asset and code Gems have the same directory structure and you can create them in the same way. This topic demonstrates how to create a Gem and what contents are contained in a Gem’s directory structure.

  2. Programmer’s Guide to Gem Development : Code Gems contain code with entry point functions that connect the Gem to O3DE. In this section, learn about Gem modules and component classes where you can integrate your features.

Copyright © 2022 Open 3D Engine Contributors

Documentation Distributed under CC BY 4.0.
For our trademark, privacy and antitrust policies, code of conduct, and terms of use, please click the applicable link below or see

The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Policy page.