A template repository for a Godot 4+ project.
The following instructions outline how to get the project set up for local development:
- Clone this repository using the
--recurse-submodulesflag, ensuring all submodules are initialized. Alternatively, rungit submodule syncto update all submodules to latest. - Follow the instructions to install
gdenv. Then, install the pinned version of Godot withgdenv i. - Install the tools used below by following each of their specific installation instructions.
When submitting code for review, ensure the following requirements are met:
-
The project adheres as closely as possible to the official GDScript style guide.
-
The project is correctly formatted using gdformat:
bin/gdformat -l 88 --check **/*.gd
-
All gdlint linter warnings are addressed:
bin/gdlint **/*.gd
-
All Gut unit tests pass:
godot \ --quit \ --headless \ -s addons/gut/gut_cmdln.gd \ -gdir="res://" \ -ginclude_subdirs \ -gprefix="" \ -gsuffix="_test.gd" \ -gexit
Translation is supported using gettext tools. A messages.pot template file is located at project/locale/messages.pot and contains messages used by the template. Translations to english have already been added, so new language support is as simple as creating a new po file with the translations.
Finally, CI/CD runs check that translations are accurate; any changes to template files will result in fuzzy messages, blocking releases.
MSDF rendering is recommended for fonts, but many fonts contain overlapping contours which render incorrectly in Godot. This can be fixed using FontForge's removeOverlap utility. This process is not automated, so if font artifacts are seen when using MSDF rendering, they must be fixed manually.
Semantic Versioning is used for versioning and Conventional Commits is used for commit messages. A release-please integration via GitHub Actions automates releases.
After instantiating a project from this template repository, the default GitHub actions and workflows require the following repository secrets to be set:
BUTLER_API_KEY- Used to authenticate thebutlerCLI tool withitch.io; required when publishing toitch.io.ACTIONS_BOT_TOKEN- Used to commit formatting fixes to pull requests.GODOT_SCRIPT_ENCRYPTION_KEY- Used to encrypt the export Game artifacts; recommended to create one per platform,channel pair.- Various - Update code-signing and notarization secrets once the project is ready for release.
In addition to Secrets, the following files should be customized for the instantiated repository:
- .github/workflows/release-please.yaml - set the current project title when publishing.
- .github/workflows/publish-game.yaml - update the default project title and channel when publishing.
- .github/workflows/export-project.yaml - update the
encryption-keyinput when compiling and exporting.
See CHANGELOG.md.
Important
After instantiating this repository, consider removing this license if the project isn't intended to be open source.