Trois defauts distincts, tous confirmes par la sonde OOKDBG et par les
donnees de spawn.
1. OOK-OOK NE VENAIT PAS DANS L ARENE
La sonde montre que le chemin scripte fonctionne : « SEUIL ATTEINT »,
« Ook-Ook trouve, appel DoAction(0) », puis StartIntro. Le defaut etait
en aval, et double.
a) L appel passait CINQ arguments -- MoveJump(x, y, z, 25.0f, 25.0f) --
a une surcharge (x, y, z, o, speedXY, speedZ). Le premier 25.0f
atterrissait sur l ORIENTATION. On passe par la surcharge prenant
une Position.
b) Il passait en reaction AGRESSIVE juste avant de sauter. Les joueurs
sont 16 m plus bas, donc a portee : il acquerait une cible et le
mouvement de poursuite ecrasait le saut. N ayant aucun chemin pour
descendre, il restait plante sur son perchoir -- ce qui explique
aussi qu il ait ete attaquable trop tot. Il reste passif pendant le
saut et devient agressif a l atterrissage (MovementInform, en
EFFECT_MOTION_TYPE, que le filtre existant ecartait).
Le domicile est fixe avant le saut, sinon l evade le ramene en haut.
2. TONNEAUX ENCASTRES DANS LE DECOR (capture a l appui)
DoCastBarrel figeait l altitude a 146.79, soit le sol de l arene
(ookJumpPos = 146.92). Or les Hurleurs se tiennent entre 155,6 et 161,5 :
le tonneau etait depose 9 a 15 m SOUS son lanceur, a la verticale du
balcon mais a l altitude du plancher. On interroge desormais le sol reel
sous le point vise, et le tonneau suit le sol pendant qu il roule.
3. BARRE DE BANANES BLOQUEE A 39
Le test portait sur la valeur APRES incrementation (« + 1 < 40 ») : la
barre n atteignait jamais 40/40. Signale comme « Ook-Ook apparait avant
40/40 » -- il apparaissait au bon moment, c est l affichage qui etait en
retard d une unite. Le compteur d instance, lui, etait monte a 94.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
SylvaniaCore
Le core C++ du royaume La Légion de Sylvania Émulateur de serveur World of Warcraft® — Legion 7.3.5
📖 Présentation
SylvaniaCore est le core qui fait tourner La Légion de Sylvania, un royaume francophone World of Warcraft® en version Legion 7.3.5. C'est un fork de DestinyCore (lui-même issu de la lignée TrinityCore), maintenu et développé en continu pour les besoins du royaume.
Le dépôt sert à la fois de base de code vivante et de sauvegarde du serveur en production.
Philosophie : « blizz adaptatif »
Ce n'est pas un serveur fun ni un serveur rates x∞. Les valeurs authentiques de Blizzard (dégâts, tuning, économie) sont préservées ; le travail de fond consiste à corriger les écarts au blizzlike plutôt qu'à adoucir le jeu. Chaque bug rencontré en jeu est corrigé à la source — côté données ou côté core — jamais contourné à coups de commandes MJ.
✨ Ce que SylvaniaCore ajoute
Au-delà du core amont, le royaume apporte ses propres systèmes :
| Module | Description |
|---|---|
| 🤖 PlayerBots | Bots joueurs pilotables (src/server/game/PlayerBot) : ordres de groupe, rôles tank/heal, gestion d'équipement, remplissage automatique des champs de bataille |
| ⚔️ Siège des Capitales | Invasion quotidienne des capitales par des raids de bots, avec meneur désigné et joueurs flaggés PvP (src/server/game/CapitalSiege) |
| 💰 Mercenaires | PNJ de louage : un joueur solo recrute des compagnons contre pièces d'or, sous contrat (src/server/game/Mercenary) |
| 🇫🇷 Localisation frFR | Restitution des textes officiels français extraits du client 7.3.5 (quêtes, dialogues, broadcast texts) et traduction des contenus scriptés manquants |
| 🐛 Correctifs de contenu | Campagnes, donjons et quêtes remis en état zone par zone (Mardum, Île Vagabonde, Cime du Vortex…) |
🛠️ Prérequis
- CMake 3.31+
- Boost 1.84.0
- MySQL 8.0 ou MariaDB 10.6+ (le royaume tourne sur MariaDB 11.4)
- OpenSSL 3.x
- GCC / Clang / MSVC (Visual Studio 2022 recommandé)
Plateformes supportées : Linux, Windows, macOS.
📦 Compilation
-
Cloner le dépôt :
git clone https://github.com/BlaMacfly/SylvaniaCore.git cd SylvaniaCore -
Configurer et compiler :
cmake -S . -B build -DTOOLS=ON cmake --build build -j$(nproc) -
Installer les bases de données — voir la section Installation de la base de données ci-dessous.
-
Lancer les serveurs :
./bin/worldserver ./bin/bnetserver
ℹ️ Le code source conserve volontairement les noms internes hérités de l'amont (
DestinyCore, cibles CMake, chemins de configuration) afin de rester compatible avec les mises à jour amont et de ne pas casser les scripts de déploiement existants.
💾 Installation de la base de données
Le dépôt ne contient que les schémas auth, characters et shop. Les bases world et
hotfixes sont trop volumineuses pour être versionnées : elles se téléchargent dans les
releases du dépôt amont DestinyCore.
⚠️ N'importez jamais les fichiers de
sql/base/dev/. Ce sont des structures vides (tables sans aucune donnée) destinées aux développeurs de l'amont. Les importer donne une baseworldcreuse : le worldserver démarre, mais le client reste bloqué sur l'écran de chargement.
1. Télécharger la base amont
Récupérez la dernière release DB sur
slash-design/DestinyCore/releases
(à ce jour DB735.02.rar, ~84 Mo). L'archive contient deux dumps :
| Fichier | Base | Taille décompressée |
|---|---|---|
DB_world_735.02.sql |
world |
~375 Mo |
DB_hotfixes_735.02.sql |
hotfixes |
~127 Mo |
Ces deux dumps effectuent eux-mêmes leur CREATE DATABASE puis leur USE sur les noms world et
hotfixes ; pour utiliser d'autres noms de bases, éditez ces deux lignes en tête de fichier.
2. Créer les bases et importer
# Bases auth / characters / world / hotfixes
mysql -u root -p < sql/create/create_mysql.sql
# La base shop n'est pas couverte par le script amont
mysql -u root -p -e "CREATE DATABASE shop DEFAULT CHARACTER SET utf8;"
# Schémas fournis par le dépôt
mysql -u trinity -p auth < sql/base/auth_database.sql
mysql -u trinity -p characters < sql/base/characters_database.sql
mysql -u trinity -p shop < sql/base/shop_database.sql
# Bases complètes issues de la release amont
mysql -u trinity -p < DB_world_735.02.sql
mysql -u trinity -p < DB_hotfixes_735.02.sql
3. Laisser le core appliquer les mises à jour
N'importez rien à la main depuis sql/updates/. Dans worldserver.conf :
Updates.EnableDatabases = 31 # auth + characters + world + hotfixes + shop
Updates.AutoSetup = 1
Au premier démarrage, le worldserver applique lui-même les quelque 330 fichiers de
sql/updates/world, ainsi que ceux de characters et hotfixes. La table updates des dumps
amont est livrée vide : c'est normal, tout l'historique est rejoué. Comptez plusieurs minutes.
4. Correctifs de contenu du royaume (optionnel)
sql/sylvania/ est la trace versionnée des correctifs data appliqués à la base du royaume
(artefacts, campagnes, donjons, modules Mercenaires et Siège des Capitales…). Ils sont indépendants
du mécanisme de mise à jour automatique et s'importent à la main, dans l'ordre chronologique, une
fois les étapes précédentes terminées. La base world de production du royaume n'est pas
distribuée.
🩺 Bloqué sur l'écran de chargement ?
Ces deux messages apparaissent à chaque connexion sur tous les serveurs de cette lignée et ne sont pas des erreurs :
Client tried to call not implemented method ResourceService.GetContentHandle
Received not handled opcode [CMSG_GET_ACCOUNT_CHARACTER_LIST ...]
ResourceService est un service Battle.net resté à l'état d'ébauche en amont, et
CMSG_GET_ACCOUNT_CHARACTER_LIST (liste des personnages inter-royaumes) est délibérément déclaré
STATUS_UNHANDLED dans src/server/game/Server/Protocol/Opcodes.cpp. Si le client reste bloqué au
chargement, cherchez plutôt du côté :
- d'une base
worldouhotfixesmal importée — voir l'avertissement sursql/base/dev/; - du cache du client : videz son dossier
Cache; - des données extraites —
dbc/,maps/,vmaps/,mmaps/,cameras/etgt/doivent provenir d'un client 7.3.5 build 26972, etDataDirdoit pointer sur le dossier qui les contient ; - de
DBErrors.loget des lignes de démarrage du worldserver, qui nomment la table fautive.
🌍 Rejoindre le royaume
Le serveur de jeu est ouvert et le site officiel explique comment s'y connecter : legendesylvania.com
🤝 Contribuer
Les contributions sont les bienvenues — correction de bug, amélioration de la documentation ou nouvelle fonctionnalité :
- Forkez le dépôt
- Créez une branche dédiée
- Ouvrez une pull request
Un Discord est ouvert aux contributeurs et aux personnes qui souhaitent participer au développement du core : c'est l'endroit où discuter d'un correctif avant de se lancer, poser des questions sur l'architecture ou faire relire une PR. (Ce n'est pas le Discord des joueurs du royaume.)
🐛 Signaler un problème
Ouvrez un ticket sur le suivi d'issues. Vérifiez au préalable qu'un rapport identique n'existe pas déjà.
🙏 Remerciements
SylvaniaCore n'existerait pas sans le travail des projets dont il descend :
- DestinyCore — le core amont dont ce dépôt est un fork
- TrinityCore — la lignée d'origine
- ArgusCore, le projet de FlyingPhoenix — une référence majeure pour SylvaniaCore. Un travail considérable y a été mené sur le moteur, la couche réseau et les mécaniques de classes en 7.3.5 ; nous nous en inspirons régulièrement pour remettre en état des pans entiers du core. Merci pour tout ce qui est partagé ouvertement.
- mod-playerbots — référence sur la logique des bots joueurs
État de la CI du dépôt amont :
📜 Licence
Distribué sous GPL v2.0. Voir le fichier LICENSE.
World of Warcraft® et Blizzard Entertainment® sont des marques déposées de Blizzard Entertainment, Inc. Ce projet n'est ni affilié à Blizzard Entertainment, ni approuvé par elle.