# giean/newbwotlk architecture

> Architecture diagram of the GitHub repository giean/newbwotlk, 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/giean/newbwotlk
- Repository: https://github.com/giean/newbwotlk

## Overview

NewbCORE is a C++ World of Warcraft: Wrath of the Lich King emulator derived from TrinityCore. A client-facing session is handled by the world server, which runs the game world and its gameplay systems; the auth server provides a separate login service. Game state and character data are backed by database pools, while map and collision components support world simulation. The README describes the product broadly, and the sampled sources show only parts of the runtime; unsampled subsystem links are omitted rather than inferred.

Main entry points: [`src/server/game/Maps/MapManager.cpp`](https://github.com/giean/newbwotlk/blob/master/src/server/game/Maps/MapManager.cpp) (Map Manager), [`src/server/database/Database/DatabaseEnv.h`](https://github.com/giean/newbwotlk/blob/master/src/server/database/Database/DatabaseEnv.h) (Database Pools), [`src/server/game/Handlers/QueryHandler.cpp`](https://github.com/giean/newbwotlk/blob/master/src/server/game/Handlers/QueryHandler.cpp) (Query Handlers), [`src/server/worldserver/Main.cpp`](https://github.com/giean/newbwotlk/blob/master/src/server/worldserver/Main.cpp) (World Server)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Server Runtime"]
  node_auth["Auth Server<br/>[Main.cpp]"]
  node_worldserver["World Server<br/>[Main.cpp]"]
  node_session["World Session<br/>[WorldSession.h]"]
end

subgraph group_gameplay["Game World"]
  node_world["World Manager<br/>[World.h]"]
  node_player["Player State<br/>[Player.h]"]
  node_unit["Unit Combat<br/>[Unit.h]"]
  node_queries["Query Handlers<br/>[QueryHandler.cpp]"]
  node_objectaccessor["Object Access<br/>[ObjectAccessor.h]"]
  node_objectmgr["Object Manager<br/>[ObjectMgr.h]"]
end

subgraph group_persistence["Persistence"]
  node_loot["Stored Loot"]
  node_database[("Database Pools<br/>[DatabaseEnv.h]")]
end

subgraph group_worlddata["World Data"]
  node_maps["Map Manager<br/>[MapManager.cpp]"]
  node_vmap["VMap Collision<br/>[VMapManager2.cpp]"]
  node_mmap["MMap Navigation<br/>[MMapManager.cpp]"]
  node_navquery["Navmesh Queries"]
end

subgraph group_shared["Shared Foundations"]
  node_common["Common Types<br/>[Common.h]"]
  node_define["Platform Defines<br/>[Define.h]"]
  node_logging["Logging<br/>[Log.h]"]
  node_guid["Object GUIDs<br/>[ObjectGuid.h]"]
  node_memory["Memory Management<br/>[MemoryManager.h]"]
end

node_client(("Game Client"))

node_client -.->|"connects to"| node_worldserver
node_worldserver -.->|"serves sessions"| node_session
node_worldserver -->|"initializes"| node_database
node_worldserver -->|"initializes"| node_maps
node_session -->|"dispatches queries"| node_queries
node_queries -->|"queries"| node_database
node_queries -->|"looks up data"| node_objectmgr
node_queries -->|"looks up maps"| node_maps
node_queries -->|"looks up objects"| node_objectaccessor
node_maps -->|"loads state"| node_database
node_maps -->|"accesses objects"| node_objectaccessor
node_maps -->|"uses world data"| node_objectmgr
node_loot -->|"loads and saves"| node_database
node_loot -->|"allows looters"| node_player
node_loot -->|"uses item data"| node_objectmgr
node_vmap -.->|"supports map collision"| node_maps
node_mmap -.->|"supports navigation"| node_maps
node_navquery -.->|"queries navmesh"| node_mmap
node_world -.->|"manages players"| node_player
node_player -->|"inherits behavior"| node_unit
node_objectaccessor -->|"indexes by GUID"| node_guid
node_common -->|"includes"| node_define
node_logging -->|"includes"| node_define
node_database -->|"includes"| node_define
node_memory -.->|"uses platform definitions"| node_define
node_auth -.->|"authenticates accounts"| node_database

click node_auth "https://github.com/giean/newbwotlk/blob/master/src/server/authserver/Main.cpp"
click node_worldserver "https://github.com/giean/newbwotlk/blob/master/src/server/worldserver/Main.cpp"
click node_session "https://github.com/giean/newbwotlk/blob/master/src/server/game/Server/WorldSession.h"
click node_world "https://github.com/giean/newbwotlk/blob/master/src/server/game/World/World.h"
click node_player "https://github.com/giean/newbwotlk/blob/master/src/server/game/Entities/Player/Player.h"
click node_unit "https://github.com/giean/newbwotlk/blob/master/src/server/game/Entities/Unit/Unit.h"
click node_queries "https://github.com/giean/newbwotlk/blob/master/src/server/game/Handlers/QueryHandler.cpp"
click node_maps "https://github.com/giean/newbwotlk/blob/master/src/server/game/Maps/MapManager.cpp"
click node_vmap "https://github.com/giean/newbwotlk/blob/master/src/common/Collision/Management/VMapManager2.cpp"
click node_mmap "https://github.com/giean/newbwotlk/blob/master/src/common/Collision/Management/MMapManager.cpp"
click node_navquery "https://github.com/giean/newbwotlk/blob/master/dep/recastnavigation/Detour/Source/DetourNavMeshQuery.cpp"
click node_objectaccessor "https://github.com/giean/newbwotlk/blob/master/src/server/game/Globals/ObjectAccessor.h"
click node_objectmgr "https://github.com/giean/newbwotlk/blob/master/src/server/game/Globals/ObjectMgr.h"
click node_loot "https://github.com/giean/newbwotlk/blob/master/src/server/game/Loot/LootItemStorage.cpp"
click node_database "https://github.com/giean/newbwotlk/blob/master/src/server/database/Database/DatabaseEnv.h"
click node_common "https://github.com/giean/newbwotlk/blob/master/src/common/Common.h"
click node_define "https://github.com/giean/newbwotlk/blob/master/src/common/Define.h"
click node_logging "https://github.com/giean/newbwotlk/blob/master/src/common/Logging/Log.h"
click node_guid "https://github.com/giean/newbwotlk/blob/master/src/server/game/Entities/Object/ObjectGuid.h"
click node_memory "https://github.com/giean/newbwotlk/blob/master/dep/g3dlite/include/G3D/MemoryManager.h"

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_auth,node_worldserver,node_session,node_client toneBlue
class node_world,node_player,node_unit,node_queries,node_objectaccessor,node_objectmgr toneAmber
class node_loot,node_database toneMint
class node_maps,node_vmap,node_mmap,node_navquery toneRose
class node_common,node_define,node_logging,node_guid,node_memory toneIndigo
```

## Components

### Server Runtime

- [Auth Server](https://github.com/giean/newbwotlk/blob/master/src/server/authserver/Main.cpp): `src/server/authserver/Main.cpp`
- [World Server](https://github.com/giean/newbwotlk/blob/master/src/server/worldserver/Main.cpp): `src/server/worldserver/Main.cpp`
- [World Session](https://github.com/giean/newbwotlk/blob/master/src/server/game/Server/WorldSession.h): `src/server/game/Server/WorldSession.h`

### Game World

- [World Manager](https://github.com/giean/newbwotlk/blob/master/src/server/game/World/World.h): `src/server/game/World/World.h`
- [Player State](https://github.com/giean/newbwotlk/blob/master/src/server/game/Entities/Player/Player.h): `src/server/game/Entities/Player/Player.h`
- [Unit Combat](https://github.com/giean/newbwotlk/blob/master/src/server/game/Entities/Unit/Unit.h): `src/server/game/Entities/Unit/Unit.h`
- [Query Handlers](https://github.com/giean/newbwotlk/blob/master/src/server/game/Handlers/QueryHandler.cpp): `src/server/game/Handlers/QueryHandler.cpp`
- [Object Access](https://github.com/giean/newbwotlk/blob/master/src/server/game/Globals/ObjectAccessor.h): `src/server/game/Globals/ObjectAccessor.h`
- [Object Manager](https://github.com/giean/newbwotlk/blob/master/src/server/game/Globals/ObjectMgr.h): `src/server/game/Globals/ObjectMgr.h`

### Persistence

- [Stored Loot](https://github.com/giean/newbwotlk/blob/master/src/server/game/Loot/LootItemStorage.cpp): `src/server/game/Loot/LootItemStorage.cpp`
- [Database Pools](https://github.com/giean/newbwotlk/blob/master/src/server/database/Database/DatabaseEnv.h): `src/server/database/Database/DatabaseEnv.h`

### World Data

- [Map Manager](https://github.com/giean/newbwotlk/blob/master/src/server/game/Maps/MapManager.cpp): `src/server/game/Maps/MapManager.cpp`
- [VMap Collision](https://github.com/giean/newbwotlk/blob/master/src/common/Collision/Management/VMapManager2.cpp): `src/common/Collision/Management/VMapManager2.cpp`
- [MMap Navigation](https://github.com/giean/newbwotlk/blob/master/src/common/Collision/Management/MMapManager.cpp): `src/common/Collision/Management/MMapManager.cpp`
- [Navmesh Queries](https://github.com/giean/newbwotlk/blob/master/dep/recastnavigation/Detour/Source/DetourNavMeshQuery.cpp): `dep/recastnavigation/Detour/Source/DetourNavMeshQuery.cpp`

### Shared Foundations

- [Common Types](https://github.com/giean/newbwotlk/blob/master/src/common/Common.h): `src/common/Common.h`
- [Platform Defines](https://github.com/giean/newbwotlk/blob/master/src/common/Define.h): `src/common/Define.h`
- [Logging](https://github.com/giean/newbwotlk/blob/master/src/common/Logging/Log.h): `src/common/Logging/Log.h`
- [Object GUIDs](https://github.com/giean/newbwotlk/blob/master/src/server/game/Entities/Object/ObjectGuid.h): `src/server/game/Entities/Object/ObjectGuid.h`
- [Memory Management](https://github.com/giean/newbwotlk/blob/master/dep/g3dlite/include/G3D/MemoryManager.h): `dep/g3dlite/include/G3D/MemoryManager.h`

### Other components

- **Game Client**

## Connections

- Game Client → World Server: connects to
- World Server → World Session: serves sessions
- World Server → Database Pools: initializes (evidence: `src/server/worldserver/Main.cpp`)
- World Server → Map Manager: initializes (evidence: `src/server/worldserver/Main.cpp`)
- World Session → Query Handlers: dispatches queries (evidence: `src/server/game/Handlers/QueryHandler.cpp`)
- Query Handlers → Database Pools: queries (evidence: `src/server/game/Handlers/QueryHandler.cpp`)
- Query Handlers → Object Manager: looks up data (evidence: `src/server/game/Handlers/QueryHandler.cpp`)
- Query Handlers → Map Manager: looks up maps (evidence: `src/server/game/Handlers/QueryHandler.cpp`)
- Query Handlers → Object Access: looks up objects (evidence: `src/server/game/Handlers/QueryHandler.cpp`)
- Map Manager → Database Pools: loads state (evidence: `src/server/game/Maps/MapManager.cpp`)
- Map Manager → Object Access: accesses objects (evidence: `src/server/game/Maps/MapManager.cpp`)
- Map Manager → Object Manager: uses world data (evidence: `src/server/game/Maps/MapManager.cpp`)
- Stored Loot → Database Pools: loads and saves (evidence: `src/server/game/Loot/LootItemStorage.cpp`)
- Stored Loot → Player State: allows looters (evidence: `src/server/game/Loot/LootItemStorage.cpp`)
- Stored Loot → Object Manager: uses item data (evidence: `src/server/game/Loot/LootItemStorage.cpp`)
- VMap Collision → Map Manager: supports map collision
- MMap Navigation → Map Manager: supports navigation
- Navmesh Queries → MMap Navigation: queries navmesh
- World Manager → Player State: manages players
- Player State → Unit Combat: inherits behavior (evidence: `src/server/game/Entities/Player/Player.h`)
- Object Access → Object GUIDs: indexes by GUID (evidence: `src/server/game/Globals/ObjectAccessor.h`)
- Common Types → Platform Defines: includes (evidence: `src/common/Common.h`)
- Logging → Platform Defines: includes (evidence: `src/common/Logging/Log.h`)
- Database Pools → Platform Defines: includes (evidence: `src/server/database/Database/DatabaseEnv.h`)
- Memory Management → Platform Defines: uses platform definitions
- Auth Server → Database Pools: authenticates accounts
