If it's not in Godot, let it be in Goost.
Goost is a Godot Engine 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 extension and the list of currently implemented components. For a complete list of currently implemented classes, refer to Goost API.
We strongly recommend to familiarize yourself with our development philosophy.
Official binaries for the Godot + Goost editor and the export templates can be found on the Download page.
- 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 and debugging purposes, build artifacts are uploaded for Linux, macOS, and Windows builds which can be downloaded manually for each recently built commit:
If the links provided by nightly.link above don't work, proceed to GitHub Actions tab (have to be logged in).
git clone https://github.com/goostengine/goost --recurse-submodules
cd goost
python goost.py config # Optional, pick components to build.
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.
After build, run tests with the following command:
python run.py tests
The documentation can be generated for new classes, and updated for existing ones. See the following official documentation pages for further instructions:
To easily generate new or update existing documentation, run:
python run.py doc
The editor
command is also useful for manually checking and proof-reading the
built-in documentation from within the editor, especially when you want to make
sure that all references work as expected:
python run.py editor
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.