Skip to main content

Solution structure

The solution is at src/MUnique.OpenMU.sln. Each project has a Readme.md next to its code with the details; this page is the map.

Servers and game logic

ProjectContents
StartupThe console program which glues everything together and starts the server as a single process — Readme
GameServerThe game server: packet handlers (MessageHandler) and the remote views (RemoteView)
GameLogicThe actual game: players, items, skills, maps, attacks, quests, mini games, player actions
ConnectServerServes the server list and redirects clients to a game server
LoginServerKeeps track of which account is logged in on which server
ChatServerThe chat rooms used by the in-game messenger
FriendServerFriend lists and the messenger
GuildServerGuilds
InterfacesThe interfaces between the subsystems, so they can run in one or many processes
DaprThe glue for the distributed deployment

Foundations

ProjectContents
NetworkThe MU Online network protocol, connections, encryption — Readme
Network/PacketsThe packet definitions; the packet markdown documentation is generated from their XML
AttributeSystemThe attribute/power-up system used for damage and stat calculation — Readme
PathfindingPathfinding for monsters and NPCs — Readme
PlugInsThe plugin infrastructure — Readme
Annotations / SourceGeneratorsAttributes and source generators used across the solution

Data

ProjectContents
DataModelThe entities and the configuration classes — this is what the admin panel edits
PersistenceThe persistence abstractions (contexts, repositories) — Readme
Persistence/EntityFrameworkThe EF Core + PostgreSQL implementation — Readme
Persistence/InitializationThe data initialization per game version — Readme

Web

ProjectContents
Web/AdminPanelThe admin panelReadme
Web/MapThe live mapReadme
Web/ItemEditorThe graphical item and item storage editor
Web/SharedComponents shared by the web projects: forms, modals, the map editor, the theme and culture selectors

Tools

ProjectContents
ClientLauncherThe launcher which starts the game client with your server's address
Network/AnalyzerA tool to inspect the traffic between client and server — Readme
ClientErrorLogDecryptorDecrypts the client's error logs — Readme
SimpleModulusKeyGeneratorGenerates keys for the SimpleModulus encryption
ChatServer/ExDbConnectorConnector for the ExDB protocol — Readme

Tests

The tests are in the tests/ folder, one project per area (MUnique.OpenMU.GameLogic.Benchmarks, MUnique.OpenMU.Network.Tests, MUnique.OpenMU.Persistence.Initialization.Tests, …). Run them with:

dotnet test

See also Packet structure tests.

This documentation

The site you are reading is built with Docusaurus from the docs-website/ folder — see its README for how to run it locally and how it is deployed.