Roadmap
What Moongate builds next, and in which order. The feature checklist says what is missing system by system; this page says what comes first and why.
The order comes from a comparison with five other emulators: ModernUO, ServUO, UOX3, POL and SphereServer X. For each one we looked at which systems it has, how large they are, and what each system needs before it can exist. The five agree on the same chain of dependencies, so the phases below follow that chain. Inside a phase, the systems a player notices first come first.
This is an order, not a schedule: there are no dates. A phase is done when its systems are marked ✅ in the checklist.
Where we are
Section titled “Where we are”The foundations are in place: network, login, persistence, world data, sectors, regions, spawns, decoration, gumps, Lua scripting. A player can log in, walk a populated world, open doors, use the bank, take a teleporter or a moongate, open a treasure chest in a dungeon and a crate in a shop. NPCs walk around what stands in their way. Players and NPCs fight with fists, swords or bows, die and come back as ghosts, train their skills and are defended by the guards of the towns. Players buy from vendors, tame and ride, gather and craft with the nine crafts, cast the 64 spells of Magery, sixteen of Necromancy and four of Chivalry, found guilds, and meet monsters that cast back and the six champion spawns. What is missing: bounties, runebooks, the party’s Enhanced Client pins, the last quests of ModernUO (the engine is built and 224 of the 257 are on the shard), treasure maps, and nothing can be built yet. Priorities 1 and 2 below are closed; 3 to 8 each have a few steps left; 9 and 10 are mostly not started.
Each step below carries its state: ✅ done, 🟡 partly done, ❌ not started.
Priorities
Section titled “Priorities”The phases give the order of dependencies; this list says what is worked on, most urgent first. A priority is closed when its steps are ✅ in the tables below.
| Priority | What | Steps | Why at this place |
|---|---|---|---|
| 1 | Finish what Lua needs (done) | 0.1, 0.3, 0.4 and 0.7 are done; 0.5 is done for items, NPCs and vendors and 0.6 for items, and what is left of them comes with skills and timed effects | Every rule below is written against it, so a gap here is paid again in each system |
| 2 | Skills and regeneration (done) | 1.1, 1.2 | The skill check is called by combat, magic, crafting, lockpicking and taming: nothing else unlocks as much |
| 3 | What combat reads | 1.3, 1.6, and the weight of 1.4 | Timed effects, the combat fields of the items, weight |
| 4 | Combat and death | 2.1 to 2.6 | The core loop: the 29,000 spawned NPCs are scenery until it exists |
| 5 | A world that fights back | 3.2 to 3.5, and mobiles that block in 3.1 | Makes the fight worth having and the towns safe |
| 6 | Vendors | 1.5, 4.1 | Needs only priority 2, so it can be taken between two combat steps; gives gold a use |
| 7 | Magery and travel | 4.3, 4.4, 4.5 | Half of all characters cast; recall and gate need the region rules of priority 5 |
| 8 | Professions | Phase 5 | Gathering, crafting, taming and the remaining skills, each small once priority 2 exists |
| 9 | Playing together | Phase 6, 4.2 | Party (6.1) needs nothing else and may come earlier, when players ask for it |
| 10 | Houses and boats | Phase 7 | The largest chain of prerequisites |
Running a shard has no place in this list: its items are done when an operator needs them.
World content that waits for a system
Section titled “World content that waits for a system”Some content is already in the data, placed or converted, and does nothing yet. It is not built on its own: it comes with the priority that gives it its rule.
| Content | Waits for | Priority |
|---|---|---|
| Dart boards (the training dummies and archery buttes work now) | Throwing skill (5.4) | 8 |
| Locks on the town containers (the dungeon treasure chests are locked and picked now) | Lock levels in the data | 2 |
| The 490 traps placed in the dungeons (the traps of the treasure chests spring now) | A script of their own, in no phase yet | — |
| Wands in the treasure chests (the spells exist) | Wands, in the checklist under spellbooks, scrolls and wands | 7 |
| Chess and checker boards and bounty boards (the bulletin boards work) | Chat and boards (6.3) | 9 |
The 621 addons of the shops and inns (anvils, ovens, beds, looms), skipped by .decorate |
Addons (7.4) | 10 |
The 87 spawners of quest characters, skipped by .decorate |
Quests (Later): the givers of the migrated quests are placed from ServUO’s spawns; the other characters wait for their quests | After 10 |
One decision first: the ruleset
Section titled “One decision first: the ruleset”Every other emulator has to choose between the classic rules (before Age of Shadows) and the modern ones (item properties, resistances, special moves). ModernUO checks the era in 378 files; UOX3 and Sphere carry a setting for it.
Moongate builds one ruleset first: the classic one. It is smaller, the UOX3 data we already convert is written for it, and the modern systems can be added on top later (see Later). The Enhanced Client keeps working: it only needs the packets, not the modern rules.
Phase 0: what Lua needs before any gameplay
Section titled “Phase 0: what Lua needs before any gameplay”POL leaves almost all gameplay to scripts, and Sphere and UOX3 do the same through triggers. All three show that the core has to expose these things before combat, magic or crafting can be written. The Lua API reference lists what Lua has today.
| Step | State | What | Why it comes here |
|---|---|---|---|
| 0.1 | ✅ | Mobile state in Lua: stats, skills, hits, mana, stamina, flags (hidden, frozen, war mode), hue, body, name; props on players; global props. The dead flag comes with death (2.3) | Every rule reads or changes them |
| 0.2 | ✅ | World queries: mobiles and items near a point, in sight; online players; region, height and line of sight lookups | Every AI, spell and area effect needs them |
| 0.3 | ✅ | Item API: create (on the ground, in a backpack, in a container), move into a container, equip, list the content, find by type, set hue and name | Loot, crafting, vendors, quests |
| 0.4 | ✅ | Player input and output: system message, text over any object, cliloc messages, the target cursor, a text prompt | Every skill and spell starts with a target |
| 0.5 | 🟡 | Events that can refuse: a handler stops or changes the default action. Done for items: on_use, can_pick_up, can_drop, can_equip, can_insert, can_drop_on, can_decay, for NPCs: on_damage, on_heal, on_attack, can_die, and for vendors: can_buy, can_sell. Left: check_skill, which is not built (a skill check has no hook yet) |
Lets a script own a rule |
| 0.6 | 🟡 | Timers kept by the object and saved with the world. Done for items (item.start_timer, on_timer; the doors close with it). Left: timers on mobiles, which come with timed effects (1.3) |
Timed effects need the same mechanism |
| 0.7 | ✅ | Region events: enter and leave. Done for players (player_region_changed) and for NPCs (on_enter_region, on_leave_region) |
Guards, magic rules, music scripts, quests |
Phase 1: a character that lives
Section titled “Phase 1: a character that lives”| Step | State | What | Why it comes here | Data ready to import |
|---|---|---|---|---|
| 1.1 | ✅ | Regeneration of hits, mana and stamina; hunger and thirst, food that is eaten and drinks that are drunk | Nothing depends on anything else; visible in the first fight | |
| 1.2 | ✅ | Skill use, check and gain; stat gain; caps and locks. A skill is used from the client, checked by skill.check, gained under the skill cap and the total cap and locked up, down or locked from the skill window; a successful check raises strength, dexterity and intelligence as ModernUO’s classic rule, to 100 each and 225 in all, with their own locks. Hiding is the first skill script; the others come with their systems |
The progression of the game; every later system calls the skill check | UOX3 skills.dfn (61 skills: stat weights, gain curves), ModernUO skills.json |
| 1.3 | 🟡 | Timed effects: one mechanism for poison, curses, blessings, polymorph, hiding; the buff bar shows them. Done: stat bonuses and curses, night sight, poison, paralysis, the armor of Protection and Reactive Armor, Incognito and Polymorph, bleeding, the forms of Necromancy. Left: the buff bar | Magic, potions and combat all need it | |
| 1.4 | ✅ | Containers on the ground, with item and weight limits; weight and overloading: a container on the ground opens, items go in and out of it, 125 at most and up to its limit of stones; a player carries 40 stones and 3.5 a point of strength, and moving overloaded or running costs stamina | Corpses, vendors, chests and houses need them | |
| 1.5 | 🟡 | Context menus and old-style menus. Done: the text prompt (prompt.ask), and context menus with the server’s entries (the pet menu included) and the ones a Lua script adds |
Vendors, crafting and guilds open through them | |
| 1.6 | ✅ | Item combat fields in the templates and the converter: damage, speed, armour, hit points, strength requirement | Combat reads them; the converter reads them from UOX3 now | UOX3 items/gear/ |
Phase 2: combat
Section titled “Phase 2: combat”| Step | State | What | Why it comes here |
|---|---|---|---|
| 2.1 | ✅ | War mode, swing timer, melee and archery: hit chance, damage, armour, parry, durability. A fight with fists or a weapon, the swing timer, the hit by skill, the damage and the armor of an NPC or of what a player wears, archery with a bow or a crossbow, for a player and for an NPC, the shield’s parry as the classic rule, and the wear of the weapons and armor a player uses, mended with repair | The core loop of the game |
| 2.2 | ✅ | Aggressor lists. The lists of who acted against whom for two minutes, for players and NPCs, drive the crime rule, the murder report, the grey names of a fight and the right of those who fought a player to loot its corpse; mobile.aggressors and mobile.aggressed show them to a script. The loot rights of a creature’s corpse by the damage dealt are in 3.3 |
Notoriety, guards and loot rights rest on them |
| 2.3 | 🟡 | Death, corpse, ghost, resurrection; healer NPCs and shrines. Done: an NPC or a player dies by a fight, .kill or mobile.kill and leaves its corpse with what it carried; a player stays as a ghost and comes back at an ankh or at a healer, by .resurrect or mobile.resurrect. Left: bones, bounties and the places of the evil healers |
Gives combat a result |
| 2.4 | ✅ | Bandages and healing. The clean bandage heals a player or a creature and raises a ghost, with the formulas of ModernUO’s classic Healing; it cures a poisoned patient and binds a bleeding one. The corpse of a bonded pet is raised with the Veterinary | Needed as soon as damage exists |
| 2.5 | ✅ | Combat events for Lua: attack, hit, miss, damage, death, resurrect. on_attack, on_hit, on_miss, on_damage, on_heal, can_die, on_death, on_mobile_killed, on_resurrect, on_combat_start and on_combat_end; see Script hooks |
Lets content change the rules |
| 2.6 | 🟡 | Combat settings: swing speed, damage rules, corpse decay. Done: the ultima.combat section (swing speed, NPC damage rate, stamina cost, range, archery). Left: corpse decay |
A shard owner expects to tune them |
Phase 3: a world that fights back
Section titled “Phase 3: a world that fights back”| Step | State | What | Why it comes here | Data ready to import |
|---|---|---|---|---|
| 3.1 | 🟡 | Pathfinding and movement that checks items and mobiles. Done: the A* path search, npc.walk_to, and items that block; mobiles do not block yet |
AI cannot chase without it | |
| 3.2 | ✅ | NPC AI: melee, archer, mage, animal, fleeing; NPC memory of who attacked. A Lua script on a tick, wandering, monster.lua, the melee AI, on the 200 or so evil and chaotic templates, which go for the players and the townsfolk and which the guards kill, and the animals (animal.lua, scared_animal.lua) on the shared common/creature.lua; archers (an NPC with a bow shoots, and so does a player), creatures that run when hurt, and the casters, whose template has spell_circles, that cast the spells of Magery. The creature keeps who it fights in the script’s memory, not saved; the engine’s aggressor lists are 2.2 |
The 29,000 spawned NPCs become content | UOX3 NPC tags dropped today (NPCAI values), ModernUO npc-speeds.json |
| 3.3 | 🟡 | Loot on corpses, carving, fame and karma gain. Loot is rolled into the backpack at spawn and lies in the corpse of a dead NPC; a knife carves a creature’s corpse from templates/carves/ (Carving), the farm animals’ tables and the 100 of UOX3’s carve.dfn ship, the human torso and limbs wait; no fame; karma only falls with murders; the loot rights of a creature’s corpse by the damage dealt are in, fame and karma shares wait |
Reward for the fight | UOX3 carve.dfn (102 tables) |
| 3.4 | 🟡 | Notoriety: criminal and murderer flags, name colours, murder counts. Done: the criminal flag with its timer, murder counts with the report gump of the victim, a red name from five murders, as ModernUO’s, and an innocent shown grey to the player it fought. Left: other crimes, bounties; the name colour of an NPC is the one of its mobile template | Makes PvP rule-bound | |
| 3.5 | 🟡 | Region rules and guards: guarded towns, no recall, no gate, no housing. Done: guarded regions, the guards that arrest a criminal or a monster, called by saying “guards” or standing in the town, and archer guards in Ilshenar and Malas. Left: the guards do not punish a player, and no rules for recall, gate or housing | Makes towns safe | ModernUO regions.json (typed regions), UOX3 regions.dfn (179 rule sets) |
Phase 4: economy and magic
Section titled “Phase 4: economy and magic”Vendors need only phase 1, so they can be built in parallel with phases 2 and 3.
| Step | State | What | Why it comes here | Data ready to import |
|---|---|---|---|---|
| 4.1 | ✅ | Vendors: buy, sell, restock; skill trainers. Done: the bank box, balance, deposit and withdraw by speech, bank checks, gold handed to the banker, buying from and selling to vendors with ModernUO’s shops, restock and resale; skill trainers for vendors and healers; the guildmasters with their guilds | Gives gold a use | UOX3 shoplist.dfn (38 lists used by 86 NPCs); prices are converted already |
| 4.2 | ✅ | Secure trade between players: a window with a box each, two ticks and a swap; platinum and the refuse setting wait (Secure trade) | Player economy | ModernUO SecureTrade |
| 4.3 | ✅ | Spell casting and Magery: spellbooks, reagents, scrolls, words of power, the 64 spells. The spellbook, the casting engine, the eight circles and Reactive Armor, with Teleport, Recall, Mark and Gate Travel (travel rules of the regions read), fields, summoned creatures, Magic Reflection, Incognito and Polymorph, and Magic Lock, Unlock, Trap and Untrap on the chests. The scrolls are written with inscription. Beyond this step: sixteen of the seventeen spells of Necromancy and the first four of Chivalry, in the same engine | Half of all characters cast | UOX3 spells.dfn (mana, reagents, delay, mantra) |
| 4.4 | 🟡 | Recall, mark, gate, runebooks. Done: Mark writes a rune, Recall and Gate Travel (and Sacred Journey of Chivalry) go to it, reading the travel rules of the regions. Left: runebooks (the item exists, nothing opens it) | The way players travel; needs the region rules of 3.5 | |
| 4.5 | ✅ | Potions and alchemy effects. Done: heal, refresh, strength, agility, night sight, poison, cure and explosion, and alchemy | Small once timed effects and spells exist |
Phase 5: professions
Section titled “Phase 5: professions”| Step | State | What | Why it comes here | Data ready to import |
|---|---|---|---|---|
| 5.1 | 🟡 | Gathering: mining, lumberjacking, fishing, with resource regions that run out and regrow. Done: fishing with a pole, lumberjacking with an axe, its boards, kinds of wood and rare finds, mining nine metals, iron to valorite, and smelting them, and the areas that run out and come back. Left: the special catches of fishing | Feeds crafting | |
| 5.2 | ✅ | Crafting engine, then each craft as data; repair. The engine, its gump and carpentry, with exceptional items, the maker’s mark, tool wear and make last, and blacksmithing in iron and eight coloured metals, with exceptional weapons and armor stronger, tailoring, tinkering, bowcraft and fletching, cooking, cartography, alchemy and inscription, and repair from the crafting gump | The peaceful play style and the player economy | UOX3 create/ (618 recipes) |
| 5.3 | ✅ | Taming, pet commands, stables, mounts | Needs AI (3.2), notoriety (3.4) and vendors (4.1) | UOX3 TOTAME, CONTROLSLOTS, FOOD tags |
| 5.4 | 🟡 | The remaining active skills: hiding, stealth, stealing, snooping, lore skills, bard skills, tracking. Done: hiding, stealth, snooping, detect hidden, anatomy, evaluating intelligence and forensic evaluation (the lore skills). Animal Lore is done, and tracking with the quest arrow. Instruments and Peacemaking are done, Provocation and Discordance (its effect on a creature is small until skills can be lowered): the four bard skills are in. Stealing and Arms Lore, Item Identification and Taste Identification are done: every skill this row lists has a script, and what is left of it is in the checklist (poisoned food waits for Poisoning, unidentified items for magic items) | Each is small once 1.2 exists |
Phase 6: playing together
Section titled “Phase 6: playing together”| Step | State | What | Why it comes here |
|---|---|---|---|
| 6.1 | ✅ | Party. Invitations, the leader, the party chat, the Lua party module and its events, the bars of the members, their places on the ClassicUO map, and the spells that hit a place sparing them. Left: the Enhanced Client’s pins, sharing loot |
Needs nothing else; a small shard lives on group play |
| 6.2 | ✅ | Guilds, with war and alliance colours. Done: the guildstone and its deed found a guild, the gump of the stone works the roster, the fealty elects the leader, the charter, the website and the hue are the leader’s to write, and war and alliance are the double declaration of the two, at war orange and allied green; see Guilds. The Order and Chaos war is not built | Needs notoriety (3.4) |
| 6.3 | ✅ | Chat, bulletin boards, books, profile | Independent, small. Bulletin boards, books, the profile and the guild and alliance chats are done, next to the party chat. The legacy Alt+C window and a global chat are not built |
Phase 7: houses and boats
Section titled “Phase 7: houses and boats”The largest chain of prerequisites, and what keeps players for months.
| Step | State | What | Why it comes here |
|---|---|---|---|
| 7.1 | ❌ | Multis in movement and line of sight | Everything below stands on it |
| 7.2 | ❌ | House placement, sign, owners, friends, bans | |
| 7.3 | ❌ | Lockdowns, secure containers, decay | |
| 7.4 | ❌ | Addons (forges, looms, multi-piece furniture) | |
| 7.5 | ❌ | Player vendors | Needs houses and vendors |
| 7.6 | ❌ | Boats | Needs multis and speech keywords |
Running a shard
Section titled “Running a shard”These do not depend on the gameplay phases and are done when an operator needs them.
- Account bans, IP limits, login attempt limits, packet throttles.
- Staff tools: a props gump, an add menu, area commands. The named places of
.goand their gump are done. - The jail, the help and stuck menu and the GM page queue are done.
- Commands written in Lua.
- The schedule is done: timed tasks, the shutdown with warnings and seasonal events by date. Halloween’s trick or treat and Christmas’ snowballs and gifts are done, and the towns are decorated for both (Holidays).
After phase 7. Each of these needs most of what comes before.
- Quests: the engine is built (Quests: one Lua file per quest, the Mondain’s Legacy model); the migration of the quests of ModernUO (about 35,000 lines of C#) to that format has begun, with 224 of 257 converted and on the shard, their 99 NPCs standing where ServUO puts them; what is left waits for items and places the sources do not give.
- Treasure maps and camps. The six classic champion spawns are built already; the dungeon chests respawn, locked and trapped, and the town containers fill up already, their locks coming with priority 2.
- Virtues and factions.
- The modern ruleset: item properties, random magic loot (the five resistances are built behind
resistances, and the extended status bar shows them), special moves (nine of them are built, behindspecial_moves, see Weapon special moves), Bushido, Ninjitsu, Spellweaving, Mysticism, bulk orders, custom house design. These need packets a classic server never sends (damage numbers, the house designer). Necromancy and the first four spells of Chivalry are built already, on the classic casting engine; the rest of Chivalry follows them. - Late expansion content: imbuing, masteries, High Seas ships, vendor search, the store.
Not planned
Section titled “Not planned”- Experience and levels, skill classes: only Sphere has them.
- Tournaments and ladders, veteran rewards: content for a live shard, better made by its owner in Lua.
Data we can import
Section titled “Data we can import”Moongate already imports UOX3 items, NPCs and spawns, and ModernUO decoration, spawns, named places and teleporters. The same converters can bring most of the rule data the phases above need:
| Data | Source | Phase |
|---|---|---|
| Skill definitions: stat weights, gain curves, titles | UOX3 skills.dfn, ModernUO skills.json |
1.2 |
| Weapon and armour fields | UOX3 items/gear/ |
1.6 |
| NPC behaviour tags and speeds | UOX3 NPC files, ModernUO npc-speeds.json |
3.2 |
| Carve tables | UOX3 carve.dfn |
3.3 |
| Region rules: guarded, recall, gate, housing | ModernUO regions.json, UOX3 regions.dfn |
3.5 |
| Shop lists | UOX3 shoplist.dfn |
4.1 |
| Spells | UOX3 spells.dfn |
4.3 |
| Craft recipes | UOX3 create/ |
5.2 |
ModernUO and ServUO keep vendor lists, loot packs and craft definitions as C# classes, not data; for those UOX3 is the source.
Settings come with each system
Section titled “Settings come with each system”Sphere has about 230 settings and UOX3 about 370; Moongate documents about 100, from the infrastructure to combat, pets, regeneration, jail and the bank. Each system above arrives with its own settings (regeneration rates, criminal timers, vendor restock, decay times), documented in Configuration.
Made with ❤️ by Tom
