World config & tunables¶
Two tiers of operator-tunable values, both backed by the database so changes apply without a server restart.
world.world_config¶
Originally an AzerothCore concept: free-form (key TEXT, value TEXT)
pairs the world workers read on demand. Splintertree extends this with
per-key metadata (label, description, group, type) and surfaces a
typed editor at /admin/world-config.
- Filter by group: chat, moderation, mail, auction, raid lockouts, rates (XP, drops, gold), …
- Edit produces an audit trail. Each row's
descriptionfield is the in-app tooltip. - Common groups:
moderation_*— LLM moderator master switch, threshold, per-surface apply flags, strike window, mute duration.chat_translate_*— chat-translate enable, min character count, model assignment.xp_rate,drop_rate,gold_rate— rates as floats.mail_*,auction_*— costs, expiry windows.
tunables.rs — typed knobs¶
Compile-time-known balance numbers live in wow-world/src/tunables.rs
and are seeded into a world.tunables table on first boot. The admin
UI at /admin/tunables shows them grouped by subsystem with
type-aware inputs (i32 / f64 / bool / duration).
The feedback_all_tunables_in_db.md rule is enforced here: no
const in the Rust source for balance numbers — every dial flows
through the table, the editor, and the audit log.
Auto-broadcast¶
/admin/autobroadcast configures the world-wide announcement
rotation. Each row carries text, locale, weight, and active flag;
the world worker rotates messages on a configurable cadence.
App settings¶
Smaller key/value table auth.app_setting for cross-cluster
runtime knobs that aren't per-game (launcher_auth_host, soft-delete
window, registration_invite_only, public_mode).