Main menu

When you start PC Simulator, the first place you land is the main menu. This is where you choose what to do next—open a Save, try the Tutorial (if the game nudges you), change options, or quit back to your desktop.

The menu is part of the Menu scene in the game build. For how saves are stored and edited outside the game, see Save and Save Editor; for oddities and easter eggs that sometimes touch the menu flow, see Secrets and Achievements:The Hidden Room.

At a glance
Feels like A hub: pick a save, learn the ropes, or adjust the game before you play
Saves Your .pc files — see Save
Money vs crypto In-game cash and Bitcoin (mining apps tie into EZ Mining)
Small touch The title blinks, a bit like a cursor

What you can do here

  • Load a game — Your saves show up as a list (newest usually first). Hardcore runs may show a little marker so you don’t mix them up with normal runs.
  • Tutorial — If you haven’t seen the latest tutorial revision, the game may suggest it. Accepting marks that version as “seen” so it won’t keep asking every launch.
  • Settings — Things like language, resolution, and frame rate options get applied early so the menu already matches how you like to play.
  • Volume — Master volume from your last session is restored before you hear much audio.
  • Import a save — You can pull in a .pc file from somewhere else (handy if you’re Modding or sharing with friends). Bad or incompatible files show a clear error instead of silently breaking.
  • Quit — Closes the game on builds that support it (in the editor it often does nothing visible).

How starting a game works (simple)

  1. You pick a save row (or the game loads a preset / example file).
  2. The game stores “use this file” for the next scene.
  3. You’re sent to the room that save belongs to—not every save uses the same room layout.

Some Secrets or special triggers load an example file (for instance content tied to Achievements:The Hidden Room). Under the hood that’s the same pipeline as opening a normal Save, just reading from a different folder.

In-depth

This section is for readers who want exact behaviour and script names. It matches the decompiled / project logic; if you’re digging through assets, see Decompile and Modding.

Scripts and roles

Script Role
MainMenu Singleton (MainMenu.Instance). Initializes Localization (below), restores FPS/resolution, handles tutorial version gating, blinks the title, loads scenes and example files, calls Application.Quit.
MenuManager Stack of active menu GameObject pages. ShowMenu(string) finds a child whose hierarchy name matches the string (e.g. Loading). Back pops one level. HideMenu toggles the top without popping. Optional click sounds.
FileMenu Scans the save directory for .pc files, sorts by last write time, builds UI rows, supports rename/metadata via FileInformation, delete, and import through a native file picker.

Localization

On Awake, MainMenu calls Localization.CreateContent(), sets language from PlayerPrefs "Language" or maps Application.systemLanguage to a short code, and subscribes to language changes to persist the choice. See also the standalone page Localization for strings and language list detail if you document it there.

Tutorial gating

PlayerPrefs.GetInt("TutorialVersion", -1) is compared to an editor field tutorialVersion. If the stored value is lower, guideToTutorial is shown. Tutorial() writes the current version and loads the "Tutorial" scene by name.

Loading screen

Any menu-driven scene load shows the Loading page first, then runs an async load coroutine: progress is mapped from Unity’s 0…0.9 range to a 0–100% display; at 0.9 it shows 100%, waits 0.5s, then allows scene activation. See Loading screen for a dedicated write-up if you split it out.

Save load path

LoadFile(DataLoader loader) assigns SaveManager.Loader = loader and loads build index startRoomSceneIndex + GameData.room. The base index is set in the inspector so save data only needs a small room id. Full format notes belong on Save.

Example / preset loads

LoadExample(string name) reads StreamingAssets/Examples/{name}.pc. On Android/WebGL it uses UnityWebRequest; elsewhere File.ReadAllText. Parsed with DataLoader.LoadFromString, then the same LoadFile as user saves. Document bundled filenames on StreamingAssets if you list them.

File import (FileMenu.Import)

Native picker filtered to .pc, read permission check, DataLoader.LoadFromPath() validation (failure message mentions compatibility with version 1.7.0+), then File.Copy into the save folder via SaveUtility.GetNewPath, destroy old rows, rescan folder.

Related systems

Data flow (quick reference)

Trigger What runs
Click save name MainMenu.LoadFileSaveManager.Loader → async startRoomSceneIndex + room
Example / secret preset LoadExample from streaming path → LoadFile (same as save)
Any menu scene transition ShowMenu("Loading") then async coroutine
Start tutorial Update TutorialVersionLoadScene("Tutorial")

See also

Pages to add (red links on purpose): Tutorial · Localization · Loading screen · StreamingAssets · Pause menu