Table of Contents

What is Moongate

Moongate is an open-source Ultima Online server emulator written in C# on modern .NET, built around one idea: keep it simple. A single game loop, a small set of services, and a shard surface made of Lua scripts and YAML data files — you build a shard without touching C#.

Modern clients only

Moongate targets ClassicUO 7.x clients exclusively. There is no expansion-era feature gating and no legacy client support: the server always advertises a constant, modern feature set. If you can run ClassicUO, you can connect.

Project status

Moongate is young and moves fast. What works today:

  • TCP login pipeline: seed, account login, server list, game-server handoff, character list, character creation and deletion (the created player mobile is persisted) and world entry — creating or selecting a character loads you into the map with its stats, skills and gear. World entry is self-only: nearby mobiles and items are not broadcast, and movement is not handled yet, which is the next milestone.
  • Item, mobile and loot systems driven by YAML templates, with a Lua API (item, mobile, loot, game, events, log) for shard logic.
  • Binary snapshot persistence for accounts, mobiles and items.
  • UO client file loading (art, maps, and friends) from a ClassicUO-compatible installation.

The documentation only describes what is implemented — if a page says it works, it works in the current main.

Where to go next

  1. Install & first launch — build the server and let it create its runtime directory.
  2. Connect with ClassicUO — point a client at it.
  3. Configuration — everything moongate.yaml can do.
  4. Scripting — where shard building actually happens.