Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/goostengine/goost
A general-purpose, extensible and customizable C++ extension for Godot Engine.
https://github.com/goostengine/goost
godot-module godotengine
Last synced: 2 months ago
JSON representation
A general-purpose, extensible and customizable C++ extension for Godot Engine.
- Host: GitHub
- URL: https://github.com/goostengine/goost
- Owner: goostengine
- License: mit
- Created: 2020-06-04T12:14:49.000Z (over 4 years ago)
- Default Branch: gd3
- Last Pushed: 2022-09-30T11:41:22.000Z (about 2 years ago)
- Last Synced: 2024-09-30T18:23:13.793Z (2 months ago)
- Topics: godot-module, godotengine
- Language: C++
- Homepage: https://goostengine.github.io/
- Size: 5.88 MB
- Stars: 473
- Watchers: 12
- Forks: 16
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-godot - Goost - A general-purpose, extensible and customizable extension. (Modules / 3D)
- awesome-godot-3 - Goost - A general-purpose, extensible and customizable extension. (Modules / 3D)
- awesome-godot-3 - Goost - A general-purpose, extensible and customizable extension. (Modules / 3D)
README
If it's not in Godot, let it be in Goost.# **Goost**: Godot Engine Extension
![🐧 Linux](https://github.com/goostengine/goost/workflows/%F0%9F%90%A7%20Linux/badge.svg)
![🍎 macOS](https://github.com/goostengine/goost/workflows/%F0%9F%8D%8E%20macOS/badge.svg)
![🎨 Windows](https://github.com/goostengine/goost/workflows/%F0%9F%8E%A8%20Windows/badge.svg)
![🤖 Android](https://github.com/goostengine/goost/workflows/%F0%9F%A4%96%20Android/badge.svg)
![🍏 iOS](https://github.com/goostengine/goost/workflows/%F0%9F%8D%8F%20iOS/badge.svg)
![🌐 JavaScript](https://github.com/goostengine/goost/workflows/%F0%9F%8C%90%20JavaScript/badge.svg)Goost is a [Godot Engine](https://github.com/godotengine/godot) extension
implemented as a
[C++ module](https://docs.godotengine.org/en/latest/development/cpp/custom_modules_in_cpp.html).
The extension consists of functional components and other modules, most of which
should be optional to build.See [Goost official documentation](https://goost.readthedocs.io/en/gd3/) 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](https://goost.readthedocs.io/en/gd3/classes/index.html).We strongly recommend to familiarize yourself with our
[development philosophy](https://goost.readthedocs.io/en/latest/development/general_principles.html).## 🔽 Binary downloads
Official binaries for the Godot + Goost editor and the export templates can be
found on the [Download](https://goostengine.github.io/download.html) 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](https://github.com/godot-extended-libraries/godot-next)
instead.
- Collecting arbitrary community C++ modules for the sake of it. Goost provides
a separate project for this purpose in the
[goostengine/godot-modules](https://github.com/goostengine/godot-modules)
repository, which also includes this extension as a `git` submodule.-----
### Community channels 🎭
Join [#goost](https://discord.gg/w6jBZnG) Discord channel at the
[GEL](https://github.com/godot-extended-libraries) 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:- [🐧 `Linux`: Editor](https://nightly.link/goostengine/goost/workflows/linux_builds/gd3/godot.x11.opt.tools.64.goost.zip)
- [🐧 `Linux`: Server Headless + Sanitizers](https://nightly.link/goostengine/goost/workflows/linux_builds/gd3/godot_server.x11.tools.64.goosts.zip)
- [🍎 `macOS`: Editor](https://nightly.link/goostengine/goost/workflows/macos_builds/gd3/godot.osx.opt.tools.64.goost.zip)
- [🎨 `Windows`: Editor](https://nightly.link/goostengine/goost/workflows/windows_builds/gd3/godot.windows.opt.tools.64.goost.zip)If the links provided by [nightly.link](https://nightly.link/) above don't work,
proceed to [GitHub Actions tab](https://github.com/goostengine/goost/actions) (have to be logged in).### Compiling
```sh
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](https://goost.readthedocs.io/en/gd3/usage/installation.html)
documentation pages.## Development 🧱
See [Contributing](CONTRIBUTING.md) 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](tests/README.md)
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:- [Contribute to the Class Reference](https://docs.godotengine.org/en/latest/community/contributing/updating_the_class_reference.html)
- [Writing custom documentation](https://docs.godotengine.org/en/latest/development/cpp/custom_modules_in_cpp.html#writing-custom-documentation)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`](https://github.com/goostengine/goost/tree/gd3) branch for Godot 3.x
* [`gd4`](https://github.com/goostengine/goost/tree/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](LICENSE.txt).See the full list of third-party libraries with their licenses used by this
extension at [thirdparty/README.md](thirdparty/README.md).