(I wrote documentation first, this is very much in progress.)
Godot Launcher is full featured set of helper scenes for creating video
games with user-friendly launchers and customizable controls.
Originally made for the puzzle game Sawdust.
Download this library, either checkout via git (perhaps a as a
submodule) or simply download the zip file
Create a scene file that extends
GodotLauncherMainand set this as
your project's main file
Set "Main Scene" to the actual main scene for your game.
Now, when your game is started without arguments, it will go to the
launcher shown above. This is often enough for most games: it offers
controller re-assignment, video options, custom resolutions, etc.
- Set "Launcher Background Scene" to point to a scene
that will be instanced for the background of the launcher
- Disable window borders for the launcher
- Specify which controller options should be customizable
By setting a custom "Launcher Scene", you can further customize the
launcher. This package provides several instanceable scene files that
might be useful for this:
ControllerMenuprovides the UI for mapping controller options
ControllerMapperOptionprovides the UI for mapping a single
controller option (used by above)
VideoModeMenuprovides a dropdown of popular resolution
choices, along with "fullscreen" option
GraphicsOptionsMenuexposes some Godot Engine video options,
SoundOptionsMenuprovides volume sliders for music (sets Stream volume
adjustment) and FX (sets player volume adjustment option)
Utils.gdhas a bunch of high-level functions, notably ones for
starting the game with given options
You can arrange these parts for a custom launcher, and/or include them
in a dedicated settings menu within the game.
display/stretch_mode: "2d"breaks the launcher. I'm not sure anyway around
this, and I can't figure out a way to force reset it when setting up the
launcher (suggestions welcome!).
There are a lot of features I want to add:
- Auto-update system
- Scripts for packaging for different platforms (much like what
electron-builder does for electron apps)
- Better graphics options, and include presets of "High", "Medium", and "Low"
- Auto-detection of resolution
- Multiple player support, and provide a wrapper around Input that
abstracts the concept of "player", interchangeable between keyboard /
Pull requests are welcome!