Skip to content

feat(importer): load all creature definitions and map populations - #688

Merged
Mathih13 merged 2 commits into
mainfrom
feat/full-world-creature-import
Oct 12, 2026
Merged

Mathih13 merged 2 commits into
mainfrom
feat/full-world-creature-import

Conversation

@Mathih13

@Mathih13 Mathih13 commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

Bounded imports leave creature definitions and map populations out of the database. They also require separate source inputs for dependent catalogues, such as taxi mount models.

Add full-world, full-eastern, full-kalimdor, and full-instances. Every full profile loads the complete creature catalogue. Spawn positions follow map ownership; full-world retains all 66,310 source positions across 34 maps and all 10,384 definitions. A complete import loads client catalogues and spells before AI, using the same dump for taxi mounts. Gateway bindings follow the CLI generation workflow on main; generated files are ignored.

Preserve population alternatives, legacy pools, fractional chances and event links. Retain summoned quest-giver relations. Resolve creature zones when zone-wide speech is emitted. Give each dungeon and raid Instance its own creature and patrol copies, with respawn and teardown. Complete the EventAI mappings and static dependencies needed by the pinned source, and check imported dungeon hosting at Gateway startup.

What was verified

  • Full pinned-source import and populated-roster reimport at 1ff12c71 on a private local SpacetimeDB node. The final pool repair retains all 66,310 positions and accounts for 998 pooled positions in 270 root pools.
  • EventAI readiness: 10,843 classified rules, zero dropped rules and zero unapproved result groups. Existing exclusions are unchanged.
  • Durable tests for all 26 dungeon maps, independent Instance copies, patrols, corpse decay, respawn, teardown, alternate world entries and reimport. Durable tests also cover pooled selection, two same-map Instances surviving independent death and teardown, late-terrain zone speech, autoattack, sheath state, copied AI and relay lifecycle.
  • Plain publish from a31f54ce retained an imported spawn and applied the appended field defaults.
  • Local checks, including the rebased Gateway and Module suites: 434 importer tests, 1,578 Module unit tests, 2,016 Gateway unit tests plus its integration targets, six full-world durable tests, and all eleven Benilla durable tests. Clippy, formatting and regenerated bindings pass. Python and importer shell checks also passed. The Official Package Collection also passes its API check and Wasm compile with the companion fixture update. macOS durable targets used the existing dynamic-lookup linker workaround.

Limits and risk

This imports map populations. Seasonal activation, conditional squads, pool rotation after deaths, missing encounter scripts, raid lockouts and battleground rules remain separate work. Conditional positions remain dormant. Interior collision coverage is not complete. Reimport clears creature copies while retaining existing Instance leases; recreate those Instances before resuming play.

The companion Packages PR #83 initializes the new fields in ten playerbot fixtures. The Core and Packages changes must land together.

The schema adds tables, appends defaulted fields and appends enum variants. All serving shards need the matching Module and Gateway. Production capacity, complete terrain extraction and play through a real 1.12.1 client were not tested. Production was not changed.

Made with GPT-6 Astra through the Codex harness in T3 Code.

@Mathih13

Copy link
Copy Markdown
Contributor Author

Two independent adversarial passes found legacy creature pools being ignored, summoned quest givers losing their relations, and creature zone speech using an unset zone. The repair preserves initial pool selection, keeps the summon dependency relations, and resolves the speaker zone at emission. Both reviewers cleared the combined changes.

The final head is 495838db6fa46c86c59fbeef110000a8d88cf8d5, rebased onto ff2e6d6b. Local verification passed the pinned-source pool census, six full-world durable tests, eleven Benilla durable tests, the relevant unit suites, Clippy and all generated bindings. The Linux subscription-parity manifest now includes the new map table, and the Benilla fixture waits for its Account projection.

Final-head CI is running. Packages #83 remains paired with this change. No production operations were performed.

@Mathih13
Mathih13 force-pushed the feat/full-world-creature-import branch from 495838d to 8b2a8e5 Compare October 12, 2026 10:08
@Mathih13

Copy link
Copy Markdown
Contributor Author

Rebased onto 5bb75ba4 after the CLI bindings change. The current head is 8b2a8e570f1f8160a61ec955dde9aced6d342c39. Kept the new generation workflow and removed all generated bindings from this PR. Every handwritten feature patch is unchanged.

Independent conflict review confirmed the generated feature types and table accessors match the reviewed versions. ./lyracore bindings, its freshness check, workspace Clippy, formatting and Gateway tests pass locally. CI is rerunning on this head before the paired merge.

@Mathih13
Mathih13 merged commit 89c2663 into main Oct 12, 2026
9 checks passed
@Mathih13

Copy link
Copy Markdown
Contributor Author

Merged after the independent adversarial reviews cleared the repairs and all nine checks passed on 8b2a8e570f1f8160a61ec955dde9aced6d342c39. The paired fixture update, LyraCoreProject/packages#83, is also merged.

The full import profiles now include all 10,384 creature definitions and 66,310 source positions across 34 maps, with map populations scoped to each Shard. Initial pool selection and per-Instance copies have focused durable coverage. Generated Gateway bindings use the CLI and stay ignored.

The full local import and reimport passed before the final pool repairs; the repaired pool census and durable tests passed afterward. No Argus deployment or live import was performed. The requested server follow-up was cancelled.

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