Murloc Cult

Retour aux archives

mod-free-will : Crashtroller devient un joueur autonome joué par le serveur

Nouveau module écrit de zéro sur le core officiel : le serveur connecte lui-même Crashtroller dans une session sans client et le fait jouer comme un humain — quêtes, combat, butin, repos, mort, marchand, maître de classe, talents, équipement — sans aucune triche.

Commit
2bf59b3
Build
Build réussi (7 min) · Cible worldserver

Principe

Aucun module tiers : mod-free-will est écrit pour ce royaume, sur AzerothCore officiel.

  • Session sans client : quand aucun humain ne joue Crashtroller, le serveur ouvre une WorldSession sans socket et charge le personnage par le même chemin qu'un vrai client (LoginQueryHolder → HandlePlayerLoginFromDB).
  • Passation : dès que le propriétaire sélectionne le personnage (CMSG_PLAYER_LOGIN, traité dans le thread monde), l'IA le sauvegarde et le libère de façon synchrone ; le core le recharge pour l'humain.
  • Aucune triche : chaque action passe par les gestionnaires de paquets du core (accepter/rendre une quête, fouiller un cadavre, vendre, réparer, s'entraîner, apprendre un talent, s'équiper, libérer l'esprit, reprendre son corps) ou par des sorts non déclenchés — coûts, portées, recharges et règles appliqués comme pour un client.
  • Déplacements naturels : chemins calculés sur le maillage de navigation (mmaps) puis suivis en spline ; jamais de téléportation ni de ligne droite à travers un mur.

Le cerveau

Boucle de décision exécutée dans le thread monde (cartes à l'arrêt), avec des temps de réaction aléatoires :

  1. mort → attendre, libérer l'esprit, courir vers son cadavre, attendre que la zone soit sûre, ressusciter (gardien des esprits en dernier recours) ;
  2. combat → rotation par classe (10 classes), tir à distance pour le chasseur, mêlée au contact ;
  3. butin, repos assis / nourriture / boisson ;
  4. marchand (vente des objets gris et inutiles, réparation, munitions, vivres), maître de classe à chaque niveau ;
  5. quêtes : rendre, prendre (au camp d'abord), remplir les objectifs (tuer, ramasser, explorer) ; abandon d'une quête sans progrès en 25 min ;
  6. chasse à son niveau, puis flânerie (et un salut aux joueurs qui passent).

Connaissance du monde

Construite au démarrage en ~120 ms : 17 462 entrées de créatures, 2 545 objets de quête localisés (qui les lâche, quel coffre les contient), PNJ de service, zones d'exploration.

Monitoring

Fichier de statut JSON réécrit toutes les 5 s (contrôle, niveau, XP, position, quêtes, activité, objectif, statistiques) et journal des événements.

Premier test

Connecté par le serveur, Crashtroller est allé voir Kaltunk, a accepté « Your Place In The World » et l'a rendue seul.