# godotengine/godot-cpp

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/godotengine-godot-cpp).**

2,558 stars · 777 forks · C++ · MIT

## Links

- GitHub: https://github.com/godotengine/godot-cpp
- Homepage: https://docs.godotengine.org/en/latest/tutorials/scripting/cpp/
- awesome-repositories: https://awesome-repositories.com/repository/godotengine-godot-cpp.md

## Description

godot-cpp is a C++ binding library and development kit for creating high-performance extensions and custom nodes for the Godot engine. It provides the necessary headers and framework to implement complex game logic and low-level systems using native code.

The project enables the development of GDExtension plugins, allowing native libraries to be loaded into the engine without requiring a full recompilation of the core software. It facilitates the creation of custom engine extensions through a system of native bindings that map C++ classes and methods to the internal engine database.

The framework covers API integration via class registration and signal binding, as well as editor integration for exposing member variables. It includes a CMake-based build system for multi-platform targeting, supporting cross-compilation for desktop, Android, and WebAssembly via Emscripten.

The build process incorporates integration testing and the generation of compilation databases for IDE support.

## Tags

### Part of an Awesome List

- [Engine Modules and Extensions](https://awesome-repositories.com/f/awesome-lists/devtools/engine-modules-and-extensions.md) — Enables the addition of new node types and specialized functionality to the engine using native C++ code.
- [Media & Communication](https://awesome-repositories.com/f/awesome-lists/media/media-communication.md) — Bindings for Godot script API

### Programming Languages & Runtimes

- [C Function Bindings](https://awesome-repositories.com/f/programming-languages-runtimes/language-interoperability/native-c-interoperability/c-function-bindings.md) — Implements a native binding layer that maps C++ classes and methods to the engine's internal database.
- [C++ Container Exposures to Script](https://awesome-repositories.com/f/programming-languages-runtimes/c-based-scripting-engines/c-container-exposures-to-script.md) — Exposes C++ classes and methods to the engine's signal and property system for editor access.
- [Runtime Signal Binding](https://awesome-repositories.com/f/programming-languages-runtimes/class-creation-customization/connection-instantiation/runtime-signal-binding.md) — Allows native C++ methods to be bound to emitted signals to trigger reactions to external events. ([source](https://docs.godotengine.org/en/latest/tutorials/scripting/cpp/gdextension_cpp_example.html))
- [Engine Class Registrations](https://awesome-repositories.com/f/programming-languages-runtimes/class-creation-customization/engine-class-registrations.md) — Allows native C++ classes to be registered within the engine for use in scripts and editor dialogs. ([source](https://cdn.jsdelivr.net/gh/godotengine/godot-cpp@master/README.md))
- [Native Class Subclassing](https://awesome-repositories.com/f/programming-languages-runtimes/class-inheritance/native-class-subclassing.md) — Supports inheriting from native engine classes to implement custom node functionality in C++. ([source](https://docs.godotengine.org/en/latest/tutorials/scripting/cpp/gdextension_cpp_example.html))
- [Class Hierarchies](https://awesome-repositories.com/f/programming-languages-runtimes/class-method-definitions/class-hierarchies.md) — Organizes native types into a class hierarchy that inherits from base engine classes for scene integration.
- [Lifecycle Method Overrides](https://awesome-repositories.com/f/programming-languages-runtimes/class-method-overrides/lifecycle-method-overrides.md) — Enables overriding specific lifecycle methods to execute native C++ code during engine frames or events. ([source](https://docs.godotengine.org/en/latest/tutorials/scripting/cpp/gdextension_cpp_example.html))
- [Engine Binding Libraries](https://awesome-repositories.com/f/programming-languages-runtimes/engine-binding-libraries.md) — Provides a set of C++ headers and bindings for creating high-performance extensions and custom nodes for the Godot engine.
- [C++ Engine Extensions](https://awesome-repositories.com/f/programming-languages-runtimes/high-performance-c-libraries/c-engine-extensions.md) — Provides a framework for implementing performance-critical game logic in C++ and exposing it via a bridge API.
- [Emscripten Support](https://awesome-repositories.com/f/programming-languages-runtimes/source-code-compilers/multi-target-compilers/emscripten-support.md) — Provides integrated toolchain support for compiling C++ extensions to WebAssembly via Emscripten.

### Data & Databases

- [Variant Data Types](https://awesome-repositories.com/f/data-databases/data-processing-pipelines/data-transformation/variant-data-types.md) — Provides specialized array types and generic variant classes to maintain data compatibility between native code and the engine API. ([source](https://docs.godotengine.org/en/latest/tutorials/scripting/cpp/core_types.html))

### Development Tools & Productivity

- [Plugin Development Kits](https://awesome-repositories.com/f/development-tools-productivity/plugin-development-kits.md) — Offers a specialized toolset for developing native plugins that integrate with the engine without full recompilation.
- [Cross-Platform Build Systems](https://awesome-repositories.com/f/development-tools-productivity/build-automation-engines/cross-platform-build-systems.md) — Uses a CMake-based build configuration to manage cross-platform compilation for Android, Web, and desktop.
- [Multi-Target Build Orchestrators](https://awesome-repositories.com/f/development-tools-productivity/build-tooling/build-orchestration-logic/build-orchestration-configuration/build-automation-systems/build-systems/cross-platform-orchestrators/multi-target-build-orchestrators.md) — Utilizes a multi-target CMake orchestrator to manage toolchains across different operating systems and compilers.
- [Cross-Platform and Native Compilation](https://awesome-repositories.com/f/development-tools-productivity/build-tooling/cross-platform-native-compilation.md) — Builds native extensions for various operating systems including Windows, Android, and Web.
- [Android NDK Configurations](https://awesome-repositories.com/f/development-tools-productivity/compilers-toolchains/cross-compilation-tooling/android-ndk-configurations.md) — Includes Android NDK configurations to enable cross-compiling extensions for Android devices from Windows. ([source](https://docs.godotengine.org/en/latest/tutorials/scripting/cpp/build_system/cmake.html))
- [Cross-Platform Build Systems](https://awesome-repositories.com/f/development-tools-productivity/cross-platform-build-systems.md) — Automates the compilation and packaging of native extensions for multiple target operating systems. ([source](https://docs.godotengine.org/en/latest/tutorials/scripting/cpp/build_system/scons.html))

### Game Development

- [Native Performance Logic](https://awesome-repositories.com/f/game-development/game-logic-scripting/native-performance-logic.md) — Implements complex game systems in C++ to achieve better execution speed than standard scripting languages.
- [Native Engine Extensions](https://awesome-repositories.com/f/game-development/native-engine-extensions.md) — Allows compiling extensions into separate libraries that load into the editor or projects without full software recompilation. ([source](https://docs.godotengine.org/en/latest/tutorials/scripting/cpp/about_godot_cpp.html))

### Software Engineering & Architecture

- [Custom Signal Definitions](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/event-driven-signal-systems/custom-signal-definitions.md) — Enables the definition and emission of custom event signals to facilitate communication between objects and scripts. ([source](https://docs.godotengine.org/en/latest/tutorials/scripting/cpp/gdextension_cpp_example.html))
- [Native Plugin Development](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/ecosystem-tooling/native-plugin-development.md) — Provides a toolkit for building native libraries that interface directly with the host engine's core runtime.
- [Internal Object Extensions](https://awesome-repositories.com/f/software-engineering-architecture/modular-extension-systems/runtime-capability-extensions/internal-object-extensions.md) — Enables the creation of custom object instances that integrate directly into the engine's core object hierarchy. ([source](https://docs.godotengine.org/en/latest/tutorials/scripting/cpp/core_types.html))
- [Pluggable Module Loading](https://awesome-repositories.com/f/software-engineering-architecture/pluggable-module-loading.md) — Supports compiling logic into shared libraries that are dynamically loaded by the engine at runtime.
- [API Configuration Mappings](https://awesome-repositories.com/f/software-engineering-architecture/api-configuration-mappings.md) — Uses configuration mappings to synchronize C++ headers with specific internal engine API versions.
- [Cross-Version Compatibility Gating](https://awesome-repositories.com/f/software-engineering-architecture/cross-version-compatibility-gating.md) — Provides mechanisms to ensure compiled native extensions remain compatible across multiple minor versions of the engine. ([source](https://docs.godotengine.org/en/latest/tutorials/scripting/cpp/about_godot_cpp.html))

### Mobile Development

- [Internal API Access](https://awesome-repositories.com/f/mobile-development/android-system-api-wrappers/internal-api-access.md) — Provides access to internal engine APIs for implementing high-performance logic and low-level data operations. ([source](https://cdn.jsdelivr.net/gh/godotengine/godot-cpp@master/README.md))

### User Interface & Experience

- [Property Editor Registration APIs](https://awesome-repositories.com/f/user-interface-experience/custom-ui-components/custom-property-editors/property-editor-registration-apis.md) — Provides APIs to register native member variables as editable properties within the engine's user interface. ([source](https://docs.godotengine.org/en/latest/tutorials/scripting/cpp/gdextension_cpp_example.html))

### Web Development

- [WebAssembly Compilation](https://awesome-repositories.com/f/web-development/webassembly-compilation.md) — Integrates with the Emscripten toolchain to compile C++ code into WebAssembly binaries for browser execution. ([source](https://docs.godotengine.org/en/latest/tutorials/scripting/cpp/build_system/cmake.html))
