Skip to content

goostengine/goost

Repository files navigation

Goost Logo

If it's not in Godot, let it be in Goost.

Goost: Godot Engine Extension

🐧 Linux 🍎 macOS 🎨 Windows 🤖 Android 🍏 iOS 🌐 JavaScript

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.

🔽 Binary downloads

Official binaries for the Godot + Goost editor and the export templates can be found on the Download page.


Goals 🎯

  • 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.

Non-goals 🌒

  • 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.

Community channels 🎭

Join #goost Discord channel at the GEL Discord server for discussion and development updates.


Building 🏗

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).

Compiling

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.

Development 🧱

See Contributing if you are interested in development and to find out what kind of features are accepted.

Writing and running tests

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

Writing and generating documentation

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

Versioning and compatibility

There are separate branches which are targeted for specific Godot Engine's major version.

Regarding latest extension development version, switch to

  • gd3 branch for Godot 3.x
  • gd4 branch for Godot 4.x (does not exist yet).

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).

License 📝

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.