Signale en jeu : « j ai utilise ma pierre de foyer qui ne m a pas
teleporte, je devais atterrir en foret d Elwynn et il est ecrit vous
renvoie a Fleur-de-l hiver alors que je n ai pas change le lieu ».
La pierre fonctionnait parfaitement : elle renvoyait a Mardum, ou le
joueur se trouvait deja -- d ou l impression qu elle ne faisait rien.
CAUSE, dans spell_mardum_back_to_black_temple :
player->TeleportTo(1468, 4325.46f, -620.53f, -281.40f, 1.517563f);
player->SetHomebind(player->GetWorldLocation(), 7873);
TeleportTo est ASYNCHRONE : le joueur n est pas deplace a la ligne
suivante, si bien que GetWorldLocation() renvoyait encore la position de
MARDUM. Le point de foyer se retrouvait donc fixe la ou le joueur venait
de partir, au lieu du Caveau des Gardiennes (carte 1468) visé.
Constate en base : character_homebind du personnage pointait sur
mapId 1481 (Mardum), zone 6383.
On lie desormais explicitement a la DESTINATION, via une WorldLocation
construite une fois et passee aux deux appels.
Le point de foyer du personnage affecte a ete remis en foret d Elwynn,
avec des coordonnees reprises d un homebind Alliance deja valide dans
notre base plutot qu inventees.
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.