# moth1995/open-eleven-server architecture

> Architecture diagram of the GitHub repository moth1995/open-eleven-server, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/moth1995/open-eleven-server
- Repository: https://github.com/moth1995/open-eleven-server

## Overview

OpenEleven is a reverse-engineered PES online server, with separate executables and profiles for four PC titles. Its main client journey starts at the gate, discovers other services, completes HTTP game-ID authentication, then authenticates over TCP and uses account/player, lobby, room, match, and chat services. The graph follows the documented transport and dispatch flow and includes persistence and registration. Some subsystem links rely on README descriptions because their implementation was not sampled.

Main entry points: [`src/OpenEleven.Server/Dispatch/CommandDispatcher.cs`](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Dispatch/CommandDispatcher.cs) (Command dispatch), [`src/OpenEleven.Server/State/Hub.cs`](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/State/Hub.cs) (Shared session and room hub), [`src/OpenEleven.Server/Web/GameEndpoints.cs`](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Web/GameEndpoints.cs) (HTTP endpoints), [`src/OpenEleven.Server/Transport/GameConnection.cs`](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Transport/GameConnection.cs) (Game connection)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Server runtime"]
  node_title_apps["Title executables<br/>[Program.cs]"]
  node_host["Server host"]
  node_listeners["Service listeners<br/>[GameListener.cs]"]
  node_connection["Game connection<br/>[GameConnection.cs]"]
  node_dispatcher["Command dispatch"]
end

subgraph group_protocol["Wire protocol"]
  node_codecs["Protocol codecs<br/>[ProtocolCodecs.cs]"]
  node_wire["Packet and KV codec<br/>[PacketCodec.cs]"]
end

subgraph group_identity["Identity and accounts"]
  node_gate_handlers["Gate handlers<br/>[GateHandlers.cs]"]
  node_account_handlers["Account and player<br/>[AccountHandlers.cs]"]
  node_http_endpoints["HTTP endpoints<br/>[GameEndpoints.cs]"]
  node_gameid_auth["Game-ID authentication"]
  node_registration["Account registration"]
  node_pending_login["Pending login state"]
end

subgraph group_gameplay["Game services"]
  node_lobby_handlers["Lobby handlers<br/>[LobbyHandlers.cs]"]
  node_room_handlers["Room handlers<br/>[RoomHandlers.cs]"]
  node_matching_handlers["Match handlers"]
  node_chat_handlers["Chat handlers"]
  node_hub["Shared session and room hub<br/>[Hub.cs]"]
end

subgraph group_persistence["Persistence"]
  node_repositories["Data repositories<br/>[Repositories.cs]"]
  node_dbcontext["Game database context<br/>[GameDbContext.cs]"]
end

node_game_client(("PES client"))
node_database[("SQLite or MySQL")]
node_web_user(("Registration user"))

node_title_apps -->|"starts"| node_host
node_host -->|"starts services"| node_listeners
node_game_client -->|"connects"| node_listeners
node_listeners -->|"accepts sockets"| node_connection
node_connection -->|"encodes packets"| node_codecs
node_codecs -->|"uses framing and KV"| node_wire
node_connection -->|"dispatches commands"| node_dispatcher
node_dispatcher -->|"invokes"| node_gate_handlers
node_dispatcher -->|"invokes"| node_account_handlers
node_dispatcher -->|"invokes"| node_lobby_handlers
node_dispatcher -->|"invokes"| node_room_handlers
node_dispatcher -->|"invokes"| node_matching_handlers
node_dispatcher -->|"invokes"| node_chat_handlers
node_game_client -->|"requests HTTP"| node_http_endpoints
node_http_endpoints -->|"delegates auth"| node_gameid_auth
node_http_endpoints -->|"delegates registration"| node_registration
node_web_user -->|"submits registration"| node_http_endpoints
node_gameid_auth -->|"opens login window"| node_pending_login
node_account_handlers -->|"validates pending login"| node_pending_login
node_account_handlers -->|"reads and writes"| node_repositories
node_registration -->|"creates account"| node_repositories
node_gate_handlers -->|"reads service state"| node_hub
node_lobby_handlers -->|"reads and updates"| node_hub
node_room_handlers -->|"manages rooms and watches"| node_hub
node_matching_handlers -->|"updates match state"| node_hub
node_chat_handlers -->|"broadcasts chat"| node_hub
node_repositories -->|"queries and saves"| node_dbcontext
node_dbcontext -->|"persists data"| node_database

click node_title_apps "https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Pes2010Pc/Program.cs"
click node_host "https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/OpenElevenServerHost.cs"
click node_listeners "https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Transport/GameListener.cs"
click node_connection "https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Transport/GameConnection.cs"
click node_codecs "https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Transport/ProtocolCodecs.cs"
click node_wire "https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Protocol/Framing/PacketCodec.cs"
click node_dispatcher "https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Dispatch/CommandDispatcher.cs"
click node_gate_handlers "https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Handlers/GateHandlers.cs"
click node_account_handlers "https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Handlers/AccountHandlers.cs"
click node_http_endpoints "https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Web/GameEndpoints.cs"
click node_gameid_auth "https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Web/GameIdAuthService.cs"
click node_registration "https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Web/RegistrationService.cs"
click node_pending_login "https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/State/PendingLoginStore.cs"
click node_lobby_handlers "https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Handlers/LobbyHandlers.cs"
click node_room_handlers "https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Handlers/RoomHandlers.cs"
click node_matching_handlers "https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Handlers/MatchingHandlers.cs"
click node_chat_handlers "https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Handlers/TextChatHandlers.cs"
click node_hub "https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/State/Hub.cs"
click node_repositories "https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Data/Repositories/Repositories.cs"
click node_dbcontext "https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Data/GameDbContext.cs"

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_title_apps,node_host,node_listeners,node_connection,node_dispatcher,node_game_client,node_web_user toneBlue
class node_codecs,node_wire,node_database toneAmber
class node_gate_handlers,node_account_handlers,node_http_endpoints,node_gameid_auth,node_registration,node_pending_login toneMint
class node_lobby_handlers,node_room_handlers,node_matching_handlers,node_chat_handlers,node_hub toneRose
class node_repositories,node_dbcontext toneIndigo
```

## Components

### Server runtime

- [Title executables](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Pes2010Pc/Program.cs): `src/OpenEleven.Pes2010Pc/Program.cs`
- [Server host](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/OpenElevenServerHost.cs): `src/OpenEleven.Server/OpenElevenServerHost.cs`
- [Service listeners](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Transport/GameListener.cs): `src/OpenEleven.Server/Transport/GameListener.cs`
- [Game connection](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Transport/GameConnection.cs): `src/OpenEleven.Server/Transport/GameConnection.cs`
- [Command dispatch](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Dispatch/CommandDispatcher.cs): `src/OpenEleven.Server/Dispatch/CommandDispatcher.cs`

### Wire protocol

- [Protocol codecs](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Transport/ProtocolCodecs.cs): `src/OpenEleven.Server/Transport/ProtocolCodecs.cs`
- [Packet and KV codec](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Protocol/Framing/PacketCodec.cs): `src/OpenEleven.Protocol/Framing/PacketCodec.cs`

### Identity and accounts

- [Gate handlers](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Handlers/GateHandlers.cs): `src/OpenEleven.Server/Handlers/GateHandlers.cs`
- [Account and player](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Handlers/AccountHandlers.cs): `src/OpenEleven.Server/Handlers/AccountHandlers.cs`
- [HTTP endpoints](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Web/GameEndpoints.cs): `src/OpenEleven.Server/Web/GameEndpoints.cs`
- [Game-ID authentication](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Web/GameIdAuthService.cs): `src/OpenEleven.Server/Web/GameIdAuthService.cs`
- [Account registration](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Web/RegistrationService.cs): `src/OpenEleven.Server/Web/RegistrationService.cs`
- [Pending login state](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/State/PendingLoginStore.cs): `src/OpenEleven.Server/State/PendingLoginStore.cs`

### Game services

- [Lobby handlers](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Handlers/LobbyHandlers.cs): `src/OpenEleven.Server/Handlers/LobbyHandlers.cs`
- [Room handlers](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Handlers/RoomHandlers.cs): `src/OpenEleven.Server/Handlers/RoomHandlers.cs`
- [Match handlers](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Handlers/MatchingHandlers.cs): `src/OpenEleven.Server/Handlers/MatchingHandlers.cs`
- [Chat handlers](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/Handlers/TextChatHandlers.cs): `src/OpenEleven.Server/Handlers/TextChatHandlers.cs`
- [Shared session and room hub](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Server/State/Hub.cs): `src/OpenEleven.Server/State/Hub.cs`

### Persistence

- [Data repositories](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Data/Repositories/Repositories.cs): `src/OpenEleven.Data/Repositories/Repositories.cs`
- [Game database context](https://github.com/moth1995/open-eleven-server/blob/master/src/OpenEleven.Data/GameDbContext.cs): `src/OpenEleven.Data/GameDbContext.cs`

### Other components

- **PES client**
- **SQLite or MySQL**
- **Registration user**

## Connections

- Title executables → Server host: starts
- Server host → Service listeners: starts services
- PES client → Service listeners: connects
- Service listeners → Game connection: accepts sockets
- Game connection → Protocol codecs: encodes packets
- Protocol codecs → Packet and KV codec: uses framing and KV
- Game connection → Command dispatch: dispatches commands
- Command dispatch → Gate handlers: invokes
- Command dispatch → Account and player: invokes
- Command dispatch → Lobby handlers: invokes
- Command dispatch → Room handlers: invokes
- Command dispatch → Match handlers: invokes
- Command dispatch → Chat handlers: invokes
- PES client → HTTP endpoints: requests HTTP
- HTTP endpoints → Game-ID authentication: delegates auth
- HTTP endpoints → Account registration: delegates registration
- Registration user → HTTP endpoints: submits registration
- Game-ID authentication → Pending login state: opens login window
- Account and player → Pending login state: validates pending login
- Account and player → Data repositories: reads and writes
- Account registration → Data repositories: creates account
- Gate handlers → Shared session and room hub: reads service state
- Lobby handlers → Shared session and room hub: reads and updates
- Room handlers → Shared session and room hub: manages rooms and watches
- Match handlers → Shared session and room hub: updates match state
- Chat handlers → Shared session and room hub: broadcasts chat
- Data repositories → Game database context: queries and saves
- Game database context → SQLite or MySQL: persists data
