# junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby architecture

> Architecture diagram of the GitHub repository junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby
- Repository: https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby

## Overview

This repository is the JavaScript runtime for GDevelop games: runtime data describes a game, runtime and scene components manage its execution, and renderers present it while players provide input. The principal workflow runs a game through scenes, layers, and objects; event-tool modules expose game actions such as object, camera, input, sound, variable, and storage operations. Resource managers load media and other assets for rendering and gameplay. The README is empty, and several runtime files were not sampled, so inferred workflow links are marked dashed rather than presented as verified calls.

Main entry points: [`runtimescene.js`](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/runtimescene.js) (Runtime scene), [`ResourceLoader.js`](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/ResourceLoader.js) (Resource loader), [`runtimegame.js`](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/runtimegame.js) (Runtime game), [`runtimeobject.js`](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/runtimeobject.js) (Runtime object)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_execution["Game execution"]
  node_game_data["Game data<br/>[data.js]"]
  node_runtime_entry["Runtime entry<br/>[code0.js]"]
  node_game["Runtime game<br/>[runtimegame.js]"]
  node_scene_stack["Scene stack<br/>[scenestack.js]"]
  node_scene["Runtime scene<br/>[runtimescene.js]"]
  node_layer["Runtime layer<br/>[RuntimeLayer.js]"]
  node_instance_container["Instances"]
  node_object["Runtime object<br/>[runtimeobject.js]"]
  node_custom_object["Custom objects"]
  node_async_tasks["Async tasks"]
  node_spatial_index["Spatial index<br/>[rbush.js]"]
end

subgraph group_events["Events and input"]
  node_input["Input manager<br/>[inputmanager.js]"]
  node_object_tools["Object actions<br/>[objecttools.js]"]
  node_scene_tools["Scene actions"]
  node_sound_tools["Sound actions<br/>[soundtools.js]"]
  node_storage_tools["Storage actions<br/>[storagetools.js]"]
end

subgraph group_assets["Assets and services"]
  node_resource_loader["Resource loader<br/>[ResourceLoader.js]"]
  node_json_manager["JSON manager<br/>[jsonmanager.js]"]
  node_sound_manager["Sound manager"]
  node_model_manager["3D models<br/>[Model3DManager.js]"]
  node_image_manager["Image manager"]
  node_font_manager["Font manager"]
  node_storage[("Browser storage")]
end

subgraph group_presentation["Rendering"]
  node_renderer["Game renderer"]
  node_layer_renderer["Layer renderer"]
  node_pixi["PIXI engine<br/>[pixi.js]"]
end

node_player(("Player"))

node_player -.->|"provides input"| node_input
node_runtime_entry -.->|"starts"| node_game
node_game_data -.->|"configures"| node_game
node_game -.->|"manages scenes"| node_scene_stack
node_scene_stack -.->|"selects scene"| node_scene
node_scene -.->|"contains layers"| node_layer
node_layer -.->|"manages instances"| node_instance_container
node_instance_container -.->|"holds objects"| node_object
node_object -.->|"queries bounds"| node_spatial_index
node_object -.->|"supports extensions"| node_custom_object
node_scene -.->|"updates tasks"| node_async_tasks
node_input -.->|"drives actions"| node_object_tools
node_scene -.->|"serves actions"| node_scene_tools
node_sound_tools -.->|"controls audio"| node_sound_manager
node_storage_tools -->|"reads and writes"| node_storage
node_resource_loader -->|"provides resources"| node_json_manager
node_resource_loader -->|"provides resources"| node_model_manager
node_resource_loader -->|"provides resources"| node_image_manager
node_resource_loader -->|"provides resources"| node_font_manager
node_game -.->|"renders game"| node_renderer
node_renderer -.->|"renders layers"| node_layer_renderer
node_layer_renderer -.->|"draws with"| node_pixi
node_layer_renderer -.->|"uses textures"| node_image_manager
node_scene -.->|"reads input"| node_input

click node_game_data "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/data.js"
click node_runtime_entry "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/code0.js"
click node_game "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/runtimegame.js"
click node_scene_stack "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/scenestack.js"
click node_scene "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/runtimescene.js"
click node_layer "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/RuntimeLayer.js"
click node_instance_container "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/RuntimeInstanceContainer.js"
click node_object "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/runtimeobject.js"
click node_custom_object "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/CustomRuntimeObject.js"
click node_async_tasks "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/AsyncTasksManager.js"
click node_input "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/inputmanager.js"
click node_object_tools "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/events-tools/objecttools.js"
click node_scene_tools "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/events-tools/runtimescenetools.js"
click node_sound_tools "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/events-tools/soundtools.js"
click node_storage_tools "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/events-tools/storagetools.js"
click node_resource_loader "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/ResourceLoader.js"
click node_json_manager "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/jsonmanager.js"
click node_sound_manager "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/howler-sound-manager/howler-sound-manager.js"
click node_model_manager "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/Model3DManager.js"
click node_image_manager "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/pixi-renderers/pixi-image-manager.js"
click node_font_manager "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/fontfaceobserver-font-manager/fontfaceobserver-font-manager.js"
click node_renderer "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/pixi-renderers/runtimegame-pixi-renderer.js"
click node_layer_renderer "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/pixi-renderers/layer-pixi-renderer.js"
click node_pixi "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/pixi-renderers/pixi.js"
click node_spatial_index "https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/libs/rbush.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_game_data,node_runtime_entry,node_game,node_scene_stack,node_scene,node_layer,node_instance_container,node_object,node_custom_object,node_async_tasks,node_spatial_index toneBlue
class node_input,node_object_tools,node_scene_tools,node_sound_tools,node_storage_tools toneAmber
class node_resource_loader,node_json_manager,node_sound_manager,node_model_manager,node_image_manager,node_font_manager,node_storage toneMint
class node_renderer,node_layer_renderer,node_pixi toneRose
class node_player toneIndigo
```

## Components

### Game execution

- [Game data](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/data.js): `data.js`
- [Runtime entry](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/code0.js): `code0.js`
- [Runtime game](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/runtimegame.js): `runtimegame.js`
- [Scene stack](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/scenestack.js): `scenestack.js`
- [Runtime scene](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/runtimescene.js): `runtimescene.js`
- [Runtime layer](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/RuntimeLayer.js): `RuntimeLayer.js`
- [Instances](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/RuntimeInstanceContainer.js): `RuntimeInstanceContainer.js`
- [Runtime object](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/runtimeobject.js): `runtimeobject.js`
- [Custom objects](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/CustomRuntimeObject.js): `CustomRuntimeObject.js`
- [Async tasks](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/AsyncTasksManager.js): `AsyncTasksManager.js`
- [Spatial index](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/libs/rbush.js): `libs/rbush.js`

### Events and input

- [Input manager](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/inputmanager.js): `inputmanager.js`
- [Object actions](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/events-tools/objecttools.js): `events-tools/objecttools.js`
- [Scene actions](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/events-tools/runtimescenetools.js): `events-tools/runtimescenetools.js`
- [Sound actions](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/events-tools/soundtools.js): `events-tools/soundtools.js`
- [Storage actions](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/events-tools/storagetools.js): `events-tools/storagetools.js`

### Assets and services

- [Resource loader](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/ResourceLoader.js): `ResourceLoader.js`
- [JSON manager](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/jsonmanager.js): `jsonmanager.js`
- [Sound manager](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/howler-sound-manager/howler-sound-manager.js): `howler-sound-manager/howler-sound-manager.js`
- [3D models](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/Model3DManager.js): `Model3DManager.js`
- [Image manager](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/pixi-renderers/pixi-image-manager.js): `pixi-renderers/pixi-image-manager.js`
- [Font manager](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/fontfaceobserver-font-manager/fontfaceobserver-font-manager.js): `fontfaceobserver-font-manager/fontfaceobserver-font-manager.js`
- **Browser storage**

### Rendering

- [Game renderer](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/pixi-renderers/runtimegame-pixi-renderer.js): `pixi-renderers/runtimegame-pixi-renderer.js`
- [Layer renderer](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/pixi-renderers/layer-pixi-renderer.js): `pixi-renderers/layer-pixi-renderer.js`
- [PIXI engine](https://github.com/junerjrtulan10-lgtm/wrath-of-sentinelia-main-menu-and-lobby/blob/main/pixi-renderers/pixi.js): `pixi-renderers/pixi.js`

### Other components

- **Player**

## Connections

- Player → Input manager: provides input
- Runtime entry → Runtime game: starts
- Game data → Runtime game: configures
- Runtime game → Scene stack: manages scenes
- Scene stack → Runtime scene: selects scene
- Runtime scene → Runtime layer: contains layers
- Runtime layer → Instances: manages instances
- Instances → Runtime object: holds objects
- Runtime object → Spatial index: queries bounds
- Runtime object → Custom objects: supports extensions
- Runtime scene → Async tasks: updates tasks
- Input manager → Object actions: drives actions
- Runtime scene → Scene actions: serves actions
- Sound actions → Sound manager: controls audio
- Storage actions → Browser storage: reads and writes (evidence: `events-tools/storagetools.js`)
- Resource loader → JSON manager: provides resources (evidence: `jsonmanager.js`)
- Resource loader → 3D models: provides resources (evidence: `Model3DManager.js`)
- Resource loader → Image manager: provides resources (evidence: `pixi-renderers/pixi-image-manager.js`)
- Resource loader → Font manager: provides resources (evidence: `fontfaceobserver-font-manager/fontfaceobserver-font-manager.js`)
- Runtime game → Game renderer: renders game
- Game renderer → Layer renderer: renders layers
- Layer renderer → PIXI engine: draws with
- Layer renderer → Image manager: uses textures
- Runtime scene → Input manager: reads input
