Skip to content

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 description field 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).