-
Notifications
You must be signed in to change notification settings - Fork 5
Architecture du core
TrinityCore → DestinyCore (slash-design) → SylvaniaCore (branche sylvaniacore)
↑
ArgusCore (référence, pas un parent)
-
Branche de travail :
sylvaniacore(anciennementdestinycore— toute doc parlant de cette branche est périmée). -
Amont : remote
upstream→slash-design/DestinyCore, basemaster @2d631f4e, ~227 commits de divergence. Compte exact :git rev-list --count 2d631f4e..HEAD. -
ArgusCore (
Trion-Control-Panel/ArgusCore, projet de FlyingPhoenix) : pas un ancêtre, pas d'historique commun — donc aucun cherry-pick possible. C'est une référence dont on transcrit manuellement les correctifs. Voir Chantiers en cours. -
mod-playerbots (
liyunfan1223/mod-playerbots, AzerothCore) : référence de logique pour les bots.
Le code conserve délibérément les noms internes de l'amont (DestinyCore, cibles CMake, chemins de
configuration). C'est ce qui rend les mises à jour amont lisibles.
src/server/
├── authserver/ # (héritage) — le royaume utilise bnetserver
├── bnetserver/ # authentification Battle.net
├── worldserver/ # binaire du monde + worldserver.conf.dist
├── database/ # couche SGBD, pools de workers
├── shared/
└── game/ # le cœur
Modules hérités (TrinityCore / DestinyCore) :
AI · Accounts · Achievements · Archaeology · AuctionHouse · AuctionHouseBot · BattlePay ·
BattlePets · Battlefield · Battlegrounds · BlackMarket · BrawlersGuild · Calendar ·
ChallengeMode · Chat · Combat · Conditions · DataStores · DungeonFinding · Entities ·
Events · Garrison · Globals · Grids · GroupFinder · Groups · Guilds · Handlers ·
Instances · Loot · Mails · Maps · Miscellaneous · Movement · OutdoorPvP · Phasing ·
Pools · Quests · Reputation · Scenarios · Scripting · Server · Services · Skills ·
Spells · Support · Texts · Tools · Warden · Weather · World
Modules propres au royaume :
| Dossier | Lignes | Contenu |
|---|---|---|
PlayerBot/ |
~8 200 |
PlayerBotMgr (3 611), PlayerBotSetting (2 752), FieldBotMgr (1 093), AIWaypointsMgr (429), PlayerBotTalkMgr (348) |
Mercenary/ |
~1 730 |
MercenaryChat (967), MercenaryMgr (763) |
CapitalSiege/ |
~1 460 |
CapitalSiegeMgr (1 141), CommandSiege (320) |
C'est l'héritage amont, et il est bien plus riche qu'il n'y paraît :
PlayerAI.cpp BotAI.cpp BotAISpells.cpp BotAITool.cpp
BotMovementAI.cpp BotBGAIMovement.cpp
BotArenaAI/ BotClassAI/ BotDuelAI/ BotFieldAI/ BotGroupAI/
À lire avant d'écrire quoi que ce soit sur les bots :
BotGroupAI::ProcessBotCommand(BotGroupAI/BotGroupAI.cpp:640) implémente déjà un système complet d'ordres — summon, follow, stop, attack, gestion d'équipement, ciblage par rôle et par classe. Ne le réécrivez pas. Voir Commandes en jeu.
| Chemin | Contenu |
|---|---|
sylvania/ |
Notes internes du fork + scripts/ (release des bases, réconciliation de schéma, modèle de rollback) |
sql/sylvania/ |
119 correctifs de données du royaume, appliqués à la main (Bases de donnees) |
chantiers/ |
Matériel de travail d'un chantier en cours (aujourd'hui rivage_brise/) |
plans/ |
Analyses et feuilles de route (00-arguscore-analysis-and-roadmap.md) |
ARGUSCORE_FIXES.md |
Backlog de la passe de maintenance sécurité/stabilité/blizzlike, une entrée par correctif |
doc/ |
Documentation héritée TrinityCore (compilation, logging, scripting) |
Ils reviennent constamment. Les connaître fait gagner des heures.
Trois variantes, par ordre de fréquence :
-
creature_template.ScriptNamevide alors qu'une IA C++ existe (surzone_mardum.cpp: 29 scripts déclarés, 12 rattachés) ; -
ScriptNamemal orthographié, pointant sur un nom inexistant — ce core ne journalise aucun avertissement pour un ScriptName inconnu ; -
hook mort dans
ScriptMgr: déclaré, défini… et appelé de nulle part. Cas avéré :ScriptMgr::OnCompleteQuestChoice. Le seul hook réellement invoqué pour les PlayerChoice estOnPlayerChoiceResponse, depuisQuestHandler.cpp.
Méthode de détection complète : Corriger le contenu.
BotAIFly::UpdateFly commençait par un return; en tête de corps. Réflexe à avoir dans ce core :
avant de déboguer une fonction qui « ne fait rien », lire sa première ligne.
FactorySelector::selectAI teste le ScriptName AVANT l'AIName. Conséquence pratique : laisser
AIName = 'SmartAI' en place quand on rattache un script C++ sert de filet de sécurité — si le
script disparaît, le SmartAI reprend la main.
Corollaire : ne rattachez un script C++ que s'il est un sur-ensemble strict du SmartAI existant, ou
si le PNJ est totalement inerte. Deux cas rencontrés où il fallait ne rien faire :
npc_mardum_allari (94410) et npc_mardum_sevis_brightflame_shivarra (99915) sont des ébauches de
~12 lignes marquées // TEMP FIX, alors que leur SmartAI implémente tout le mécanisme. Les rattacher
aurait cassé ce qui marchait.
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