Moongate v2 is an open-source Ultima Online server built from scratch in C# on .NET 10, featuring NativeAOT compilation for high performance. Key architectural highlights include a sector/chunk-based spatial world streaming system, a timestamp-driven game loop, strict separation between inbound packet handling and outbound domain events, and a Lua scripting subsystem (MoonSharp) for NPC AI, commands, and item interactions. Persistence uses a snapshot+journal model with MessagePack-CSharp source-generated contracts to ensure AOT compatibility. The project includes source generators for compile-time packet/handler registration, an embedded ASP.NET Core HTTP host with OpenAPI/Scalar, Docker support with a Prometheus+Grafana monitoring stack, and comprehensive benchmarks comparing JIT vs NativeAOT performance. Currently in active development, it supports core UO protocol packets, character movement, item interaction, and basic pathfinding, while combat, full skill systems, and NPC vendors are still in progress.
Table of contents
AcknowledgementsIndexProject GoalsProject StoryFrontend PreviewCurrent StatusRecent Development HighlightsSpatial Chunk StrategyWorld Generation PipelineUO Feature Support (Current)PersistenceEmail Delivery (Minimal SMTP)TemplatesSolution StructureSource Generators (AOT)Event And Packet SeparationGame Loop SchedulingRequirementsServer Startup TutorialEnvironment ConfigurationQuick StartCommand SystemScriptingScriptsBenchmarksStress Test (Socket UO, Black-Box)DockerDocker Monitoring StackDocumentationDevelopment NotesContributingLicenseSort: