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 — see Startup parameters
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 panel
Web/MapThe live map
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/AnalyzerThe platform independent part of the network analysis: captured connections and their packet analysis — Readme
Network/Analyzer.WinFormsThe tool which captures the traffic between client and server by acting as a proxy — 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.