# jorkat/lunarose architecture

> Architecture diagram of the GitHub repository jorkat/lunarose, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jorkat/lunarose
- Repository: https://github.com/jorkat/lunarose

## Overview

LunaROSE is a custom iROSE multiplayer game project. Players use the client to explore, inspect monsters and items, chat, manage skills and titles, and trade; the game server controls shared gameplay and reward content. The README establishes the major feature relationships, while the sampled code shows client settings persistence and server achievement/title updates. Several feature-specific implementations are not included in the excerpts, so those components are represented at their existing enclosing directories rather than with guessed source files.

Main entry points: [`Sources/Client/CApplication.cpp`](https://github.com/jorkat/lunarose/blob/main/Sources/Client/CApplication.cpp) (Game Client), [`Sources/Server/SHO_GS/SHO_GS_EXE/main.cpp`](https://github.com/jorkat/lunarose/blob/main/Sources/Server/SHO_GS/SHO_GS_EXE/main.cpp) (Game Server), [`Sources/engine/include/zz_system.h`](https://github.com/jorkat/lunarose/blob/main/Sources/engine/include/zz_system.h) (Engine System), [`Sources/Client/Interface`](https://github.com/jorkat/lunarose/tree/main/Sources/Client/Interface) (Bag Preview)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Game Client"]
  node_client_app["Game Client<br/>[CApplication.cpp]"]
  node_monster_db["Monster Database"]
  node_bag_preview["Bag Preview"]
  node_item_tooltips["Item Tooltips"]
  node_skill_ui["Skill UI"]
  node_chat_links["Chat Item Links<br/>[CViewMSG.cpp]"]
  node_personal_shop["Personal Shop"]
  node_client_storage["Client Settings<br/>[CClientStorage.cpp]"]
  node_patch_manager["Terrain Patches<br/>[PatchManager.cpp]"]
end

subgraph group_server["Game Servers"]
  node_achievement["Achievement System"]
  node_game_server["Game Server<br/>[main.cpp]"]
  node_login_server["Login Server<br/>[main.cpp]"]
  node_world_server["World Server<br/>[main.cpp]"]
end

subgraph group_engine["Client Engine"]
  node_engine_system["Engine System<br/>[zz_system.h]"]
  node_scene_manager["Scene Manager<br/>[zz_manager.cpp]"]
  node_sound_manager["Sound Manager"]
end

node_player(("Player"))

node_player -->|"plays through"| node_client_app
node_client_app -->|"shows monster data"| node_monster_db
node_client_app -->|"previews rewards"| node_bag_preview
node_client_app -->|"shows item details"| node_item_tooltips
node_client_app -->|"manages skills"| node_skill_ui
node_client_app -->|"renders item links"| node_chat_links
node_client_app -->|"manages shop"| node_personal_shop
node_player -.->|"earns titles"| node_achievement
node_client_app -.->|"stores preferences"| node_client_storage
node_game_server -.->|"updates achievements"| node_achievement
node_game_server -->|"controls rewards"| node_bag_preview
node_login_server -.->|"supports login"| node_game_server
node_world_server -.->|"supports world play"| node_game_server
node_client_app -.->|"uses engine"| node_engine_system
node_engine_system -->|"manages scene nodes"| node_scene_manager
node_engine_system -.->|"initializes audio"| node_sound_manager
node_client_app -.->|"renders terrain"| node_patch_manager

click node_client_app "https://github.com/jorkat/lunarose/blob/main/Sources/Client/CApplication.cpp"
click node_monster_db "https://github.com/jorkat/lunarose/blob/main/Sources/Client/CMonsterListItem.cpp"
click node_bag_preview "https://github.com/jorkat/lunarose/tree/main/Sources/Client/Interface"
click node_item_tooltips "https://github.com/jorkat/lunarose/tree/main/Sources/Client/Interface"
click node_skill_ui "https://github.com/jorkat/lunarose/tree/main/Sources/Client/Interface"
click node_chat_links "https://github.com/jorkat/lunarose/blob/main/Sources/Client/CViewMSG.cpp"
click node_personal_shop "https://github.com/jorkat/lunarose/blob/main/Sources/Client/Interface/PersonalStoreManager.cpp"
click node_client_storage "https://github.com/jorkat/lunarose/blob/main/Sources/Client/CClientStorage.cpp"
click node_achievement "https://github.com/jorkat/lunarose/blob/main/Sources/Server/SHO_GS/SHO_GS_LIB/Common/AchievementManager.cpp"
click node_game_server "https://github.com/jorkat/lunarose/blob/main/Sources/Server/SHO_GS/SHO_GS_EXE/main.cpp"
click node_login_server "https://github.com/jorkat/lunarose/blob/main/Sources/Server/SHO_LS/SHO_LS_EXE/main.cpp"
click node_world_server "https://github.com/jorkat/lunarose/blob/main/Sources/Server/SHO_WS/SHO_WS_EXE/main.cpp"
click node_engine_system "https://github.com/jorkat/lunarose/blob/main/Sources/engine/include/zz_system.h"
click node_scene_manager "https://github.com/jorkat/lunarose/blob/main/Sources/engine/src/zz_manager.cpp"
click node_sound_manager "https://github.com/jorkat/lunarose/blob/main/Sources/engine/src/zz_manager_sound.cpp"
click node_patch_manager "https://github.com/jorkat/lunarose/blob/main/Sources/Client/Terrain/PatchManager.cpp"

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_client_app,node_monster_db,node_bag_preview,node_item_tooltips,node_skill_ui,node_chat_links,node_personal_shop,node_client_storage,node_patch_manager toneBlue
class node_achievement,node_game_server,node_login_server,node_world_server toneAmber
class node_engine_system,node_scene_manager,node_sound_manager toneMint
class node_player toneIndigo
```

## Components

### Game Client

- [Game Client](https://github.com/jorkat/lunarose/blob/main/Sources/Client/CApplication.cpp): `Sources/Client/CApplication.cpp`
- [Monster Database](https://github.com/jorkat/lunarose/blob/main/Sources/Client/CMonsterListItem.cpp): `Sources/Client/CMonsterListItem.cpp`
- [Bag Preview](https://github.com/jorkat/lunarose/tree/main/Sources/Client/Interface): `Sources/Client/Interface`
- [Item Tooltips](https://github.com/jorkat/lunarose/tree/main/Sources/Client/Interface): `Sources/Client/Interface`
- [Skill UI](https://github.com/jorkat/lunarose/tree/main/Sources/Client/Interface): `Sources/Client/Interface`
- [Chat Item Links](https://github.com/jorkat/lunarose/blob/main/Sources/Client/CViewMSG.cpp): `Sources/Client/CViewMSG.cpp`
- [Personal Shop](https://github.com/jorkat/lunarose/blob/main/Sources/Client/Interface/PersonalStoreManager.cpp): `Sources/Client/Interface/PersonalStoreManager.cpp`
- [Client Settings](https://github.com/jorkat/lunarose/blob/main/Sources/Client/CClientStorage.cpp): `Sources/Client/CClientStorage.cpp`
- [Terrain Patches](https://github.com/jorkat/lunarose/blob/main/Sources/Client/Terrain/PatchManager.cpp): `Sources/Client/Terrain/PatchManager.cpp`

### Game Servers

- [Achievement System](https://github.com/jorkat/lunarose/blob/main/Sources/Server/SHO_GS/SHO_GS_LIB/Common/AchievementManager.cpp): `Sources/Server/SHO_GS/SHO_GS_LIB/Common/AchievementManager.cpp`
- [Game Server](https://github.com/jorkat/lunarose/blob/main/Sources/Server/SHO_GS/SHO_GS_EXE/main.cpp): `Sources/Server/SHO_GS/SHO_GS_EXE/main.cpp`
- [Login Server](https://github.com/jorkat/lunarose/blob/main/Sources/Server/SHO_LS/SHO_LS_EXE/main.cpp): `Sources/Server/SHO_LS/SHO_LS_EXE/main.cpp`
- [World Server](https://github.com/jorkat/lunarose/blob/main/Sources/Server/SHO_WS/SHO_WS_EXE/main.cpp): `Sources/Server/SHO_WS/SHO_WS_EXE/main.cpp`

### Client Engine

- [Engine System](https://github.com/jorkat/lunarose/blob/main/Sources/engine/include/zz_system.h): `Sources/engine/include/zz_system.h`
- [Scene Manager](https://github.com/jorkat/lunarose/blob/main/Sources/engine/src/zz_manager.cpp): `Sources/engine/src/zz_manager.cpp`
- [Sound Manager](https://github.com/jorkat/lunarose/blob/main/Sources/engine/src/zz_manager_sound.cpp): `Sources/engine/src/zz_manager_sound.cpp`

### Other components

- **Player**

## Connections

- Player → Game Client: plays through
- Game Client → Monster Database: shows monster data
- Game Client → Bag Preview: previews rewards
- Game Client → Item Tooltips: shows item details
- Game Client → Skill UI: manages skills
- Game Client → Chat Item Links: renders item links
- Game Client → Personal Shop: manages shop
- Player → Achievement System: earns titles (evidence: `Sources/Server/SHO_GS/SHO_GS_LIB/Common/AchievementManager.cpp`)
- Game Client → Client Settings: stores preferences (evidence: `Sources/Client/CClientStorage.cpp`)
- Game Server → Achievement System: updates achievements (evidence: `Sources/Server/SHO_GS/SHO_GS_LIB/Common/AchievementManager.cpp`)
- Game Server → Bag Preview: controls rewards
- Login Server → Game Server: supports login
- World Server → Game Server: supports world play
- Game Client → Engine System: uses engine
- Engine System → Scene Manager: manages scene nodes (evidence: `Sources/engine/src/zz_manager.cpp`)
- Engine System → Sound Manager: initializes audio (evidence: `Sources/engine/src/zz_manager_sound.cpp`)
- Game Client → Terrain Patches: renders terrain
