O3DE (Open 3D Engine)

repository·development·Indexed 27 days ago

https://github.com/o3de/o3de

An open-source, real-time, multi-platform 3D engine for AAA games, cinema-quality 3D worlds, and high-fidelity simulations. Documentation covers the Forward+ lighting pipeline, shader configuration and resource groups (SRG), Docker deployment for Linux and ROS2, the Android Project Generator, and the experimental DccScriptingInterface (DCCsi) for DCC tool interoperability.

Tokens
56.2K
Snippets
82
Records
332
Agent score
93%

What's inside O3DE

  1. Overview of LyTestTools packages

    development

    LyTestTools is a Python project containing testing tools for Lumberyard and O3DE. The package structure is as follows:

    • LyTestTools.ly_test_tools._internal: Logging setup, pytest fixtures, and o3de workspace manager modules.
    • LyTestTools.ly_test_tools.builtin: Builtin helpers and fixtures for writing tests.
    • LyTestTools.ly_test_tools.console: Console-specific modules.
    • LyTestTools.ly_test_tools.environment: File/process management and cleanup.
    • LyTestTools.ly_test_tools.image: Image capturing and processing.
    • LyTestTools.ly_test_tools.launchers: Game launchers library.
    • LyTestTools.ly_test_tools.log: Interaction with log files.
    • LyTestTools.ly_test_tools.o3de: O3DE interaction modules.
    • LyTestTools.ly_test_tools.mobile: Android/iOS modules.
    • LyTestTools.ly_test_tools.report: Reporting modules.
    • LyTestTools.tests: Integration, unit, and example usage tests.
  2. Overview of MiniAudioO3DE Gem

    development

    MiniAudioO3DE is an integration of the miniaudio library into Open 3D Engine as a Gem. It provides fundamental audio features including sound playback, sound positioning, and listener positioning. Audio can be tested directly within the Editor viewport without needing to enter game mode.

    Supported Sound Formats:

    • .wav
    • .ogg
    • .mp3
    • .flac
  3. Overview of the DCC Scripting Interface (DCCsi)

    development

    The DCC Scripting Interface (DCCsi) is a shared development environment designed for technical artists to work with Python across multiple Digital Content Creation (DCC) tools. It provides a modular framework to integrate O3DE with DCC applications (like Substance or Maya) and custom standalone tools.

    Key capabilities include:

    • DCC-Agnostic Python Framework: A modular Gem for O3DE Editor scripting, PySide tools, and DCC API integrations.
    • Interoperability: Designed to work with both DCC-agnostic and DCC-bespoke modules.
    • Extensibility: Features a generic communication mechanism to allow new tools to slot into the existing toolchain.
    • Standalone & Integrated Execution: Tools can be run via command line, as standalone applications, or integrated directly within the O3DE Editor.
  4. Overview of the O3DE Scene Exporter Tool

    development

    The O3DE Scene Exporter Tool is a Maya-based utility designed to export Autodesk Maya scene content into assets compatible with the O3DE Editor.

    Key capabilities include:

    • Distributing all files associated with a Maya scene into a properly formatted destination directory within an O3DE project.
    • Generating FBX files containing user-specified scene elements.
    • Generating O3DE-specific .material files that correspond to assigned real-time shaders (StingrayPBS or Arnold AIStandardSurface) with relative paths set for O3DE consumption.
    • Performing audits of materials and connected texture files via the 'Query Material Attributes' task.
  5. Overview of FastNoise library

    development

    FastNoise is an open source noise generation library designed for real-time usage. It provides a large collection of different noise algorithms optimized for speed without sacrificing quality, making it suitable for procedural generation tasks like terrain generation.

    Supported noise types include:

    • Value Noise: 2D, 3D
    • Perlin Noise: 2D, 3D
    • Simplex Noise: 2D, 3D, 4D
    • Cubic Noise: 2D, 3D
    • Gradient Perturb: 2D, 3D
    • Cellular (Voronoi) Noise: 2D, 3D
    • White Noise: 2D, 3D, 4D
    • Fractal options: Available for all the above noise types

    The library supports both float and double precision.

  6. Overview of DccScriptingInterface (DCCsi)

    development

    The DccScriptingInterface (DCCsi) is an experimental O3DE Gem (version 0.0.2) designed to provide a shared development environment for technical artists. It enables interoperability between O3DE and various Digital Content Creation (DCC) tools within the Python ecosystem (e.g., Blender, Maya, Substance).

    Key Features:

    • O3DE Editor Extensibility: Python scripting, utilities, and PySide tools.
    • DCC Application Integration: Extends DCC tools using their specific Python APIs/SDKs.
    • Standalone Tools: Custom Python-based utilities to improve O3DE workflows.

    Note: Currently a prototype, Windows-only, and requires Python 3+ (e.g., Maya 2022 or later).

  7. Understand Atom shader resource binding styles

    development

    Atom (the O3DE renderer) supports two distinct methods for accessing shader resources:

    1. Direct Binding (Traditional): Uses the ShaderResourceGroup (SRG) abstraction. Resources are explicitly declared in azsl files or azsli headers. The compiler reflects these declarations, assigning specific binding slots and spaces. In C++, users associate an ImageView with a specific input slot, which can be queried by name.

    2. Bindless: A more flexible approach where resources are accessed via an index into a shared descriptor array. This avoids the overhead of frequent root signature swaps and descriptor fragmentation, enabling GPU-driven rendering pipelines (e.g., meshlet rendering, raytracing, or complex terrain material blending) where the exact resources needed are not known until runtime.

  8. Understand the Motion Matching Algorithm

    development

    Motion matching synthesizes new animations by playing small clips from a motion database and smoothly transitioning between them.

    Update Loop

    In most game ticks, the current motion is simply advanced. Periodically (e.g., 5 times per second), a search is triggered to prevent the animation from drifting too far from user input. The process follows these steps:

    1. Sample Pose: Evaluate the current pose and joint velocities (the queryPose).
    2. Calculate Features: Convert the pose into a queryValues vector based on the feature schema.
    3. Find Best Match: Search the motion database for the frame with the lowest cost relative to the query vector.
    4. Transition: If the best matching frame is not already close to the current playback time, start a transition toward it.

    Search Phases

    The search is optimized using two phases:

    1. Broad-phase (KD-tree): Uses a KD-tree to find nearest neighbors to the query vector. You can adjust the visual quality vs. performance by tuning the maximum tree depth or the minimum number of frames for leaf nodes.
    2. Narrow-phase: Iterates through the candidates returned by the KD-tree and evaluates the exact cost for each feature to find the absolute minimum cost frame.