Table of Contents

Namespace FishMMO.Server.Implementation.World.SceneServer

Namespaces

FishMMO.Server.Implementation.World.SceneServer.Character
FishMMO.Server.Implementation.World.SceneServer.Interactable

Classes

AchievementSystem

Manages server-side achievement tracking, updates, and completion rewards for player characters. Game logic and Broadcasts run synchronously on the main thread. Database persistence is fire-and-forget async to avoid blocking the main thread.

CharacterInventorySystem

Manages player character inventory, equipment, and bank operations with validation and database persistence.

CharacterInventorySystemMainThreadQueueData

Concrete main-thread queue data container for CharacterInventorySystem. Inherits thread-safe Queue + lock infrastructure from SystemMainThreadQueueData.

CharacterInventorySystemRuntimeData

Runtime data container for character inventory ingress protection.

CharacterMappingData

Runtime data container for character-to-connection mappings and character lookups. Manages all character session state separately from CharacterSystem logic.

CharacterSystem

Instance management: reporting who is in an instance and how long it has left, letting the party leader remove somebody from it, and letting them hide the run from the dungeon finder.

ChatSystem

Manages all chat functionality including public, party, guild, whisper, and system messages with rate limiting and spam protection. Game logic and Broadcasts run synchronously on the main thread. Database operations are fire-and-forget async to avoid blocking the main thread. Results from async DB queries that require main-thread Broadcasts are marshalled via IChatSystemMainThreadQueueData.

ChatSystemMainThreadQueueData

Concrete main-thread queue data container for ChatSystem. Inherits thread-safe Queue + lock infrastructure from SystemMainThreadQueueData.

ChatSystemRuntimeData

Runtime data container for chat message synchronization state. Manages chat database polling state separately from ChatSystem logic.

FriendSystem

Manages player friend lists, including adding and removing friends with validation and database persistence. Game logic and Broadcasts run synchronously on the main thread. Database operations are fire-and-forget async to avoid blocking the main thread. Results from async DB queries that require main-thread Broadcasts are marshalled via IFriendSystemMainThreadQueueData.

FriendSystemMainThreadQueueData

Concrete main-thread queue data container for FriendSystem. Inherits thread-safe Queue + lock infrastructure from SystemMainThreadQueueData.

FriendSystemRuntimeData

Runtime data container for friend ingress protection.

GuildCharacterMappingData

Runtime data container for guild member and character tracking. Manages guild membership lookups separately from GuildSystem logic.

GuildRules

The guild permission rules, as pure functions of a resolved standing.

GuildSystem

Guild permission resolution: the single place the server decides what a character may do in a guild, and the lazy migration that gives a pre-permissions guild its rank ladder.

GuildSystemMainThreadQueueData

Concrete main-thread queue data container for GuildSystem. Inherits thread-safe Queue + lock infrastructure from SystemMainThreadQueueData.

GuildSystemRuntimeData

Runtime data container for guild system state. Manages guild invitations and database synchronization state separately from GuildSystem logic.

HotkeySystem

Manages player hotkey configurations, allowing clients to set and update hotkey bindings for abilities and items.

HotkeySystemRuntimeData

Runtime data container for hotkey ingress protection and pending hotkey persistence.

HousingSystem

Who an owner has let into their plot, and putting out anybody who should not be in it.

HousingSystemMainThreadQueueData

Concrete main-thread action queue data container for the HousingSystem.

ItemContainerMapping

Translates between the gameplay container enum and the persistence one.

NamingSystem

Provides name resolution services for game entities, resolving names by ID for characters and guilds. Game logic and Broadcasts run synchronously on the main thread. Database lookups are async to avoid blocking the main thread. Results from async DB queries are marshalled back via INamingSystemMainThreadQueueData.

NamingSystemMainThreadQueueData

Concrete main-thread queue data container for NamingSystem. Inherits thread-safe Queue + lock infrastructure from SystemMainThreadQueueData.

NamingSystemMappingData

Mapping data container for naming caches. Provides TTL-friendly O(1) touch caches for direct and reverse lookups.

NamingSystemRuntimeData

Runtime data container for naming request in-flight gates and debounce tracking.

PartyCharacterMappingData

Runtime data container for party member and character tracking. Manages party membership lookups separately from PartySystem logic.

PartyCombatMeterData

Runtime data container holding per-encounter damage and healing meters.

PartySystem

Manages party creation, invitations, membership, and updates for the MMO server. Handles party broadcasts, chat commands, and synchronizes party state with the database. Game logic and Broadcasts run synchronously on the main thread. Database operations are async to avoid blocking the main thread. Results from async DB queries that require main-thread state changes or Broadcasts are marshalled via IPartySystemMainThreadQueueData.

PartySystemMainThreadQueueData

Concrete main-thread queue data container for PartySystem. Inherits thread-safe Queue + lock infrastructure from SystemMainThreadQueueData.

PartySystemRuntimeData

Runtime data container for party system state. Manages party invitations and database synchronization state separately from PartySystem logic.

PetSystem

Manages pet-related server logic, including pet summoning, following, staying, releasing, and persistence. Handles pet broadcasts, character events, and pet AI initialization for player characters. Game logic and Broadcasts run synchronously on the main thread. Database operations are async to avoid blocking the main thread. Results from async DB queries that require main-thread state changes or Broadcasts are marshalled via IPetSystemMainThreadQueueData.

PetSystemMainThreadQueueData

Concrete main-thread queue data container for PetSystem. Inherits thread-safe Queue + lock infrastructure from SystemMainThreadQueueData.

PetSystemRuntimeData

Runtime data container for pet ingress protection.

QuestSystem

Manages server-side quest event handling, client synchronisation, reward delivery, auto-progression, and database persistence for player characters. Game logic and broadcasts run synchronously on the main thread. Database persistence is fire-and-forget async via bounded channel workers.

QuestSystemRuntimeData

Runtime data container for quest system ingress protection.

SceneChannelSystem

Scene server subsystem that handles channel selection for open world scenes. Provides channel listing (aggregating scene instances across all scene servers on the same world server via database queries) and same-server channel switching.

SceneChannelSystemMainThreadQueueData

Concrete main-thread action queue data container for the SceneChannelSystem.

SceneChannelSystemRuntimeData

Runtime data container for the SceneChannelSystem. Holds all mutable state: ingress guard, per-connection cooldowns, and cleanup timers.

SceneInstanceDetails

Stores details about a scene instance managed by the server, including server IDs, name, handle, type, and character count. Tracks when the last character exited for stale scene detection.

SceneInstanceMappingData

Runtime data container for scene instance tracking and scene handle management. Manages all scene instance mappings separately from SceneServerSystem logic.

SceneServerAuthenticator

Scene Server Authenticator using token-based authentication.

SceneServerPlacementPolicy

Decides how much new scene-load work a scene server takes on, given what it is already hosting.

SceneServerRuntimeData

Runtime data container for scene server identification and state. Manages scene server operational state separately from SceneServerSystem logic.

SceneServerSystem

Manages scene server node services, scene loading/unloading, and heartbeat updates to the world server. Tracks scene instances, handles connection events, and synchronizes scene state with the database. Game logic and Broadcasts run synchronously on the main thread. Database operations are async to avoid blocking the main thread. Results from async DB queries that require main-thread state changes are marshalled via ISceneServerSystemMainThreadQueueData.

SceneServerSystemMainThreadQueueData

Concrete main-thread queue data container for SceneServerSystem. Provides a thread-safe queue for marshalling async DB results back to the main Unity thread.

TradeExchange

Applies an agreed exchange of items to two in-memory inventories, all or nothing.

TradeExchange.Applied

An exchange that has been applied to memory and can still be taken back.

TradeExchange.Side

One character's inventory and offers going in; the rows its write must carry coming out.

TradeSession

The state of one open trade between two characters.

TradeSession.CommitState

What the commit has done so far, so a refusal at any point can be undone exactly. Null until the commit starts. Owned by TradeSystem.Commit.

TradeSession.Party

One side of the table.

TradeSystem

The broadcast handlers: invitation, offers, currency, acceptance, cancellation.

TradeSystemMainThreadQueueData

Main-thread queue for TradeSystem. Persistence outcomes that must touch live characters come back through here.

TradeSystemRuntimeData

Runtime data container for TradeSystem: the per-connection ingress guard.

WaypointPersistence

The one place a character's discovered-waypoint pages are turned into rows and merged. Used by the unlock path (write on change) and by the character system's periodic and despawn saves (retry of anything still dirty).

WaypointSceneAudit

Checks, once per loaded scene, that the waypoints the client can see are the waypoints the server can travel to.

Structs

GuildAuthority

One character's authoritative standing in one guild, resolved from the database.

TradeOffer

One item on the table.

Enums

GuildActionResult

The outcome of a guild permission decision.

TradeExchange.Failure

Why the exchange did not apply.

TradeOfferRefusal

Why an offer change was refused.

TradePhase

Where a trade session is in its life.