Godot 4.3 template for game projects (GDScript).
TODO: This template is a work in progress. (Full version in 2025.)
- Foundation
- 🖼️ Scene Manager - Custom transitions and loading screens.
- 🎵 Audio Manager - Reliable music tracks and sound effects.
- ⚙️ Configuration - Persistent game options and statistics in INI file.
- 💾 Save Files - TODO: ...
- Localization
- 🌍 Polygot Template with 28 languages and over 600 common game words.
- ✏️ Google Noto Sans fonts for all glyphs (Arabic, Hebrew, HK, JP, KR, SC, TC, Thai).
- Accessibility
- 🎮 Controller Support - Grab focus for joypad and keyboard users.
- 🔍 Smooth Font - Dynamic font size (keep aspect ratio) on window resize.
- Experience
- UI/UX
- 🎬 Boot Splash - The main scene, allowing custom transition to main menu.
- 🏠 Main Menu - Display buttons to enter other menus, version and author.
- 🔧 Options Menu - TODO: ...
- 📜 Credits Menu - TODO: ...
- 📓 Save Files Menu - TODO: ...
- ⏸️ Pause Menu - TODO: ...
- Singletons
- 📢 Signal Bus - Observer pattern for cleaner global signals.
- 📖 References - Map of preloaded resources for convenience.
- Scripts
- 🧰 Utility - RNG (Weighted Loot Table), Maths, Files, Nodes, Strings.
- 🛠️ Objects - ActionHandler, ConfigStorage (INI File), LinkedMap.
- Tools
- 🐛 Logger - Easier debugging and troubleshooting.
- 🧩 IDE Plugin - Improves scripting in GDScript in editor.
- 📋 Resource View - Better resource management in editor.
- ✨ GDScript Toolkit - Code style formatting on save and linter.
- Workflow
- 🚀 Deployment - TODO: ...
- ✅ Actions - Verify style and formatting in GDScript code on push to Github.
- .github
- docs
- workflows
- godot
- addons (Plugins)
- assets (.png, .mp3, .csv, .ttf, ...)
- autoload (Globals)
- resources (.tres, .gd)
- scenes (.tscn, .gd)
- scripts (static/const .gd)
- shaders (.gdshader)
- export_presets.cfg
- gdlintrc
- project.godot (ProjectSettings)
- .gitattributes
- .gitignore
- LICENSE
- README.md
- Clean Code
- Use snake_case for files, folders, variables, functions.
- Use PascalCase for nodes, classes, enums, types.
- Use typed variables and functions.
- Use style inspired by GDScript Style (see gdlintrc).
- Function definition order: override, public, private, static.
- Consider using good design patterns when programming.
- Consider maintaining enum values when appropriate.
- Script IDE
- The Script-IDE improves scripting, e.g. Ctrl+U, Ctrl+O.
- Resource Tables
- The Edit Resources as Table adds view for managing Resources.
- GDScript Toolkit
- This project uses addons Format on Save and gdLinter (enforces gdlintrc).
- They require GDScript Toolkit python package being installed.
- Logger
- The Log inspired by Log4J allows logging.
- Scene Manager
- The SceneManager handles Scenes transitions and loadings.
- Audio Manager
- The Resonate addon handles music tracks and sound effects.
- For a complex audio project, consider using FMOD or WWise.
- Save Files
- TODO: ...
- Post-Processing
- TODO: ...
The Globals (autoload Scenes) and Scripts (statics, consts, objects) are available from anywhere in the project. The latter is independent of (not managed by) the Scene Tree.
Otherwise, Scenes must be loaded or added to the Scene Tree.
- Configuration
- First autoload (after Plugin autoloads).
- Configure Project, use ConfigStorage object for user config presistence.
- Reference
- Preloads & holds references to Resources in dictionary by name.
- When creating a new Resource type, consider creating a getter here.
- SignalBus
- Exchange global signals for cleaner observer pattern.
- Wrapper : Extend functionality without modifying the original.
- AudioWrapper - Calls Resonance plugin with enums instead of string names.
- SceneManagerWrapper - Calls SceneManager with options presets Resource.
- TranslationServerWrapper - Extends localization to work in tool scripts.
Scenes are split into component, node and scene folders.
- Component : Add as a child to extend functionality by composition.
- Node : Add as a standalone building block of a larger construction.
- Scene : Presentable collection of other scenes, nodes and components.
- Component
- Audio
- ButtonAudio - Emits audio events on signals (focus, click, release).
- SliderAudio - Emits audio events on signals (drag start, drag end).
- Control
- ControlGrabFocus - Grabs focus of node for controller support.
- ControlResizeTextFont - Smooth text scaling with window resolution.
- Audio
- Node
- Expand
- HSliderExpand - Expands to fill the parent node (custom UI scaling).
- Menu
- MenuButton - Localized menu button.
- MenuSlider - Localized menu slider with accessibility buttons.
- MenuToggle - Localized menu toggle button (ON or OFF).
- Expand
- Scene
- BootSplashScene (Main Scene) - Smooth transition to menu scene.
- MenuScene - Manages menu scenes as children.
- MainMenu - Display buttons to enter other menus or next scene.
- OptionsMenu - Manages options (persistent app settings) scenes.
- AudioOptions - Configure Music and SFX volume or mute.
- VideoOptions - TODO: ...
- ControlsOptions - TODO: ...
- GameOptions - TODO: ...
- CreditsMenu - TODO: ...
- SaveFilesMenu - TODO: ...
- PlayScene - TODO: ...
- PauseMenu - TODO: ...
- Const - Collections of commonly used constants.
- Enum - Collections of organised values.
- Object
- ActionHandler - Implements the (light) command pattern design.
- ConfigStorage - Persists (save & load) app settings in INI file.
- LinkedMap - Dictionary data structure that tracks order of keys.
- Util
- FileSystemUtils - Robust functions to extract file paths and names.
- MathUtils - Integer power function.
- NodeUtils - Collection of node manipulation functions.
- RandomUtils - Weighted Loot Table and random string functions.
- StringUtils - String functions for validation and padding.
- Github Pages
- TODO: ...
- Itch.io
- TODO: ...
- quality_check.yml
- Automatically check gdlintrc coding style standards.
- Web Export (Presets)
- There is Godot 4.3 Issue with Boot Splash, workaround is CSS in Head Include.
- There is Godot 4.3 Issue with
play_stream
, workaround was added for now.
- Click Use this template in Github, then open the project in Godot Engine.
- Setup GDScript Toolkit python package to use formatter and linter plugins.
- Opening the project for the first time, I have errors/warnings?
- Try (re)enable all Plugins and then select "Reload Current Project".
- Open a new Issue for discussion first, later Fork and open a pull request.
-
Godot Engine
-
Godot Extensions
-
Godot Templates