How ollrogge/bango works
Bango is a C++ KalOnline MMORPG server emulator, split into a player-facing MainServer and a database-facing DBServer. The principal workflow accepts a game-client connection, routes account and character requests through the DB protocol, loads player state, and serves gameplay over the client socket. Gameplay spans player actions and properties, inventory/items, party interactions, and the map’s NPC and monster world. The README documents these capabilities; some implementation details are not sampled, so the graph omits uncertain internal wiring rather than inferring it.
Main entry points: CPlayer.cpp Player state · CClient.cpp Client session · CMainSocket.cpp DB protocol server · CMap.cpp Map and zones
Components 20
Client sessions
- Client socket
MainServer/Socket/CClientSocket.cpp - Client session
MainServer/CClient.cpp - Session registry
MainServer/CServer.cpp
Account persistence
- DB protocol client
MainServer/Socket/CDBSocket.cpp - DB protocol server
DBServer/Socket/CMainSocket.cpp - Account handling
DBServer/CAccount.cpp - Connection pool
DBServer/Database/CDatabase.cpp
Player gameplay
- Player state
MainServer/GameCharacter/CPlayer.cpp - Character base
MainServer/GameCharacter/CCharacter.cpp - Inventory items
MainServer/Item/CItem.cpp - Party play
MainServer/GameCharacter/CParty.cpp
World simulation
- Map and zones
MainServer/Map/CMap.cpp - World tiles
MainServer/Map/CTile.cpp - NPC services
MainServer/GameCharacter/CNPC.cpp - Monster AI
MainServer/GameCharacter/CMonster.cpp - Item drops
MainServer/GameCharacter/CItemDrop.cpp
Shared services
- Game data macros
MainServer/Macro/CMacroDB.cpp - Server configuration
include/Config/CConfig.cpp
Other components
- Game client
- MySQL database
Connections 26
- Game client → Client socket: sends packets
- Client socket → Client session: dispatches packets
- Client socket → Session registry: registers sessions
- Client session → Game client: sends responses
- Client session → DB protocol client: forwards account requests
- DB protocol client → DB protocol server: sends DB packets
- DB protocol server → Account handling: handles accounts
- DB protocol server → Connection pool: executes queries
- Connection pool → MySQL database: reads and writes
- DB protocol server → DB protocol client: returns results
- DB protocol client → Client session: delivers results
- Client session → Player state: creates and routes
- Player state → Character base: inherits behavior
- Player state → Inventory items: manages inventory
- Player state → Party play: handles party actions
- Player state → Map and zones: updates world position
- Map and zones → World tiles: uses tiles
- Map and zones → NPC services: loads NPCs
- Map and zones → Monster AI: tracks monsters
- Monster AI → Character base: uses character behavior
- Monster AI → Item drops: creates drops
- Player state → Game data macros: uses game data
- NPC services → Game data macros: uses game data
- Monster AI → Game data macros: uses game data
- Server configuration → Client socket: configures listener
- Server configuration → Connection pool: configures connection