If something should be in Godot, let it be in Godot.
This is a Godot Engine 3.2+ extension implemented as a C++ module.
The extension consists of functional components and other modules, most of which should be optional to build.
See Goost official documentation for detailed instructions on how to use the module, and the list of currently implemented components.
For a complete list of currently implemented classes, refer to Goost API.
- Complement the engine by implementing missing or not-yet-implemented functionality as seen useful by the Godot community, helping to prevent further engine bloat to a reasonable extent;
- Provide additional core data structures, classes and methods to optimize performance-critical tasks in a general-purpose way for when GDScript or other languages are too slow, or when better integration is desired with existing libraries;
- Expose, reuse, and build upon the engine's hidden built-in functionality typically unavailable to scripting;
- Overcome engine limitations which may be difficult to do via script, especially when those limitations can be mitigated on the module level without having to maintain a custom version of the engine.
- Solving project-specific problems. Consider alternative projects such as Godot Node Extensions instead.
- Collecting arbitrary community C++ modules for the sake of it. Goost provides
a separate project for this purpose in the
goostengine/godot-modules
repository, which also includes this extension as a
git
submodule.
Join #goost Discord channel at the GEL Discord server for discussion and development updates.
For testing purposes, build artifacts are uploaded for Linux, macOS, and Windows editor builds and can be downloaded manually for each recently built commit:
git clone https://github.com/goostengine/goost
cd goost
scons
This will clone the Godot Engine repository and compile the engine with Goost.
You'll find the resulting binaries at godot/bin
directory relative to the
Goost repository.
For more advanced compilation options, refer to Goost Installation documentation pages.
See Contributing if you are interested in development and to find out what kind of features are accepted.
While not mandatory, developers are encouraged to write unit tests (or any tests for that matter) for any existing or new features.
See Tests for details.
The documentation can be generated for new classes, and updated for existing ones. See the following official documentation pages for further instructions:
There are separate branches which are targeted for specific Godot Engine's major version.
Regarding latest extension development version, switch to
Similarly, you may use any of the stable branches with a similar branch
encoding, such as 1.0-gd3
or 1.0-gd4
, if available.
Any new features are encouraged to be developed against the latest Godot Engine's stable version, which may be optionally ported to the latest engine's development version (independently or in sync, depending on priorities).
Unless otherwise specified, the extension is released under the MIT license.
See the full list of third-party libraries with their licenses used by this extension at thirdparty/README.md (MIT compatible).