Awesome
Godot Menus Template
For Godot 4.2+
This template has a main menu, options menus, credits, and a scene loader.
Example on itch.io
Example is of Maaack's Game Template, which includes additional features.
Videos
Screenshots
Use Case
Setup menus and accessibility features in about 15 minutes.
The core components can support a larger project, but the template was originally built to support smaller projects and game jams.
Features
Base
The base/
folder holds the core components of the menus application.
- Main Menu
- Options Menus
- Pause Menu
- Credits
- Loading Screen
- Opening Scene
- Persistent Settings
- Simple Config Interface
- Extensible Overlay Menus
- Keyboard/Mouse Support
- Gamepad Support
- UI Sound Controller
- Background Music Controller
Examples
The examples/
folder contains an example project using inherited scenes from the base/
and extras/
.
- End Credits
- Additional Inherited Scenes:
- Main Menu w/ Animations
- Opening w/ Godot Logo
- Loading Screen w/ Shader Pre-caching
How it Works
app_config.tscn
is set as the first autoload. It callsapp_settings.gd
to load all the configuration settings from the config file (if it exists) throughconfig.gd
.scene_loader.tscn
is set as the second autoload. It can load scenes in the background or with a loading screen (loading_screen.tscn
by default).opening.tscn
is a simple scene for fading in/out a few images at the start of the game. It then loads the next scene (main_menu.tscn
).main_menu.tscn
is where a player can start the game, change settings, watch credits, or quit. It can link to the path of a game scene to play, and the packed scene of an options menu to use.option_control.tscn
and its inherited scenes are used for most configurable options in the menus. They work withconfig.gd
to keep settings persistent between runs.credits.tscn
reads fromATTRIBUTION.md
to automatically generate the content for it's scrolling text label.- The
UISoundController
node automatically attaches sounds to buttons, tab bars, sliders, and line edits in the scene.project_ui_sound_controller.tscn
is an autload used to apply UI sounds project-wide. project_music_controller.tscn
is an autoload that keeps music playing between scenes. It detects music stream players as they are added to the scene tree, reparents them to itself, and blends the tracks.- The
PauseMenuController
node loads thepause_menu.tscn
when triggeringui-cancel
. pause_menu.tscn
is a type ofOverlaidMenu
with thepauses_game
flag set to true. It will store the previously focused UI element, and return focus to it when closed.capture_focus.gd
is attached to container nodes throughout the UI. It focuses onto UI elements when they are shown, allowing for easier navigation without a mouse.
Installation
Godot Asset Library
This package is available as a plugin, meaning it can be added to an existing project.
When editing an existing project:
- Go to the
AssetLib
tab. - Search for "Maaack's Menus Template".
- Click on the result to open the plugin details.
- Click to Download.
- Check that contents are getting installed to
addons/
and there are no conflicts. - Click to Install.
- Reload the project (you may see errors before you do this).
- Enable the plugin from the Project Settings > Plugins tab.
If it's enabled for the first time,- A dialogue window will appear asking to copy the example scenes out of
addons/
. - Another dialogue window will ask to update the project's main scene.
- A dialogue window will appear asking to copy the example scenes out of
- Continue with the Existing Project Instructions
GitHub
- Download the latest release version from GitHub.
- Extract the contents of the archive.
- Move the
addons/maaacks_menus_template
folder into your project'saddons/
folder. - Open/Reload the project.
- Enable the plugin from the Project Settings > Plugins tab.
If it's enabled for the first time,- A dialogue window will appear asking to copy the example scenes out of
addons/
. - Another dialogue window will ask to update the project's main scene.
- A dialogue window will appear asking to copy the example scenes out of
- Continue with the Existing Project Instructions
Extras or Components
Users that want additional features can try Maaack's Game Template or other options from the plugin suite.
Usage
Changes can be made directly to scenes and scripts outside of addons/
.
A copy of the examples/
directory is made outside of addons/
when the plugin is enabled for the first time. However, if this is skipped, it is recommended developers inherit from scenes they want to use, and save the inherited scene outside of addons/
. This avoids changes getting lost either from the package updating, or because of a .gitignore
.