How attorneyonline/akashi works
Akashi is a C++ Attorney Online 2 server. Clients connect over WebSockets; the server creates per-client sessions, handles game-protocol packets and commands, and coordinates area activity, moderation, and shared services. The graph preserves the major runtime domains visible in the tree, including music, authentication and bans, logging, and server advertising. Some wiring is supported only by class documentation or partial excerpts, so uncertain connections are omitted; optional Discord integration is shown separately.
Main entry points: aoclient.cpp Client session · server.cpp Server · commands Game commands · packet_ms.cpp IC messaging
Components 19
Connections and protocol
- Server
src/server.cpp - Network socket
src/network/network_socket.cpp - Client session
src/aoclient.cpp - Packet codec
src/network/aopacket.cpp - Packet factory
src/packet/packet_factory.cpp
Gameplay and commands
- Area state
src/area_data.cpp - Game commands
src/commands - IC messaging
src/packet/packet_ms.cpp - Testimony recording
src/testimony_recorder.cpp - Area music
src/music_manager.cpp
Administration and state
- Configuration
src/config_manager.cpp - ACL roles
src/acl_roles_handler.cpp - User and ban DB
src/db_manager.cpp - Medieval parser
src/medieval_parser.cpp
Server services
- Logging
src/logger/u_logger.cpp - Server publisher
src/serverpublisher.cpp - Discord integration
src/discord.cpp
Other components
- AO clients
- Discord
Connections 20
- AO clients → Server: connects to
- Server → Client session: creates sessions
- Client session → Packet factory: dispatches packets
- Packet factory → Packet codec: creates packets
- Client session → Area state: uses area state
- Client session → Game commands: handles commands
- Client session → User and ban DB: authenticates users
- Client session → ACL roles: checks permissions
- Client session → IC messaging: handles messages
- IC messaging → Area state: checks area rules
- IC messaging → Testimony recording: updates statements
- Server → User and ban DB: creates manager
- Server → Medieval parser: creates parser
- Server → Server publisher: creates publisher
- Game commands → User and ban DB: manages accounts
- Game commands → ACL roles: manages roles
- Area music → Packet factory: creates music packets
- Discord integration → Discord: integrates with
- Server → Logging: logs activity
- Configuration → Server: provides settings