Je peine à démarrer la programmation client-serveur, il me faut du temps pour assimiler le code des compétences que j’avais copié des vidéos de Ryan Laley.
Son code fonctionne, mais il comporte des éléments logiques qui me contrarient et, comme je l’ai déjà dit, j’ai un esprit très étroit en matière de logique, si je perçois la moindre faille il faut que je l’élimine. C’est probablement une conformation naturelle et cela me permet de construire des cathédrales de code d’une fiabilité à toute épreuve mais qu’est-ce que c’est éreintant d’être incapable de rien passer !
Par exemple, Ryan a conçu son système de telle manière que chaque compétence est attachée au joueur qui la crée. A première vue, c’est bon. Sauf que ça ne l’est pas du tout : si un PNJ utilise une de ces compétences, il n’est pas de la même classe que les joueurs et donc des variables pertinentes pour les joueurs pointent dans le warp pour des non-joueurs, ce qui fait s’effondrer tout l’édifice à long terme.
Qui plus est, il utilise deux variables différentes au sein des compétences pour référencer le joueur, chose qui m’est absolument insupportable. Deux trucs identiques, c’est inacceptable, pour une question de lisibilité et de maintenance.
J’ai corrigé tout ça, sauf que dans un cas très particulier il appelle une fonction après la séquence d’initialisation d’une classe fille et avant celle de sa classe mère. En sandwich quoi. Oui, mais pas de bol, cette variable de référence du joueur n’existe pas avant l’appel de la classe mère, j’ai donc dû référencer directement le joueur au lieu d’utiliser sa variable de référence. Ce qui importe peu puisque de toutes façons son système ne marche pas pour les non-joueurs, je verrai donc ça plus tard, éventuellement. Pour référence future, le problème réside dans la fonction “ClearDuplicates”.
Demain j’espère pouvoir enfin travailler vraiment sur la réplication.