-
Notifications
You must be signed in to change notification settings - Fork 3
Module Siege 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.
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. Leurspawntimesecsest de 120 s, l'impact sur le monde est donc nul. - Le retrait de
UNIT_FLAG_IMMUNE_TO_PCsur 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.
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.
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 :
- un script échantillonne la position du joueur en boucle (
saveall+ requête surcharacters) ; - élagage des boucles ;
- 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.
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.
.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 |
sql/sylvania/capital_siege.sql — 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.
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| É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 |
SylvaniaCore — GPL v2 · La Légion de Sylvania · Discord contributeurs World of Warcraft® et Blizzard Entertainment® sont des marques déposées de Blizzard Entertainment, Inc. Projet non affilié.
Démarrer
Comprendre
Modules
Développer