# kurtekat/shaiya-episode-6 architecture

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

- Interactive diagram: https://gitdiagram.com/kurtekat/shaiya-episode-6
- Repository: https://github.com/kurtekat/shaiya-episode-6

## Overview

This repository provides Episode 6 support for Shaiya through injected client and server-side DLLs, plus a login hook and database-facing components. The visible server entry point installs packet, user, item, and world hooks and loads game configuration; the login hook parameterizes a login procedure call. The client tree contains input, player/world, camera, chat, and skill modules, but their runtime connections are not shown in the excerpts. Several relationships are therefore omitted rather than inferred.

Main entry points: [`sdev/src/main.cpp`](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev/src/main.cpp) (Hook Startup), [`sdev-login/src/main.cpp`](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-login/src/main.cpp) (Login Hook), [`sdev-login/include/shaiya/SDatabase.cpp`](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-login/include/shaiya/SDatabase.cpp) (Login SQL API), [`sdev-client/src/dllmain.cpp`](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-client/src/dllmain.cpp) (Client DLL Entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_server["Game Server"]
  node_game_main["Hook Startup<br/>[main.cpp]"]
  node_packet_handlers["Packet Handlers<br/>[packet_gem.cpp]"]
  node_item_effects["Item Effects<br/>[item_effect.cpp]"]
  node_user_handlers["User Handlers<br/>[user.cpp]"]
  node_user_skills["User Skills<br/>[user_skill.cpp]"]
  node_world_thread["World Thread<br/>[world_thread.cpp]"]
  node_game_config["Game Configuration<br/>[Configuration.cpp]"]
end

subgraph group_login["Login Service"]
  node_login_main["Login Hook<br/>[main.cpp]"]
  node_login_db_api["Login SQL API<br/>[SDatabase.cpp]"]
end

subgraph group_client["Game Client"]
  node_client_entry["Client DLL Entry<br/>[dllmain.cpp]"]
  node_client_input["Input<br/>[CInput.h]"]
  node_client_player["Player Data<br/>[CPlayerData.h]"]
  node_client_world["World Manager<br/>[CWorldMgr.h]"]
  node_client_camera["Camera<br/>[Camera.h]"]
  node_client_chat["Chat Types<br/>[ChatType.h]"]
  node_client_skills["Skill Info<br/>[SkillInfo.h]"]
  node_client_globals["Client Globals<br/>[Static.h]"]
end

subgraph group_persistence["Database Access"]
  node_login_database[("Login Database<br/>[SDatabase.h]")]
  node_server_db_pool[("Server DB Pool<br/>[SDatabasePool.cpp]")]
  node_db_service["DB Service<br/>[main.cpp]"]
end

subgraph group_library["Numeric Library"]
  node_big_integer["Big Integer<br/>[mini-gmp.c]"]
end

node_game_user(("Game Player"))
node_login_user(("Login User"))

node_game_main -->|"installs hooks"| node_packet_handlers
node_game_main -->|"installs hook"| node_item_effects
node_game_main -->|"installs hook"| node_user_handlers
node_game_main -->|"installs hook"| node_user_skills
node_game_main -->|"installs hook"| node_world_thread
node_game_main -->|"loads data"| node_game_config
node_login_user -.->|"provides credentials"| node_login_main
node_login_main -->|"binds and executes"| node_login_db_api
node_login_db_api -->|"implements methods"| node_login_database
node_client_entry -.->|"loads entry module"| node_client_globals
node_game_user -.->|"uses client"| node_client_entry

click node_game_main "https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev/src/main.cpp"
click node_packet_handlers "https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev/src/packet_gem.cpp"
click node_item_effects "https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev/src/item_effect.cpp"
click node_user_handlers "https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev/src/user.cpp"
click node_user_skills "https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev/src/user_skill.cpp"
click node_world_thread "https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev/src/world_thread.cpp"
click node_game_config "https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev/include/shaiya/Configuration.cpp"
click node_login_main "https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-login/src/main.cpp"
click node_login_db_api "https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-login/include/shaiya/SDatabase.cpp"
click node_login_database "https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-login/include/shaiya/SDatabase.h"
click node_server_db_pool "https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev/include/shaiya/SDatabasePool.cpp"
click node_db_service "https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-db/src/main.cpp"
click node_client_entry "https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-client/src/dllmain.cpp"
click node_client_input "https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-client/include/shaiya/CInput.h"
click node_client_player "https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-client/include/shaiya/CPlayerData.h"
click node_client_world "https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-client/include/shaiya/CWorldMgr.h"
click node_client_camera "https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-client/include/shaiya/Camera.h"
click node_client_chat "https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-client/include/shaiya/ChatType.h"
click node_client_skills "https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-client/include/shaiya/SkillInfo.h"
click node_client_globals "https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-client/include/shaiya/Static.h"
click node_big_integer "https://github.com/kurtekat/shaiya-episode-6/blob/main/mini-gmp/mini-gmp.c"

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_main,node_packet_handlers,node_item_effects,node_user_handlers,node_user_skills,node_world_thread,node_game_config,node_login_user toneBlue
class node_login_main,node_login_db_api toneAmber
class node_client_entry,node_client_input,node_client_player,node_client_world,node_client_camera,node_client_chat,node_client_skills,node_client_globals toneMint
class node_login_database,node_server_db_pool,node_db_service toneRose
class node_big_integer,node_game_user toneIndigo
```

## Components

### Game Server

- [Hook Startup](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev/src/main.cpp): `sdev/src/main.cpp`
- [Packet Handlers](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev/src/packet_gem.cpp): `sdev/src/packet_gem.cpp`
- [Item Effects](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev/src/item_effect.cpp): `sdev/src/item_effect.cpp`
- [User Handlers](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev/src/user.cpp): `sdev/src/user.cpp`
- [User Skills](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev/src/user_skill.cpp): `sdev/src/user_skill.cpp`
- [World Thread](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev/src/world_thread.cpp): `sdev/src/world_thread.cpp`
- [Game Configuration](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev/include/shaiya/Configuration.cpp): `sdev/include/shaiya/Configuration.cpp`

### Login Service

- [Login Hook](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-login/src/main.cpp): `sdev-login/src/main.cpp`
- [Login SQL API](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-login/include/shaiya/SDatabase.cpp): `sdev-login/include/shaiya/SDatabase.cpp`

### Game Client

- [Client DLL Entry](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-client/src/dllmain.cpp): `sdev-client/src/dllmain.cpp`
- [Input](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-client/include/shaiya/CInput.h): `sdev-client/include/shaiya/CInput.h`
- [Player Data](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-client/include/shaiya/CPlayerData.h): `sdev-client/include/shaiya/CPlayerData.h`
- [World Manager](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-client/include/shaiya/CWorldMgr.h): `sdev-client/include/shaiya/CWorldMgr.h`
- [Camera](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-client/include/shaiya/Camera.h): `sdev-client/include/shaiya/Camera.h`
- [Chat Types](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-client/include/shaiya/ChatType.h): `sdev-client/include/shaiya/ChatType.h`
- [Skill Info](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-client/include/shaiya/SkillInfo.h): `sdev-client/include/shaiya/SkillInfo.h`
- [Client Globals](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-client/include/shaiya/Static.h): `sdev-client/include/shaiya/Static.h`

### Database Access

- [Login Database](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-login/include/shaiya/SDatabase.h): `sdev-login/include/shaiya/SDatabase.h`
- [Server DB Pool](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev/include/shaiya/SDatabasePool.cpp): `sdev/include/shaiya/SDatabasePool.cpp`
- [DB Service](https://github.com/kurtekat/shaiya-episode-6/blob/main/sdev-db/src/main.cpp): `sdev-db/src/main.cpp`

### Numeric Library

- [Big Integer](https://github.com/kurtekat/shaiya-episode-6/blob/main/mini-gmp/mini-gmp.c): `mini-gmp/mini-gmp.c`

### Other components

- **Game Player**
- **Login User**

## Connections

- Hook Startup → Packet Handlers: installs hooks (evidence: `sdev/src/main.cpp`)
- Hook Startup → Item Effects: installs hook (evidence: `sdev/src/main.cpp`)
- Hook Startup → User Handlers: installs hook (evidence: `sdev/src/main.cpp`)
- Hook Startup → User Skills: installs hook (evidence: `sdev/src/main.cpp`)
- Hook Startup → World Thread: installs hook (evidence: `sdev/src/main.cpp`)
- Hook Startup → Game Configuration: loads data (evidence: `sdev/src/main.cpp`)
- Login User → Login Hook: provides credentials
- Login Hook → Login SQL API: binds and executes (evidence: `sdev-login/src/main.cpp`)
- Login SQL API → Login Database: implements methods (evidence: `sdev-login/include/shaiya/SDatabase.cpp`)
- Client DLL Entry → Client Globals: loads entry module
- Game Player → Client DLL Entry: uses client
