Table of Contents

Class GameManager

Namespace
GrindFest
Assembly
GrindFest.dll
[DefaultExecutionOrder(-100)]
public class GameManager : Singleton<GameManager>
Inheritance
object
GameManager
Inherited Members

Fields

AreaTriggerMask
AutoPlay
AutoPlayHeroPrefabs
BlackScreen
CachedFrustumPlanes
CharactersLayerMask
ClearWeather
CloudModuleBindings
CombatLayerMask
Components
CorpseLayer
CriticalHitEffect
CursorHotspot
DarkHitEffect
DefaultLayerMask
DisabledContainer
DiscordInviteCode
DiscordInviteLink
DocumentationUrl
DontSpawnMonsters
DungeonLayer
DungeonLayerMask
EventSystem
FactionsContainer
FireHitEffect
FloorLayerMask
ForceSeed
GameMode
GameUI
GoldUI
GroundLayerMask
HandleLayer
HandleLayerMask
HeroCamera
HeroLayer
HeroLayerMask
HeroNameRegex
HeroSelectionCamera
HitEffect
IceHitEffect
InitialFov
InteractableLayerMask
InteractiveLayerMask

Layer mask for all interactive objects, including monsters, items, interactables, doors, heroes, handles, inventories, and items in inventory.

InventoryLayer
InventoryLayerMask
IsAwake
IsLoaded
IsQuitting
ItemEquippedLayer
ItemEquippedLayerMask
ItemInInventoryLayer
ItemLayer
ItemLayerMask
LightHitEffect
LightningHitEffect
MainMenuUI
MidiOutputDevice
MidiOutputDeviceName
MonsterLayer
MultiplayerRole
OldWeather
OverlapSphereBuffer
Overworld
PlayerInput
PoisonHitEffect
Random
RoomShapes
SaveManager
Seed
SingleColliderBuffer
SpawnPoints
StashPrefab
SteamSessionTicket
StoryTriggerMask
TerrainLayerMask
TileAppliedTimeoutSeconds

Watchdog for the spawn terrain tile: how long the boot waits before carrying on without it.

A watchdog, not a target. The tile is produced by MapMagic, which on WebGL has to generate inline on the main thread (no worker threads exist in a browser - see Awake, where its job queue is switched off multithreading) - measured 2026-09-20: 45 s was not enough for the first 200x200 tile, so the boot entered the game without terrain. Long enough to give inline generation a real chance, still finite, because an unbounded wait here is a loading screen the player can never leave.

TreeLayerMask
UILayerMask
UIParent
UniStormSystem
UseAutoPlayHeroPrefabCount
WallLayerMask
WaterLayer
WaterLayerMask
_editorProcesses
classes
factions
mapMagic

Properties

BaseGoldCap
BaseLevelCap
BaseSkillPointsPerLevel
BaseStatPointsPerLevel
CursedCoinProbability
DurabilityDamageChance
HitRecoveryCooldown
HitRecoveryThreshold
InventoryZ
IsGameStarted

Reactive view of _isGameStarted; raises OnIsGameStartedChanged when the value actually changes.

IsolatedUpdateInterval
LevelBaseExperience
MaxZoomFov
MinUnequipFov
MonsterSpawnRadius
OfflineInventoryLimit
OfflineReportInterval
Party
RandomSynchronized60
SpawnDistance

Methods

ApplyFrameRateSettings()
CaptureScreenshot()
ChangeGameMode(GameMode)
CloseCharacterScreen()

Close the OneJS Character Screen overlay. Safe no-op if the script engine or global hook is not yet available.

CreateAndSelectRandomHero()
GetParentBasedOnPosition(Vector3)
GoToMainMenu()
LoadSoloHeroes()
NewGame()
OpenCharacterScreen()

Open the OneJS Character Screen overlay. All callers (HeroController double-click, the legacy UICharacterScreen.OnEnable bridge, inspector-wired buttons via UICharacterScreen.Show) should funnel through this method so there is a single point of entry to the new UI.

OpenPrestigeTree()

Open the OneJS Prestige Tree (Grimoire) overlay. Bridges C# UGUI buttons (death screen, etc.) to the global JS handler registered by App.tsx (__grindfest.openPrestigeTree). Safe to call before the script engine is initialised — silently no-ops if the engine or the global hook is missing.

ResetWorld()
SetDeathReplay(bool)
SetParentBasedOnPosition(Transform)
StartGame()
TryGoSinglePlayer()

If you are not connected yet, turns of the network and starts the single player

WaitForInitialization()
WaitForTileAppliedAndRefreshAsync(MapMagicObject)

Events

OnIsGameStartedChanged