For Godot 4.2
This template has a main menu, pause menu, and credits scene. It supports basic accessibility features like input rebinding, sound, and video controls.
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.
The App/
folder holds the core components of the menus application.
The Extras/
folder holds components that extend the core application.
App/
:
OptionsMenu.tscn
MasterOptionsMenu.tscn
MainMenu.tscn
PauseMenu.tscn
InitApp.tscn
InitApp.tscn
is the project's main scene. It loads all the configuration settings from the config file (if it exists) into game and sets the loading screen. It then loads the next scene (Opening.tscn
or MainMenu.tscn
). 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 (MainMenu.tscn
). MainMenu.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. SceneLoader.gd
is an autoload script. It can load scenes in the background or with a loading screen (LoadingScreen.tscn
by default). Credits.tscn
reads from ATTRIBUTION.md
to automatically generate the content for it's scrolling text label. UISoundController
node automatically attaches sounds to buttons, tab bars, sliders, and line edits in the scene. UISoundControllerAutoload.tscn
can be enabled in the project autoloads to apply settings project-wide.InGameMenuController.gd
controls opening and closing a menu and pausing the game in the background.PauseMenuController
node loads the PauseMenu.tscn
(using InGameMenuController.gd
) when triggering ui-cancel
.GameUI.tscn
is a demo game scene that displays recognized action inputs, and features the PauseMenuController
node, the LevelLoader
node to advance through levels, and InGameMenuController.gd
to show SuccessScene.tscn
or FailureScene.tscn
.App/
contains the core features of the package. On first use, it's recommended to keep the Extras/
folder, and make changes there. Features can be added and removed as needed.
To start minimally, use just the App/
folder, and safely remove the Extras/
folder by following the minimal instructions.
Compare features to decide which approach is best for your project.
If you just want to use just the projects minimum App/
folder:
Project > Project Settings… > General > Application > Run
.Main Scene
to res://App/Scenes/InitApp/InitApp.tscn
.Project > Project Settings… > Autoload
.res://Extras/...
.
ProjectUiSoundController
ProjectLevelLoader
RuntimeLogger
Extras/
folder.The remaining instructions will apply the same for either folder you decide to use.
The pause menu feature can be removed if not used. From the App/
folder, delete PauseMenu/*
, PauseMenuController.gd
, and InGameMenuController.gd
.
Lastly, this README.md
and the Media/
directory can both be removed.
These instructions assume starting with the entire contents of the project folder.
Update the project’s name.
Project > Project Settings… > General > Application > Config
.Name
to "Game Name"
.MainMenu.tscn
.Title
node.Text
to "Game Name"
.Point the main menu to the game scene.
MainMenu.tscn
.MainMenu
node.Game Scene Path
to the path of “Game Name” game scene.Update the project’s inputs.
Project > Project Settings… > Input Map
.InputOptionsMenu.tscn
.Controls
node.Action Name Map
to show readable names for “Game Name” input actions.Add Button Texture
and Remove Button Texture
with textures.Add sound effects to the UI.
By scene.
MainMenu.tscn
and PauseMenu.tscn
.UISoundController
node.Project-wide, with Extras/
.
UISoundControllerAutoload.tscn
.UISoundController
node.Project > Project Settings… > Autoload
.UISoundControllerAutoload
.Update the game credits / attribution.
ATTRIBUTION_example.md
over ATTRIBUTION.md
.ATTRIBUTION.md
with “Game Name” credits, following the example.Credits.tscn
scene to apply changes from ATTRIBUTION.md
.Include the attribution in exports.
Filters to export non-resource file/folders
to include ATTRIBUTION.md
.For an existing project, just copy over the App/
folder (optionally the Extras/
folder, as well).
Update the project’s main scene.
Project > Project Settings… > General > Application > Run
.Main Scene
to res://…/InitApp.tscn
.Update the project’s autoloads.
Project > Project Settings… > Autoload
.res://App/Scripts/SceneLoader.gd
.res://Extras/Scripts/RuntimeLogger.gd
.Update the project’s name.
MainMenu.tscn
.Title
node.Text
to Game Name
.Point the main menu to the game scene.
MainMenu.tscn
.MainMenu
node.Game Scene Path
to the path of “Game Name” game scene.Update the project’s inputs.
InputOptionsMenu.tscn
.Controls
node.Action Name Map
to show readable names for “Game Name” input actions.Add Button Texture
and Remove Button Texture
with textures.Add sound effects to the UI.
By scene.
MainMenu.tscn
and PauseMenu.tscn
.UISoundController
node.Project-wide, with Extras/
.
UISoundControllerAutoload.tscn
.UISoundController
node.Project > Project Settings… > Autoload
.UISoundControllerAutoload
.Update the game credits / attribution.
ATTRIBUTION_example.md
over ATTRIBUTION.md
.ATTRIBUTION.md
with “Game Name” credits, following the example.Credits.tscn
scene to apply changes from ATTRIBUTION.md
.Include the attribution in exports.
Filters to export non-resource file/folders
to include ATTRIBUTION.md
.