Contributing to gdgs
July 22, 2026 ยท View on GitHub
Thanks for your interest! Issues and pull requests are welcome in English or Chinese.
Development setup
- Clone the repository.
- Open the repository root directly in Godot
4.3or newer (aproject.godotis included; the plugin is pre-enabled). - Wait for the first import to finish, then run
samples/demo.tscnto verify rendering works.
The repository layout and render-stack module split are described in architecture.md.
Making changes
- Keep the plugin self-contained under
addons/gdgs. Everything outsideaddons/is development-only and is excluded from Asset Library exports via.gitattributes. - The minimum supported Godot version is
4.3โ avoid APIs introduced after it, or guard them withhas_methodchecks like the existing code does. - Match the existing GDScript style: tabs for indentation, typed declarations where practical, one focused module per file.
- The collision module (
addons/gdgs/collision) must stay optional: it is loaded through a fault-isolating self-test, and rendering must keep working if the folder is deleted. - Do not commit large binary assets. Sample assets beyond the small
demo.sogare distributed through GitHub Releases.
Before opening a PR
-
CI runs a headless import plus a smoke test (
tests/smoke_test.gd) on the minimum and latest supported Godot versions. You can run the same checks locally:godot --headless --path . --import godot --headless --path . --script tests/smoke_test.gd -
If you change user-facing docs, update both
README.mdanddocs/README_CN.md. -
Record user-visible changes in CHANGELOG.md.
Release process (maintainers)
-
Bump
versioninaddons/gdgs/plugin.cfg. -
Move the
[Unreleased]items in CHANGELOG.md into a new## [X.Y.Z] - YYYY-MM-DDsection. -
Commit and push, then tag that commit and push the tag:
git tag vX.Y.Z git push origin vX.Y.Z -
The
Releaseworkflow checks the tag againstplugin.cfg, builds a zip containing onlyaddons/(with the bundled LICENSE) that extracts directly into a project root, pulls the matching changelog section as release notes, and publishes the GitHub release.
Large sample assets are attached to the dedicated sample-assets release, not to version releases.
License
By contributing you agree that your contributions are licensed under the MIT License.