Skip to content

docs(monsters): data-driven monsters and NPCs design (MN0) - #130

Closed
Mosch0512 wants to merge 1 commit into
mainfrom
docs/monsters-design
Closed

Mosch0512 wants to merge 1 commit into
mainfrom
docs/monsters-design

Conversation

@Mosch0512

Copy link
Copy Markdown
Owner

Summary

The design document for area MN (Monsters and NPCs) of the data-driven content roadmap, written from the code: docs/superpowers/specs/2026-10-23-data-driven-monsters-design.md. Documentation only; no code changes.

Monsters and NPCs become data like the items: a monster entry per number (names in every language, kind, model, setup at spawn, which animation each skill plays, NPC talk rules) in Data/Monsters/Monsters.json, model entries (file, textures, animation speeds, sounds, bounding box, weapon bones) in Data/Monsters/Models.json, and focused MuEditor tools that share one monster selection (browser, setup, attacks, model, preview with an animation preview, translations, checks).

What the document covers

  • Current state: the five ways a monster reaches the client (0x13, 0x1F, 0x45, 0x68, cinematics), CreateMonster with its 269 cases and the map creators, OpenMonsterModel / OpenNpc (519 speed overrides, 387 sound loads), the attack animation handlers and MonsterSkill.bmd (only 20 of its 56 monsters are ever read), death, idle and movement code, NPC talk rules, and what OpenMU knows (489 numbers, names, kinds, event skills).
  • Decisions D44–D60, among them: attack animations by skill number with any animation (none, otherwise, clearSkill) instead of the BMD's positions; names follow the UI language; edits reach the running game; the monster tools use the shared editor undo.
  • Problems found P1–P19, kept as they are when their phase moves the code and fixed one by one afterwards (e.g. the Kalima gate name copy overflowing into the gate's key and number, Molt's missing model file, the Imperial Guardian trap 523 showing as a Bull Fighter).
  • Verification: a committed monster recorder comparing old and new code per monster number, map and slot state, and how it runs in a test binary without a GPU.

Pull requests planned

PR Phases Contents
1 MN.P, MN1 cppcheck fixes; monster list, names and kind; Monster Browser, Translations, Checks
2 MN3, MN2, MN7 models; attack animations; sounds per animation; Monster Model and Monster Preview
3 MN4, MN5 setup at spawn; NPC talk rules; Monster Setup
later MN6 + MN-B, MN8, MN9 OpenMU sync (needs items phase 7), looks (needs items phase 13), cleanup

Roadmap

The roadmap links the design (MN row), records the model list per area as decided, adds NPC dialogues and quests to the "later" area, a read-only "what a skill uses" view to SK1, and the shared tool basics of the editors.

How it was checked

Two review rounds over seven areas (spawn, data files, rendering, attacks, OpenMU, editor and tests, the document's own claims), every finding checked by a second reviewer, a completeness check, and a final check of consistency, facts and coverage. All 15 open questions were answered on 2026-10-23.

The design document of the roadmap's area MN, written from the code: how a
monster or NPC reaches the client (0x13, 0x1F, 0x45, 0x68, the cinematics),
its numbers, names and kind, its setup at spawn, its models, animation
speeds and sounds, which animation an attack or a skill plays (MonsterSkill.bmd
and the hard-coded map handlers), death, idle and movement code, the NPC
talk rules, and what OpenMU knows about monsters.

It decides D44-D60 (monster and model entries in Data/Monsters/Monsters.json
and Models.json, attack animations by skill number, names by language,
editing a running game, the monster tools sharing one selection), lists the
problems found on the way (P1-P19), the verification with a monster
recorder, and the phases MN1-MN9 with MN-B on the OpenMU side, grouped into
three pull requests now and three later ones. All 15 questions were answered.

The roadmap links it: the MN row, the model list per area (decided), the
"later" area gets NPC dialogues and quests, a read-only "what a skill uses"
view for SK1, and the shared tool basics of the editors.
@Mosch0512

Copy link
Copy Markdown
Owner Author

Upstream merged the design as sven-n#848; closing the fork PR without merging (fork main mirrors upstream).

@Mosch0512 Mosch0512 closed this Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant