diff --git a/config/.markdownlint.jsonc b/config/.markdownlint.jsonc index e4ff8d9..acef14e 100644 --- a/config/.markdownlint.jsonc +++ b/config/.markdownlint.jsonc @@ -47,7 +47,11 @@ "list_items": false }, "proper-names": { - "names": ["Godot", "GDScript", "Rust", "GDExtension", "gdext", "godot-rust"], + "names": ["Godot", "GDScript", "Rust", "GDExtension", "gdext", "godot-rust", + // Exceptions because this tool can't recognize "godot-" isn't "godot" + "godot-sandbox", "godot-tokio" + ], + "code_blocks": false }, "no-inline-html": { diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 7da65f6..3513322 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -36,6 +36,7 @@ - [Inspector plugins](recipes/editor-plugin/inspector-plugins.md) - [Engine singletons](recipes/engine-singleton.md) - [Custom node icons](recipes/custom-icons.md) +- [Ecosystem](ecosystem/index.md) - [Contributing to gdext](contribute/index.md) - [Philosophy](contribute/philosophy.md) - [Dev tools and testing](contribute/dev-tools.md) diff --git a/src/ecosystem/index.md b/src/ecosystem/index.md new file mode 100644 index 0000000..4a49b1f --- /dev/null +++ b/src/ecosystem/index.md @@ -0,0 +1,177 @@ + + +# Ecosystem + +This chapter lists third-party projects that extend godot-rust with additional functionality: tools, libraries, integrations, apps, and more. +The projects are grouped by type of project and their respective domain (although such classification is not always clear-cut). + +If you'd like to add a project, please read [Contributing](#contributing)! + +A list for games is also planned, and will be showcased on a separate page. + + +## Table of contents + + + +## List of 3rd-party projects + + +### 🏛️ Rust libraries + +| Project | Further links | Activity | +|--------------------------------------------------------------------------------|--------------------------------------------------------------------------|-----------------------------------------------| +| 🌀 _**Async**_ | | | +| **[gdext-coroutines]**
Integrate Rust coroutines with Godot's async/await. | [crates.io][gdext-coroutines-crate], [Discord][gdext-coroutines-discord] | ![gdext-coroutines][gdext-coroutines-badge] | +| **[godot-tokio]**
Create Tokio runtime for use with godot-rust. | [crates.io][godot-tokio-crate], [Discord][godot-tokio-discord] | ![godot-tokio][godot-tokio-badge] | +| ___________________________________________________ | | | +| 🏗️ _**Project workflow**_ | | | +| **[gd-rehearse]**
Unit tests for godot-rust code. | [Discord][gd-rehearse-discord] | ![gd-rehearse][gd-rehearse-badge] | +| **[gd-props]**
Resource serialization using `serde`. | [Discord][gd-props-discord] | ![gd-props][gd-props-badge] | +| **[gdext-generation]**
Auto-generate the `.gdextension` file. | [Discord][gdext-generation-discord] | ![gdext-generation][gdext-generation-badge] | +| ___________________________________________________ | | | +| 📜 _**Scripting**_ | | | +| **[godot-rust-script]**
Allows Rust scripts to be added to nodes. | | ![godot-rust-script][godot-rust-script-badge] | +| ___________________________________________________ | | | +| 🎮 _**Game development**_ | | | +| **[SpireTween]**
Alternative tweening library for Godot 4.2+. | [Discord][spire-tween-discord] | ![SpireTween][spire-tween-badge] | +| **[GridForge]**
Generic abstraction for grid maps. | [Discord][gridforge-discord] | ![GridForge][gridforge-badge] | + +[gdext-coroutines]: https://github.com/Houtamelo/gdext_coroutines +[gdext-coroutines-crate]: https://crates.io/crates/gdext_coroutines +[gdext-coroutines-discord]: https://discord.com/channels/723850269347283004/1255555232390451293/1255555232390451293 +[gdext-coroutines-badge]: https://img.shields.io/github/last-commit/Houtamelo/gdext_coroutines + +[godot-tokio]: https://github.com/2-3-5-41/godot_tokio +[godot-tokio-discord]: https://discord.com/channels/723850269347283004/1312490414762364928/1312490414762364928 +[godot-tokio-crate]: https://crates.io/crates/godot_tokio +[godot-tokio-badge]: https://img.shields.io/github/last-commit/2-3-5-41/godot_tokio + +[gd-rehearse]: https://github.com/StatisMike/gd-rehearse +[gd-rehearse-discord]: https://discord.com/channels/723850269347283004/1179891414474178661/1179891414474178661 +[gd-rehearse-badge]: https://img.shields.io/github/last-commit/StatisMike/gd-rehearse + +[gd-props]: https://github.com/StatisMike/gd-props +[gd-props-discord]: https://discord.com/channels/723850269347283004/1166451642145701989/1166451642145701989 +[gd-props-badge]: https://img.shields.io/github/last-commit/StatisMike/gd-props + +[gdext-generation]: https://github.com/sylbeth/gdext-generation +[gdext-generation-discord]: https://discord.com/channels/723850269347283004/1316664276819247124 +[gdext-generation-badge]: https://img.shields.io/github/last-commit/sylbeth/gdext-generation + +[godot-rust-script]: https://github.com/titannano/godot-rust-script +[godot-rust-script-badge]: https://img.shields.io/github/last-commit/titannano/godot-rust-script + +[SpireTween]: https://github.com/Houtamelo/spire_tween +[spire-tween-discord]: https://discord.com/channels/723850269347283004/1257474308939452477/1257474308939452477 +[spire-tween-badge]: https://img.shields.io/github/last-commit/Houtamelo/spire_tween + +[GridForge]: https://github.com/StatisMike/grid-forge +[gridforge-discord]: https://discord.com/channels/723850269347283004/1238991002799444049/1238991002799444049 +[gridforge-badge]: https://img.shields.io/github/last-commit/StatisMike/grid-forge + + +### 🧩 Editor plugins + +| Project | Further links | Activity | +|-------------------------------------------------------------------------------|-----------------------------------------|-----------------------------------------------------| +| 📐 _**User interface**_ | | | +| **[Godot-Tour]**
UI tours/tutorials for editor and in-game. | [Discord][godot-tour-discord] | ![Godot-Tour][godot-tour-badge] | +| ___________________________________________________ | | | +| 🎨 _**Graphics**_ | | | +| **[Godot Trail 3D]**
Adds a `Trail3D` node to Godot. | [Discord][godot-trail-3d-discord] | ![Godot Trail 3D][godot-trail-3d-badge] | +| ___________________________________________________ | | | +| 🧲 _**Physics**_ | | | +| **[Godot Rapier Physics]**
Rapier 2D + 3D integration for Godot. | [Discord][godot-rapier-physics-discord] | ![Godot Rapier Physics][godot-rapier-physics-badge] | +| **[Godot Rapier 3D]**
GDExtension that enables Rapier physics with Godot. | [Discord][godot-rapier-3d-discord] | ![Godot Rapier 3D][godot-rapier-3d-badge] | +| ___________________________________________________ | | | +| 🧙‍♂️ _**Storytelling**_ | | | + | **[nobodywho]**
Interact with local LLMs for interactive storytelling. | [Discord][nobodywho-discord] | ![nobodywho][nobodywho-badge] | +| ___________________________________________________ | | | +| 🏗️ _**Project workflow**_ | | | +| **[godot-sandbox]**
Secure modding support for C++, Rust and others. | | ![godot-sandbox][godot-sandbox-badge] | + + +[Godot-Tour]: https://github.com/Decapitated/Godot-Tour +[godot-tour-discord]: https://discord.com/channels/723850269347283004/1272688558070698037/1272688558070698037 +[godot-tour-badge]: https://img.shields.io/github/last-commit/Decapitated/Godot-Tour + +[Godot Trail 3D]: https://github.com/SomeRanDev/Godot-Trail3D +[godot-trail-3d-discord]: https://discord.com/channels/723850269347283004/1246199893043974247/1246199893043974247 +[godot-trail-3d-badge]: https://img.shields.io/github/last-commit/SomeRanDev/Godot-Trail3D + +[Godot Rapier 3D]: https://github.com/deltasiege/godot-rapier-3d +[godot-rapier-3d-discord]: https://discord.com/channels/723850269347283004/1238758369767198741/1238758369767198741 +[godot-rapier-3d-badge]: https://img.shields.io/github/last-commit/deltasiege/godot-rapier-3d + +[Godot Rapier Physics]: https://github.com/appsinacup/godot-rapier-physics +[godot-rapier-physics-discord]: https://discord.com/channels/723850269347283004/1233345975255433266/1233345975255433266 +[godot-rapier-physics-badge]: https://img.shields.io/github/last-commit/appsinacup/godot-rapier-physics + +[nobodywho]: https://github.com/nobodywho-ooo/nobodywho +[nobodywho-discord]: https://discord.com/channels/723850269347283004/1309111775991693332/1309111775991693332 +[nobodywho-badge]: https://img.shields.io/github/last-commit/nobodywho-ooo/nobodywho + +[godot-sandbox]: https://github.com/libriscv/godot-sandbox +[godot-sandbox-badge]: https://img.shields.io/github/last-commit/libriscv/godot-sandbox + + +### 🖥️ Applications + +| Project | Further links | Activity | +|-------------------------------------------------------------------------|----------------------------------------|---------------------------------------------------| +| 🎛️ _**Software platforms**_ | | | +| **[Godot Boy]**
Game boy emulator in Godot, written in Rust. | [Discord][godot-boy-discord] | ![Godot Boy][godot-boy-badge] | +| **[GDScript Transpiler]**
Reimplements parts of GDScript in Rust. | [Discord][gdscript-transpiler-discord] | ![GDScript Transpiler][gdscript-transpiler-badge] | +| ___________________________________________________ | | | +| 🛸 _**Tech demos**_ | | | +| **[Godot boids]**
Addon for Godot that adds 2D/3D boids (flocking). | [Discord][godot-boids-discord] | ??? | + +[Godot Boy]: https://gitlab.com/greenfox/godot-boy +[godot-boy-discord]: https://discord.com/channels/723850269347283004/1230789480290586624/1230789480290586624 +[godot-boy-badge]: https://img.shields.io/gitlab/last-commit/greenfox/godot-boy + +[GDScript Transpiler]: https://gitlab.com/the-SSD/gdscript-transpiler +[gdscript-transpiler-badge]: https://img.shields.io/gitlab/last-commit/the-SSD/gdscript-transpiler +[gdscript-transpiler-discord]: https://discord.com/channels/723850269347283004/1237464552384499833/1237464552384499833 + +[Godot boids]: https://git.gaze.systems/dusk/godot_boids +[godot-boids-discord]: https://discord.com/channels/723850269347283004/1279645654439821393/1279645654439821393 + + +## Contributing + +If you have a project that might fit this list, great! You don't have to be the author -- if you've come across something that will make other +people's lives easier, please share it! + +To keep this list useful for visitors, there are a few acceptance criteria: + +- The project must be related to godot-rust (not only Rust or only Godot). It should use Godot 4. +- There's already something tangible with at least minimal docs/examples. + - This could be a usable library on GitHub, a working demo, etc. No need for a crate release or very polished presentation; the idea is + that the project is accessible for newcomers. + - To discuss ideas and WIP prototypes, feel free to start a discussion [in `#showcase` on Discord][discord-showcase]! +- The author should be willing to maintain the project for a while. + - GDExtension has a very good track record with binary compatibility, and [godot-rust supports extensions down to Godot 4.1][gdext-compat]. + So if you integrate via extensions (e.g. as an editor plugin), your project tends to be more future-proof than with source code. + - That said, we don't have major breaking changes very often. +- If the project is intended for distribution and usage, make sure it comes with a license (e.g. an open-source one for software, or + Creative Commons for artworks). + +Once that's sorted, please open a pull request directly to the [book repository][book-repo]. If you're not sure about +the criteria or have other questions, don't hesitate to ask on Discord or the [book issue tracker][book-issues]. + +```admonish tip title="A thriving ecosystem" +Every single project enriches the space around Godot and Rust, and lets more and more people enjoy game development. +Thanks a lot to every contributor! +``` + +[discord-showcase]: https://discord.com/channels/723850269347283004/1163944783484563537 +[gdext-compat]: ../toolchain/compatibility.md +[book-repo]: https://github.com/godot-rust/book +[book-issues]: https://github.com/godot-rust/book/issues