IN THIS ARTICLE
Open 3D Engine (O3DE) Engine Developer Guide
Welcome to the Open 3D Engine (O3DE) Engine Developer Guide. This guide is for advanced users who are looking for information about the internal architecture of O3DE for the purposes of custom engine modifications or contributions back to the O3DE project. For users who are looking for information about how to extend the engine, see the Programming for O3DE documentation.
Architecture
O3DE is a complicated suite of tools and libraries. In this section of the Engine Developer Guide, you’ll discover information about O3DE’s overall architecture, design principles, and execution flow.
To do:This section is currently incomplete, with a stub example for application bootstrapping. As documentation is added for developers, this section will expand.
A GitHub issue has not been created for this task. Create an issue here.
Name | Description |
---|---|
Project bootstrapping | Learn about the execution flow of project launchers and how O3DE loads libraries at project runtime. |
Prefab System | Learn about the prefab system, which is the default scene authoring system in O3DE. |
O3DE Frameworks
The core of O3DE is distributed as a series of frameworks, required libraries that establish the necessary elements for bootstrapping and running an O3DE project. Frameworks range from core functionality (AzCore
) all the way to specialized subsystems, such as the networking stack (AzNetworking
). For developers who want to directly modify the internals of O3DE or connect custom Gems to these low-level frameworks, this information can help you.
To do:This section is currently incomplete, with a stub example for AzCore. As documentation is added for developers, this section will expand.
A GitHub issue has not been created for this task. Create an issue here.
Name | Description |
---|---|
AzCore | Learn about the core internals of O3DE such as memory management and the custom RTTI system. |
Included Gems
Functionality that’s common to many O3DE projects and are often needed at runtime (such as rendering and scripting) is loaded through Gems, external libraries that are linked and loaded as part of an O3DE project. Gems are often specific to a use case or technology, and this section can help you understand how to contribute directly back to included Gems in O3DE or create your own Gem as an extension that takes advantage of available functionality.
To do:This section is currently incomplete, with a stub example for the ScriptCanvas Gem. As documentation is added for developers, this section will expand.
A GitHub issue has not been created for this task. Create an issue here.
Name | Description |
---|---|
Script Canvas | Learn about the internals of the Script Canvas system, including how Script Canvas handles types and generates bindings from C++ source code. |
Assets
O3DE asset system is a key part of managing and loading assets in a project. This section of the Engine Developer Guide provides details on various asset related systems to help developers extend or modify the systems for their needs.
Name | Description |
---|---|
Metadata Relocation | Learn about how the Metadata Relocation system functions, where the code is, and which file types may or may not be supported. |
Scene Pipeline
Content in scene files, like fbx
format files, are core to most O3DE projects. This section of the Engine Developer Guide provides details on the scene pipeline to help developers extend or modify the system for their needs.
Name | Description |
---|---|
Open Asset Importer Library | Learn about the integration of the external library, Open Asset Importer. This library is used to load content from standard formats like fbx . |
Adding New Scene File Formats | Learn about extending the engine to support additional scene file formats. |
Included Tools
O3DE includes a handful of tools to support project development. Examples include Asset Processor (AssetProcessor.exe
) and Project Manager (o3de.exe
). This section of the Engine Developer Guide is for tools like these that are not part of any Gem. In these pages you will find detailed information and diagrams describing their architecture, for the benefit of developers who want to modify them.
To do:This section is currently incomplete, with a stub example for Project Manager. As documentation is added for developers, this section will expand.
A GitHub issue has not been created for this task. Create an issue here.
Name | Description |
---|---|
Project Manager | Learn about the internals of Project Manager, including an overview of the major classes and data structures that work together to create the UI and implement the project management and Gem library features of this tool. |
Test Impact Analysis Framework | Learn about the Test Impact Analysis Framework, including an overview of the architectural design and how to maintain and extend the framework for new use cases. |