(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" graphics settings
- Auto-detection of resolution
- Multiple player support, and provide a wrapper around Input that abstracts the concept of "player", interchangeable between keyboard / controller.
Pull requests are welcome!