generated from SGDA/GodotExampleProject
feat: base
This commit is contained in:
112
addons/maaacks_menus_template/docs/ExistingProject.md
Normal file
112
addons/maaacks_menus_template/docs/ExistingProject.md
Normal file
@ -0,0 +1,112 @@
|
||||
# Existing Project
|
||||
|
||||
These instructions assume starting with just the contents of `addons/`. This will be the case when installing the *plugin* version in the Godot Asset Library.
|
||||
|
||||
|
||||
1. Update the project’s name in the main menu.
|
||||
|
||||
|
||||
1. Open `main_menu_with_animations.tscn`.
|
||||
2. Select the `Title` node.
|
||||
3. Update the `Text` to your project's title.
|
||||
4. Select the `Subtitle` node.
|
||||
5. Update the `Text` to a desired subtitle or empty.
|
||||
6. Save the scene.
|
||||
|
||||
|
||||
2. Link the main menu to the game scene.
|
||||
|
||||
|
||||
1. Open `main_menu_with_animations.tscn`.
|
||||
2. Select the `MainMenu` node.
|
||||
3. Update `Game Scene Path` to the path of the project's game scene.
|
||||
4. Save the scene.
|
||||
|
||||
|
||||
3. Add background music and sound effects to the UI.
|
||||
|
||||
1. Add `Music` and `SFX` to the project's default audio busses.
|
||||
|
||||
1. Open the Audio bus editor.
|
||||
2. Click the button "Add Bus" twice (x2).
|
||||
3. Name the two new busses `Music` and `SFX`.
|
||||
4. Save the project.
|
||||
|
||||
2. Add background music to the Main Menu.
|
||||
|
||||
1. Import the music asset into the project.
|
||||
2. Open `main_menu_with_animations.tscn`.
|
||||
3. Select the `BackgroundMusicPlayer` node.
|
||||
4. Assign the music asset to the `stream` property.
|
||||
5. Make sure that the `bus` property is set to `Music`.
|
||||
6. Save the scene.
|
||||
7. Optionally, repeat steps 3-5 for background music nodes in:
|
||||
1. `opening_with_logo.tscn`
|
||||
|
||||
|
||||
3. Add sound effects to UI elements.
|
||||
|
||||
1. By scene.
|
||||
|
||||
|
||||
1. Open `main_menu_with_animations.tscn` and `pause_menu.tscn`.
|
||||
2. Select the `UISoundController` node.
|
||||
3. Add audio streams to the various UI node events.
|
||||
4. Save the scenes.
|
||||
|
||||
|
||||
2. Project-wide.
|
||||
|
||||
|
||||
1. Open `project_ui_sound_controller.tscn`.
|
||||
2. Select the `UISoundController` node.
|
||||
3. Add audio streams to the various UI node events.
|
||||
4. Save the scene.
|
||||
|
||||
|
||||
4. Add readable names for input actions to the controls menu.
|
||||
|
||||
|
||||
1. Open `input_options_menu.tscn`.
|
||||
2. In the scene tree, select the `Controls` node.
|
||||
3. In the node inspector, select the desired input remapping mode (defaults to `List`).
|
||||
4. In the scene tree, select `InputActionsList` or `InputActionsTree`, depending on the choice of input remapping. The other node should be hidden.
|
||||
5. In the node inspector, update the `Input Action Names` and corresponding `Readable Action Names` to show user-friendly names for the project's input actions.
|
||||
6. Save the scene.
|
||||
|
||||
5. Add / remove configurable settings to / from menus.
|
||||
|
||||
|
||||
1. Open `mini_options_menu.tscn` or `[audio|visual|input|game]_options_menu.tscn` scenes to edit their options.
|
||||
2. If an option is not desired, it can always be hidden, or removed entirely (sometimes with some additional work).
|
||||
3. If a new option is desired, it can be added without writing code.
|
||||
1. Find the node that contains the existing list of options. Usually, it's a `VBoxContainer`.
|
||||
2. Add an `option_control.tscn` node as a child to the container.
|
||||
1. `slider_option_control.tscn` or `toggle_option_control.tscn` can be used if those types match requirements. In that case, skip step 5.3.6.
|
||||
2. `list_option_control.tscn` and `vector_2_list_option_control.tscn` are also available, but more complicated. See the `ScreenResolution` example.
|
||||
3. Select the `OptionControl` node just added, to edit it in the inspector.
|
||||
4. Add an `Option Name`. This prefills the `Key` string.
|
||||
5. Select an `Option Section`. This prefills the `Section` string.
|
||||
6. Add any kind of `Button`, `Slider`, `LineEdit`, or `TextEdit` to the `OptionControl` node.
|
||||
7. Save the scene.
|
||||
4. For options to have an effect outside of the menu, it will need to be referenced by its `key` and `section` from `config.gd`.
|
||||
1. `Config.get_config(section, key, default_value)`
|
||||
5. Validate the values being stored in your local `config.cfg` file.
|
||||
1. Refer to [Accessing Persistent User Data User](https://docs.godotengine.org/en/stable/tutorials/io/data_paths.html#accessing-persistent-user-data-user) to find Godot user data on your machine.
|
||||
2. Find the directory that matches your project's name.
|
||||
3. `config.cfg` should be in the top directory of the project.
|
||||
|
||||
|
||||
6. Update the game credits / attribution.
|
||||
|
||||
|
||||
1. Update the example `ATTRIBUTION.md` with the project's credits.
|
||||
2. Open `credits.tscn`.
|
||||
3. Check the `CreditsLabel` has updated with the text.
|
||||
4. Save the scene.
|
||||
|
||||
|
||||
7. Continue with:
|
||||
|
||||
1. [Setting up the Main Menu.](/addons/maaacks_menus_template/docs/MainMenuSetup.md)
|
||||
2. [Adding icons to the Input Options.](/addons/maaacks_menus_template/docs/InputIconMapping.md)
|
47
addons/maaacks_menus_template/docs/GameSceneSetup.md
Normal file
47
addons/maaacks_menus_template/docs/GameSceneSetup.md
Normal file
@ -0,0 +1,47 @@
|
||||
# Game Scene Setup
|
||||
|
||||
Here is a basic guide for setting up a game scene for advanced users.
|
||||
|
||||
The [Godot Game Template](https://github.com/Maaack/Godot-Game-Template) is recommended for first time users, as it includes an example game scene, with level progression.
|
||||
|
||||
## Pausing
|
||||
The `PauseMenuController` node can be added to the tree, or the `pause_menu_controller.gd` script may be attached to an empty `Node`. Selecting the node should then allow for setting the `pause_menu_packed` value in the inspector. Set it to the `pause_menu.tscn` scene and save.
|
||||
|
||||
This should be enough to capture when the `ui-cancel` input action is pressed in-game. On keyboards, this is commonly the `Esc` key.
|
||||
|
||||
## Background Music
|
||||
`BackgroundMusicPlayer`'s are `AudioStreamPlayer`'s with `autoplay` set to `true` and `audio_bus` set to "Music". These will automatically be recognized by the `ProjectMusicController` with the default settings, and allow for blending between tracks.
|
||||
|
||||
A `BackgroundMusicPlayer` can be added to the main game scene, but if using levels, the level scenes are typically a better place for them, as that allows for tracks to vary by level.
|
||||
|
||||
## SubViewports
|
||||
This guide recommends loading a game world into a `SubViewport` node, contained within a `SubViewportContainer`. This has a couple of advantages.
|
||||
|
||||
- Separates elements intended to appear inside the game world from those intended to appear on a layer above it.
|
||||
- Allows setting a fixed resolution for the game, like pixel art games.
|
||||
- Allows setting rendering settings, like anti-aliasing, on the `SubViewport`.
|
||||
- Supports easily adding visual effects with shaders on the `SubViewportContainer`.
|
||||
- Visual effects can be added to the game world without hurting the readability of the UI.
|
||||
|
||||
It has some disadvantages, as well.
|
||||
|
||||
- Locks the viewport resolution if any scaling is enabled, which is not ideal for 3D games.
|
||||
- Requires enabling Audio Listeners to hear audio from the game world.
|
||||
- Extra processing overhead for the viewport layer.
|
||||
|
||||
If a subviewport does not work well for the game, use any empty `Node` as the game world or level container, instead.
|
||||
|
||||
### Pixel Art Games
|
||||
If working with a pixel art game, often the goal is that the number of art pixels on-screen is to remain the same regardless of screen resolution. As in, the art scales with the monitor, rather than bigger monitors showing more of a scene. This is done by setting the viewport size in the project settings, and setting the stretch mode to either `canvas_mode` or `viewport`.
|
||||
|
||||
If a higher resolution is desired for the menus and UI than the game, then the project viewport size should be set to a multiple of the desired game window size. Then set the stretch shrink in `SubViewportContainer` to the multiple of the resolution. For example, if the game is at `640x360`, then the project viewport size can be set to `1280x720`, and the stretch shrink set to `2` (`1280x720 / 2 = 640x360`). Finally, set the texture filter on the `SubViewportContainer` to `Nearest`.
|
||||
|
||||
### Mouse Interaction
|
||||
If trying to detect `mouse_enter` and `mouse_exit` events on areas inside the game world, enable physics object picking on the `SubViewport`.
|
||||
|
||||
## Read Inputs
|
||||
Generally, any game is going to require reading some inputs from the player. Where in the scene hierarchy the reading occurs is best answered with simplicity.
|
||||
|
||||
If the game involves moving a player character, then the inputs for movements could be read by a `player_character.gd` script overriding the `_process(delta)` or `_input(event)` methods.
|
||||
|
||||
If the game involves sending commands to multiple units, then those inputs probably should be read by a `game_ui.gd` script, that then propagates those calls further down the chain.
|
53
addons/maaacks_menus_template/docs/GamesMade.md
Normal file
53
addons/maaacks_menus_template/docs/GamesMade.md
Normal file
@ -0,0 +1,53 @@
|
||||
# Games
|
||||
This page features games using Maaack's Godot Game Template and/or plugins.
|
||||
|
||||
If you have a game you'd like to share, join the [Discord server](https://discord.gg/AyZrJh5AMp ) and post a link to your game in #showcase.
|
||||
|
||||
## Featured
|
||||
|
||||
| Spud Customs | Rent Seek Kill | A Darkness Like Gravity |
|
||||
| :-------:| :-------: | :-------: |
|
||||
 |  |  |
|
||||
[Find on Steam](https://store.steampowered.com/app/3291880/Spud_Customs/) | [Play on itch.io](https://xandruher.itch.io/rent-seek-kill) | [Play on itch.io](https://maaack.itch.io/a-darkness-like-gravity) |
|
||||
|
||||
|
||||
## All Shared
|
||||
### 2025
|
||||
https://schinken.itch.io/low-ink
|
||||
https://maaack.itch.io/furnace-in-the-archive
|
||||
https://plexsoup.itch.io/factoriohno
|
||||
https://maaack.itch.io/dungeon-fantasy-fashion-show
|
||||
https://maaack.itch.io/absurd-herd
|
||||
https://maaack.itch.io/indys-expedition-2
|
||||
https://baconeggsrl.itch.io/sprouts-journey
|
||||
https://parallaxrat.itch.io/no-mans-land
|
||||
https://store.steampowered.com/app/3751730/Loan_Shark/
|
||||
|
||||
### 2024
|
||||
https://store.steampowered.com/app/3291880/Spud_Customs/ (Source: https://github.com/Lost-Rabbit-Digital/SpudCustoms)
|
||||
https://glockenberg.itch.io/icefire-temple
|
||||
https://maaack.itch.io/backroom-labyrinths
|
||||
https://maaack.itch.io/haunted-circuits
|
||||
https://maaack.itch.io/talk-up-the-tower
|
||||
https://marinaaaa.itch.io/meowntaineer
|
||||
https://maaack.itch.io/a-darkness-like-gravity
|
||||
https://maaack.itch.io/lore-of-the-wild-gwj-70
|
||||
https://maaack.itch.io/infinite-horizon
|
||||
https://elidef.itch.io/forge-ur-boss
|
||||
https://maaack.itch.io/forgeomino
|
||||
https://xandruher.itch.io/rent-seek-kill
|
||||
https://maaack.itch.io/blind-escape-gwj-66-edition
|
||||
https://justaguyjustaguy.itch.io/nannybot-overload
|
||||
https://maaack.itch.io/the-last-host-boss-rush
|
||||
https://kyveri.itch.io/riverking
|
||||
|
||||
### 2023
|
||||
https://xandruher.itch.io/spectral-war
|
||||
https://maaack.itch.io/the-cat-with-eight-gwj-63-edition
|
||||
https://maaack.itch.io/harvest-hill-gwj-62-edition
|
||||
https://shoddygames.itch.io/once-summoned
|
||||
https://maaack.itch.io/the-last-host
|
||||
https://maaack.itch.io/do-androids-dream-gwj-55-edition
|
||||
https://maaack.itch.io/character-builder-gwj-53-edition
|
||||
https://maaack.itch.io/rit-dot-wav
|
||||
https://maaack.itch.io/supercritical-a-post-apocalyptic-bonsai
|
15
addons/maaacks_menus_template/docs/HowPartsWork.md
Normal file
15
addons/maaacks_menus_template/docs/HowPartsWork.md
Normal file
@ -0,0 +1,15 @@
|
||||
# How Parts Work
|
||||
|
||||
This page features snippets of extra documentation on key pieces of the plugin. It was previously included in the README.
|
||||
|
||||
- `app_config.tscn` is set as the first autoload. It calls `app_settings.gd` to load all the configuration settings from the config file (if it exists) through `config.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 with `config.gd` to keep settings persistent between runs.
|
||||
- `credits.tscn` reads from `ATTRIBUTION.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` can be set to load `pause_menu.tscn` when triggering `ui-cancel`.
|
||||
- `pause_menu.tscn` is a type of `OverlaidMenu` with the `pauses_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.
|
154
addons/maaacks_menus_template/docs/InputIconMapping.md
Normal file
154
addons/maaacks_menus_template/docs/InputIconMapping.md
Normal file
@ -0,0 +1,154 @@
|
||||
# Input Icon Mapping
|
||||
|
||||
The `InputIconMapper` in `input_options_menu.tscn` is a generalized tool meant to be broadly compatible with freely licensed icon asset packs. Instructions on how to use it with a few of these packs are provided, with links to download them from their creator's page.
|
||||
|
||||
## Kenney Input Prompts
|
||||
|
||||
### Automatic
|
||||
|
||||
With the project open, select `Project > Tools > Use Input Icons for Maaack's Menus Template`.
|
||||
|
||||
Select a style and then wait for the icons to download, extract, and setup.
|
||||
|
||||
### Manual
|
||||
|
||||
Available from [kenney.nl](https://kenney.nl/assets/input-prompts) and [itch.io](https://kenney-assets.itch.io/input-prompts).
|
||||
|
||||
This pack is organized by `Device/IconType`. The `IconTypes` for each device are just `Default`, `Vector`, or `Double`. These instructions will assume using `Default`. In the inspector of `InputIconMapper`, set the `directories` to include the subdirectories of the asset pack.
|
||||
* `.../kenney_input-prompts/Keyboard & Mouse/Default`
|
||||
* `.../kenney_input-prompts/Generic/Default`
|
||||
* `.../kenney_input-prompts/Xbox Series/Default`
|
||||
* `.../kenney_input-prompts/PlayStation Series/Default`
|
||||
* `.../kenney_input-prompts/Nintendo Switch/Default`
|
||||
* `.../kenney_input-prompts/Steam Deck/Default`
|
||||
|
||||
Set `filtered_strings` to:
|
||||
* `keyboard`
|
||||
* `color`
|
||||
* `button`
|
||||
* `arrow`
|
||||
|
||||
Set `replace_strings` with the key pairs:
|
||||
* `"Capslock": "Caps Lock"`
|
||||
* `"Generic Stick": "Generic Left Stick"`
|
||||
* `"Guide": "Home"`
|
||||
* `"Slash Back": "Back Slash"`
|
||||
* `"Slash Forward": "Slash"`
|
||||
* `"Stick L": "Left Stick"`
|
||||
* `"Stick R": "Right Stick"`
|
||||
* `"Trigger L 1": "Left Shoulder"`
|
||||
* `"Trigger L 2": "Left Trigger"`
|
||||
* `"Trigger R 1": "Right Shoulder"`
|
||||
* `"Trigger R 2": "Right Trigger"`
|
||||
|
||||
#### Filled Icons
|
||||

|
||||
Under the `FileLister` properties of the `InputIconMapper`, expand the `Constraints` and `Advanced Search` tabs. Set `ends_with=".png"` and `not_ends_with="outline.png"`.
|
||||
|
||||
Press `Refresh Files`.
|
||||
|
||||
If you want to use colored icons, in `prioritized_strings` add `color`. Otherwise set `filter="color"`.
|
||||
|
||||
Press `Match Icons to Inputs`.
|
||||
|
||||
Validate the results by inspecting the `matching_icons` dictionary.
|
||||
|
||||
#### Outlined Icons
|
||||

|
||||
Not all icons have outlined versions, so we will end up including the filled icons as fallback, and prioritizing outlined.
|
||||
|
||||
Under the `FileLister` properties of the `InputIconMapper`, expand the `Constraints` and `Advanced Search` export groups. Set `ends_with=".png"`.
|
||||
|
||||
Press `Refresh Files`.
|
||||
|
||||
Add to `filtered_strings`:
|
||||
* `outline`
|
||||
|
||||
In `prioritized_strings` add `outline`. If you want to use colored icons, in `prioritized_strings` add `color`, too. Otherwise set `filter="color"`.
|
||||
|
||||
Press `Match Icons to Inputs`.
|
||||
|
||||
Validate the results by inspecting the `matching_icons` dictionary.
|
||||
|
||||
## Kenny Input Prompts Pixel 16x
|
||||
|
||||
Incompatible: File names not useable.
|
||||
|
||||
## Xelu 's Free Controller & Key Prompts
|
||||
|
||||

|
||||
Available from [thoseawesomeguys.com](https://thoseawesomeguys.com/prompts/).
|
||||
|
||||
This pack is organized by `Device`. In the inspector of `InputIconMapper`, set the `directories` to include the subdirectories of the asset pack. Assumes using the `Dark` icon set with the keyboard and mouse.
|
||||
* `.../Xelu_Free_Controller&Key_Prompts/Keyboard & Mouse/Dark`
|
||||
* `.../Xelu_Free_Controller&Key_Prompts/Xbox Series`
|
||||
* `.../Xelu_Free_Controller&Key_Prompts/PS5`
|
||||
* `.../Xelu_Free_Controller&Key_Prompts/Switch`
|
||||
* `.../Xelu_Free_Controller&Key_Prompts/Steam Deck`
|
||||
|
||||
Under the `FileLister` properties of the `InputIconMapper`, expand the `Constraints` and `Advanced Search` tabs. Set `ends_with=".png"`.
|
||||
|
||||
Press `Refresh Files`.
|
||||
|
||||
Set `filtered_strings` to:
|
||||
* `dark`
|
||||
* `key`
|
||||
|
||||
Set `replace_strings` with the key pairs:
|
||||
* `"Ps 5": "Playstation"`
|
||||
* `"Xbox Series X": "Xbox"`
|
||||
* `"Steam Deck": "Steamdeck"`
|
||||
* `"L 1": "Left Shoulder"`
|
||||
* `"R 1": "Right Shoulder"`
|
||||
* `"L 2": "Left Trigger"`
|
||||
* `"R 2": "Right Trigger"`
|
||||
* `"Click": "Press"`
|
||||
|
||||
Set `add_stick_directions=true`.
|
||||
|
||||
Press `Match Icons to Inputs`.
|
||||
|
||||
Validate the results by inspecting the `matching_icons` dictionary.
|
||||
|
||||
Since `Generic` device icons are not available, set `initial_joypad_device` to either `Xbox`, `Playstation`, `Switch`, or `Steamdeck`.
|
||||
|
||||
## Free Icon Pack for Unity & Unreal – 1500+ Input Icons for Game UI
|
||||
|
||||

|
||||
Available from [itch.io](https://juliocacko.itch.io/free-input-prompts).
|
||||
|
||||
This pack is organized by `Device/IconType`. In the inspector of `InputIconMapper`, set the `directories` to include the subdirectories of the asset pack. Assumes using the `Dark` icon set with the keyboard and mouse, and `Default` for the others.
|
||||
* `.../Source/Keyboard_Mouse/Dark`
|
||||
* `.../Source/P4Gamepad/Default`
|
||||
* `.../Source/XGamepad/Default`
|
||||
* `.../Source/SGamepad/Default`
|
||||
|
||||
Under the `FileLister` properties of the `InputIconMapper`, expand the `Constraints` and `Advanced Search` tabs. Set `ends_with=".png"`.
|
||||
|
||||
Press `Refresh Files`.
|
||||
|
||||
In `prioritized_strings`, add either `color` or `white`, depending on what icons you prefer.
|
||||
|
||||
Set `filtered_strings` to:
|
||||
* `dark`
|
||||
* `key`
|
||||
* `t`
|
||||
* `color`
|
||||
* `white`
|
||||
|
||||
Set `replace_strings` with the key pairs:
|
||||
* `"P 4": "Playstation"`
|
||||
* `"X": "Xbox"`
|
||||
* `"S": "Switch"`
|
||||
* `"L": "Left Stick"`
|
||||
* `"R": "Right Stick"`
|
||||
* `"Left Stick 1": "Left Shoulder"`
|
||||
* `"Right Stick 1": "Right Shoulder"`
|
||||
* `"Left Stick 2": "Left Trigger"`
|
||||
* `"Right Stick 2": "Right Trigger"`
|
||||
|
||||
Press `Match Icons to Inputs`.
|
||||
|
||||
Validate the results by inspecting the `matching_icons` dictionary.
|
||||
|
||||
Since `Generic` device icons are not available, set `initial_joypad_device` to either `Xbox`, `Playstation`, or `Switch`.
|
31
addons/maaacks_menus_template/docs/JoypadInputs.md
Normal file
31
addons/maaacks_menus_template/docs/JoypadInputs.md
Normal file
@ -0,0 +1,31 @@
|
||||
# Joypad Inputs
|
||||
|
||||
This page covers topics related to working with joypads.
|
||||
|
||||
## Recognized Devices
|
||||
|
||||
- Xbox
|
||||
- Playstation 4
|
||||
- Playstation 5
|
||||
|
||||
### Unconfirmed
|
||||
|
||||
- Switch
|
||||
- Steam Deck
|
||||
|
||||
## Added UI Inputs
|
||||
|
||||
There is a `override.cfg` in the project root directory that adds a few additional inputs to the project's built-in UI actions.
|
||||
|
||||
These additional inputs are for joypads and include the following:
|
||||
|
||||
- `UI Accept`: A Button (Xbox A / Sony X)
|
||||
- `UI Cancel`: Back Button (Xbox Back / Sony Select)
|
||||
- `UI Page Up`: Left Shoulder (Xbox LB / Sony L1)
|
||||
- `UI Page Down`: Right Shoulder (Xbox RB / Sony R2)
|
||||
|
||||
However, for these to work in exported versions of the project, the inputs need to either be added manually to the project's built-in actions, or `override.cfg` will need to be included in the exports. The latter can be done by including the pattern (`*.cfg`) in **Filters to export non-resource files/folders** under the *Resources* tab of the *Export* window.
|
||||
|
||||
## Web Builds
|
||||
|
||||
Godot (or the template) currently does not support joypad device detection on the web. If icons are being used for input remapping, the joypad icons will *not* update automatically to match a new detected controller.
|
28
addons/maaacks_menus_template/docs/MainMenuSetup.md
Normal file
28
addons/maaacks_menus_template/docs/MainMenuSetup.md
Normal file
@ -0,0 +1,28 @@
|
||||
# Main Menu Setup
|
||||
|
||||
These are instructions for further editing the menus. Basic instructions are available in the [README](/addons/maaacks_menus_template/README.md#usage).
|
||||
|
||||
## Inheritance
|
||||
|
||||
Most example scenes in the template inherit from scenes in `addons`. This is useful for developing of the plugin, but often less useful for those using it. When editing the example scenes, any nodes inherited from a parent scene are highlighted in yellow in the scene tree. Inherited nodes cannot be edited like native nodes. Therefore, it is recommended to first right-click on the root node, and select `Clear Inheritance`. You'll get a warning that this cannot be undone, but it's okay. You probably won't need to undo it, and if you do, there are solutions.
|
||||
|
||||
## Visual Placement
|
||||
|
||||
The positions and anchor presets of the UI elements can be adjusted to match most designs with ease. Buttons can be centered, right or left justfied, or arranged horizontally. Most visual UI elements are contained within `MarginContainer` and `Control` nodes that allow for fine-tuning of placement.
|
||||
|
||||
## Scene Structure
|
||||
Some designs may require rearranging the nodes in the scene tree. This is easier once the inheritance to the parent scene is cleared. However, if editing `main_menu_with_animations.tscn`, keep in mind that there are animations, and moving elements outside of the animated containers may have undesired effects.
|
||||
|
||||
## 3D Background
|
||||
When adding a 3D background to the menu, it is recommended to use a `SubViewportContainer` in place of or right above the `BackgroundTextureRect`. Then add a `SubViewport` to it, and finally the 3D world node to that. This structure gives fine-tune control of scaling, allows for layering 3D views when they have transparency, and makes it easy to add a texture shader to the whole background.
|
||||
|
||||
## Theming
|
||||
It is recommended to have a custom theme for a project. Create a theme resource file or use one of the ones provided with the template and set it as the custom theme in the project settings. Any changes made to the theme file will then apply automatically to the whole project.
|
||||
|
||||
The main UI elements that are used throughout the project that require theming for customization are:
|
||||
- Button
|
||||
- Label
|
||||
- PanelContainer
|
||||
- ProgressBar
|
||||
- TabContainer
|
||||
- Tree
|
124
addons/maaacks_menus_template/docs/NewProject.md
Normal file
124
addons/maaacks_menus_template/docs/NewProject.md
Normal file
@ -0,0 +1,124 @@
|
||||
# New Projects
|
||||
|
||||
These instructions assume starting with the entire contents of the project folder. This will be the case when cloning the repo, or starting from the *template* version in the Godot Asset Library.
|
||||
|
||||
|
||||
1. Finish setup and remove duplicate example files.
|
||||
|
||||
|
||||
1. Go to `Project > Tools > Copy Maaack's Menus Template Examples`.
|
||||
2. Click `Cancel` in the first window asking to copy the examples. It's already done.
|
||||
3. Select a theme in the next window if desired.
|
||||
4. Go to `Project > Tools > Delete Maaack's Menus Template Examples`.
|
||||
5. Click `Yes` in the first window.
|
||||
|
||||
|
||||
2. Update the project’s name.
|
||||
|
||||
|
||||
1. Go to `Project > Project Settings… > General > Application > Config`.
|
||||
2. Update `Name` to `"Game Name"`.
|
||||
3. Close the window.
|
||||
4. Open `main_menu_with_animations.tscn`.
|
||||
5. The `Title` node should automatically update with the project's title. Customize the `Text` property if desired.
|
||||
7. Select the `Subtitle` node and customize the `Text` property if desired.
|
||||
9. Save the scene.
|
||||
|
||||
|
||||
3. Add background music and sound effects to the UI.
|
||||
|
||||
|
||||
1. Verify the `Music` and `SFX` audio busses.
|
||||
|
||||
1. Open the Audio bus editor.
|
||||
2. Make sure there is a bus for `Music` and another for `SFX`.
|
||||
3. Add the busses if they do not exist.
|
||||
|
||||
2. Add background music to the Main Menu.
|
||||
|
||||
1. Import the music asset into the project.
|
||||
2. Open `main_menu_with_animations.tscn`.
|
||||
3. Select the `BackgroundMusicPlayer` node.
|
||||
4. Assign the music asset to the `stream` property.
|
||||
5. Make sure that the `bus` property is set to `Music`.
|
||||
6. Save the scene.
|
||||
7. Optionally, repeat steps 3-5 for background music nodes in:
|
||||
1. `opening_with_logo.tscn`
|
||||
2. `game_ui.tscn`
|
||||
3. `end_credits.tscn`
|
||||
|
||||
|
||||
3. Add sound effects to UI elements.
|
||||
|
||||
|
||||
1. By scene.
|
||||
|
||||
|
||||
1. Open `main_menu_with_animations.tscn` and `pause_menu.tscn`.
|
||||
2. Select the `UISoundController` node.
|
||||
3. Add audio streams to the various UI node events.
|
||||
4. Save the scenes.
|
||||
|
||||
|
||||
2. Project-wide.
|
||||
|
||||
|
||||
1. Open `project_ui_sound_controller.tscn`.
|
||||
2. Select the `UISoundController` node.
|
||||
3. Add audio streams to the various UI node events.
|
||||
4. Save the scene.
|
||||
|
||||
|
||||
4. Add readable names for input actions to the controls menu.
|
||||
|
||||
|
||||
1. Open `input_options_menu.tscn`.
|
||||
2. In the scene tree, select the `Controls` node.
|
||||
3. In the node inspector, select the desired input remapping mode (defaults to `List`).
|
||||
4. In the scene tree, select `InputActionsList` or `InputActionsTree`, depending on the choice of input remapping. The other node should be hidden.
|
||||
5. In the node inspector, update the `Input Action Names` and corresponding `Readable Action Names` to show user-friendly names for the project's input actions.
|
||||
6. Save the scene.
|
||||
|
||||
|
||||
5. Add / remove configurable settings to / from menus.
|
||||
|
||||
|
||||
1. Open `mini_options_menu.tscn` or `[audio|visual|input|game]_options_menu.tscn` scenes to edit their options.
|
||||
2. If an option is not desired, it can always be hidden, or removed entirely (sometimes with some additional work).
|
||||
3. If a new option is desired, it can be added without writing code.
|
||||
1. Find the node that contains the existing list of options. Usually, it's a `VBoxContainer`.
|
||||
2. Add an `option_control.tscn` node as a child to the container.
|
||||
1. `slider_option_control.tscn` or `toggle_option_control.tscn` can be used if those types match requirements. In that case, skip step 5.3.6.
|
||||
2. `list_option_control.tscn` and `vector_2_list_option_control.tscn` are also available, but more complicated. See the `ScreenResolution` example.
|
||||
3. Select the `OptionControl` node just added, to edit it in the inspector.
|
||||
4. Add an `Option Name`. This prefills the `Key` string.
|
||||
5. Select an `Option Section`. This prefills the `Section` string.
|
||||
6. Add any kind of `Button`, `Slider`, `LineEdit`, or `TextEdit` to the `OptionControl` node.
|
||||
7. Save the scene.
|
||||
4. For options to have an effect outside of the menu, it will need to be referenced by its `key` and `section` from `config.gd`.
|
||||
1. `Config.get_config(section, key, default_value)`
|
||||
5. Validate the values being stored in your local `config.cfg` file.
|
||||
1. Refer to [Accessing Persistent User Data User](https://docs.godotengine.org/en/stable/tutorials/io/data_paths.html#accessing-persistent-user-data-user) to find Godot user data on your machine.
|
||||
2. Find the directory that matches your project's name.
|
||||
3. `config.cfg` should be in the top directory of the project.
|
||||
|
||||
|
||||
6. Update the game credits / attribution.
|
||||
|
||||
|
||||
1. Update the example `ATTRIBUTION.md` with the project's credits.
|
||||
2. Open `credits.tscn`.
|
||||
3. Check the `CreditsLabel` has updated with the text.
|
||||
4. Save the scene.
|
||||
|
||||
|
||||
7. Keep, update, or remove `res://LICENSE.txt`.
|
||||
|
||||
|
||||
8. Optionally, if using Git for version control, update `.gitignore` to include `addons/`.
|
||||
|
||||
|
||||
9. Continue with:
|
||||
|
||||
1. [Setting up the Main Menu.](/addons/maaacks_menus_template/docs/MainMenuSetup.md)
|
||||
2. [Adding icons to the Input Options.](/addons/maaacks_menus_template/docs/InputIconMapping.md)
|
27
addons/maaacks_menus_template/docs/PluginSuite.md
Normal file
27
addons/maaacks_menus_template/docs/PluginSuite.md
Normal file
@ -0,0 +1,27 @@
|
||||
# Plugin Suite
|
||||
|
||||

|
||||
|
||||
Maaack's Game Template is a culmination of a suite of plugins, that can be downloaded individually, if desired.
|
||||
|
||||
## GitHub
|
||||
|
||||
- [Game Template](https://github.com/Maaack/Godot-Game-Template)
|
||||
- [Menus Template](https://github.com/Maaack/Godot-Menus-Template)
|
||||
- [Options Menus](https://github.com/Maaack/Godot-Options-Menus)
|
||||
- [Input Remapping](https://github.com/Maaack/Godot-Input-Remapping)
|
||||
- [Scene Loader](https://github.com/Maaack/Godot-Scene-Loader)
|
||||
- [Credits Scene](https://github.com/Maaack/Godot-Credits-Scene)
|
||||
- [UI Sound Controller](https://github.com/Maaack/Godot-UI-Sound-Controller)
|
||||
- [Music Controller](https://github.com/Maaack/Godot-Music-Controller)
|
||||
|
||||
## Godot Asset Library
|
||||
|
||||
- [Game Template](https://godotengine.org/asset-library/asset/2709)
|
||||
- [Menus Template](https://godotengine.org/asset-library/asset/2899)
|
||||
- [Options Menus](https://godotengine.org/asset-library/asset/3058)
|
||||
- [Input Remapping](https://godotengine.org/asset-library/asset/4051)
|
||||
- [Scene Loader](https://godotengine.org/asset-library/asset/2896)
|
||||
- [Credits Scene](https://godotengine.org/asset-library/asset/2932)
|
||||
- [UI Sound Controller](https://godotengine.org/asset-library/asset/2897)
|
||||
- [Music Controller](https://godotengine.org/asset-library/asset/2898)
|
73
addons/maaacks_menus_template/docs/Screenshots.md
Normal file
73
addons/maaacks_menus_template/docs/Screenshots.md
Normal file
@ -0,0 +1,73 @@
|
||||
# Screenshots
|
||||
|
||||
1280x720 and 640x360 resolutions are shown, and resolutions up to 4k are supported.
|
||||
|
||||
## 1280 X 720
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
## 640 x 360
|
||||
|
||||
Screenshots organized by included themes.
|
||||
|
||||
### Default (No Theme)
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
### Gravity
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
### Lore
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
### Steal This Theme
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
### Tower
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
6
addons/maaacks_menus_template/docs/Videos.md
Normal file
6
addons/maaacks_menus_template/docs/Videos.md
Normal file
@ -0,0 +1,6 @@
|
||||
# Videos
|
||||
|
||||
[](https://youtu.be/U9CB3vKINVw)
|
||||
[](https://youtu.be/-QWJnZ8bVdk)
|
||||
[](https://youtu.be/SBE4icfXYRA)
|
||||
[](https://youtu.be/wCc2QUnaBKo)
|
Reference in New Issue
Block a user