> For the complete documentation index, see [llms.txt](https://october-studio.gitbook.io/monster-survivors-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://october-studio.gitbook.io/monster-survivors-documentation/game-structure/main-menu-scene.md).

# Main Menu Scene

Main Menu is the main hub of the game. Most of components inside this scene are permanent singletones that do not get unload when the Game scene is loaded. They provide management and access to different systems of the game.

<figure><img src="/files/Rf8xXNxfXUk9SdurrBS5" alt=""><figcaption><p>Main Menu hierarchy</p></figcaption></figure>

### Game Controller

<figure><img src="/files/EmmSF8hsc3I3iZpjtW1w" alt=""><figcaption></figcaption></figure>

Game Controller is the main component of the game. It initializes and provides access to other components such as Save Manager or Audio Manager. It is also responsible for switching between scenes.

***

### Save Manager

<figure><img src="/files/ssB4L6ApSYQF9piolXzb" alt=""><figcaption></figcaption></figure>

Save Manager provides easy high level ability to store and receive data from the file system.\
It works with IOS, Android, WebGL and PC

<table><thead><tr><th width="198">Field</th><th>Description</th></tr></thead><tbody><tr><td>Clear Save</td><td>If selected, creates new save instead of loading save file</td></tr><tr><td>Auto Save Enabled</td><td>If selected, saves game automatically in background</td></tr><tr><td>Auto Save Delay</td><td>The time between automatic saves</td></tr></tbody></table>

{% code fullWidth="false" %}

```csharp
// You can get a save from anywhere in the project using this code
// If there is no entry of "Abilities Save" in Save Database, 
// it will be created automatically
var abilitiesSave = GameController.SaveManager.GetSave<AbilitiesSave>("Abilities Save");
```

{% endcode %}

***

### Main Menu Screen

<figure><img src="/files/19QV2zaH8fGv422YAjg4" alt=""><figcaption></figcaption></figure>

<table><thead><tr><th width="196">Window</th><th>Description</th></tr></thead><tbody><tr><td>Lobby Window</td><td>This is the first window that greets the player when they open the game. Inside it you can select stage you want to play, start playing, or open other windows inside main menu</td></tr><tr><td>Upgrades Window</td><td>Inside this window you can buy upgrades or increase their level</td></tr><tr><td>Characters Window</td><td>Inside this window you can buy and select characters</td></tr><tr><td>Settings Windows</td><td>Inside this window you can toggle on or off music, sounds and vibrations</td></tr><tr><td>Persistent UI</td><td>Other UI that stay on the screen no matter what window is opened. Consists of Background Images and Gold Currency Indicators</td></tr></tbody></table>

***

### Main Camera

The camera that renders Main Menu UI. Does not have any specific requirements, can be both perspective and orthographics, depending on your needs

***

### Upgrades Manager

Upgrades Manager provides easy access to the upgrades system. To find out more, read [Upgrades System Structure page](/monster-survivors-documentation/upgrades/upgrades-system-structure.md)

***

### Easing Manager

Easing Manager is an in-house analog of the DoTween asset, that is build on top of Coroutines. It provides an easy way to animate gameObjects.

***

### Vibration Manager

Vibration Manager is a simple system that provides haptic feedback on Android, IOS and WebGL

***

### Audio Manager

Audio Manager is a simple system that simplifies working with sounds and music in game.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://october-studio.gitbook.io/monster-survivors-documentation/game-structure/main-menu-scene.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
