Skip to content

Module Siege des Capitales

SylvaniaCore deploy edited this page Aug 31, 2026 · 1 revision

Module Siège des Capitales

État : écrit, livré, déployé — mais siege_enable = 0 en production. Le module attend un équilibrage final et la route d'Orgrimmar.

Événement quotidien : ~50 playerbots de niveau 110 assaillent la capitale adverse et tuent son dirigeant.


Décisions de conception

Elles sont arrêtées — ce ne sont pas des options ouvertes.

  • On assaille le vrai spawn permanent du dirigeant, pas un clone temporaire : Anduin (107574) à Hurlevent, Vol'jin (42283) à Orgrimmar. Leur spawntimesecs est de 120 s, l'impact sur le monde est donc nul.
  • Le retrait de UNIT_FLAG_IMMUNE_TO_PC sur Anduin et la montée de niveau / points de vie se font en mémoire uniquement, jamais en base.
  • Les bots n'engagent que les joueurs déjà flaggés PvP (siege_pvp = 1). Un joueur qui ne veut pas participer n'est jamais attaqué.
  • Hurlevent d'abord, Orgrimmar en réplique ensuite.

Architecture

src/server/game/CapitalSiege/
├── CapitalSiegeMgr.{h,cpp}   # 1 141 lignes — ordonnanceur, spawner, dirigeant
└── CommandSiege.{h,cpp}      #   320 lignes — commandant de la horde d'invasion
src/server/scripts/CapitalSiege/
├── cs_capital_siege.cpp      # commandes GM
├── capital_siege_world.cpp
└── capitalsiege_script_loader.cpp

CommandSiege joue le même rôle que CommandBG en champ de bataille : il ne combat pas lui-même, il distribue des ordres de déplacement aux bots, qui gèrent leur combat seuls via BotBGAI.

Différence essentielle avec CommandBG : il n'est pas rattaché à un Battleground. La progression suit une route de waypoints chargée depuis la table aiwaypoints, et chaque bot avance à son rythme le long de cette route.

Le module expose CapitalSiegeMgr::IsAccountEngaged(), consommé par le Module Mercenaires pour ne pas débaucher un bot en pleine invasion.


Les routes : relevées en jeu, pas déduites de la base

C'est la leçon du chantier. La route de Hurlevent (30 waypoints, entrées 1000-1029, commit 7b781cf6) a été obtenue en enregistrant le trajet d'un joueur réel :

  1. un script échantillonne la position du joueur en boucle (saveall + requête sur characters) ;
  2. élagage des boucles ;
  3. sous-échantillonnage.

Les coordonnées déduites de la base donnaient de bien moins bons résultats — c'est la montée en paliers du donjon (les escaliers, les paliers intermédiaires) qui débloque tout, et elle ne se déduit pas des données.

Reproduire pour Orgrimmar : mêmes étapes, waypoints 2000-2099.


Réglages mesurés

Campagne de mesure du 15/08/2026, 50 bots sur la route relevée. Les valeurs retenues sont siege_engage_range = 10 et siege_boss_engage_range = 40 : un rayon d'engagement trop large fait décrocher la colonne sur les gardes en chemin, et le dernier bot n'arrive jamais au dirigeant.

siege_maxdiff = 400 est la soupape de sécurité : au-delà de cette charge serveur, le module se met en retrait plutôt que d'aggraver le lag.


Commandes GM

.siege … — permission RBAC_PERM_COMMAND_EVENT :

Commande Effet
.siege status État de l'assaut en cours
.siege start Déclenche un siège immédiatement
.siege stop Interrompt l'assaut
.siege recruit Force le recrutement de l'armée
.siege history Historique des sièges

Base de données

sql/sylvania/capital_siege.sql⚠️ crée deux tables dans characters, pas dans world (exception dans un dossier qui vise surtout world).

sql/sylvania/capital_siege_waypoints_sw.sql — route de Hurlevent, entrées aiwaypoints 1000-1029.


Configuration

Voir Configuration pour la liste exhaustive (une quarantaine de clés siege_*, dont un bloc complet par faction : carte, entrée et spawn du dirigeant, coordonnées du boss et du point de rassemblement, plage d'itinéraires).

siege_enable            = 0     # <- non activé en production
siege_hour_min          = 6
siege_hour_max          = 24
siege_botcount          = 50
siege_botlevel          = 110
siege_duration          = 3600
siege_pvp               = 1
siege_engage_range      = 10
siege_boss_engage_range = 60
siege_maxdiff           = 400

Avancement

Étape État
E0 nettoyage debug · E1 squelette · E2 SQL · E3 ordonnanceur
E4 route de Hurlevent (30 waypoints)
E5 CommandSiege · E6 mode siège dans BotBGAI
E7 spawner étalé · E8 dirigeant ✅ déployé
E9 commandes GM
E10 Orgrimmar (waypoints 2000-2099) ⬜ à faire
Équilibrage final + activation ⬜ à faire

Clone this wiki locally