J’étais fortement contrarié par la boule de feu à fragmentation.
En clair, chaque fois que je lançais une boule de feu avec plus d’un joueur connecté, un double du sort se créait par joueur supplémentaire.
J’avais aussi le souci de ne pouvoir accéder à ma variable globale d’interface pour la cacher ou l’afficher.
J’ai réfléchi – en faisant autre chose – pendant quelques jours et je suis arrivé à la conclusion que le moteur créait une interface par joueur sur chacun des joueurs. Donc, s’il y a trois joueurs, chaque joueur crée trois interfaces.
Cela m’avait obligé de renoncer à utiliser ma variable globale d’interface, qui, du coup, ne sert plus à grand-chose, et forcé à utiliser un “get all widgets of class” pour masquer l’interface, l’élément 0 de la table ainsi renvoyée étant toujours celui du joueur concerné. C’était lourd, illogique et donc de nature à me bloquer complètement.
Aujourd’hui, j’ai déplacé le code de création de l’interface du “player character” vers le “player controller” et tous les problèmes se sont résolus. La boule de feu ne se duplique plus et je peux utiliser ma variable pour accéder à l’interface.
Je suis par contre tombé sur un autre problème : il ne m’était plus possible de cliquer sur un NPC pour le sélectionner après avoir masqué-affiché l’interface. La solution est d’affecter la valeur “Not hit – testable (self only)” à l’interface globale, ce qui est d’ailleurs la valeur par défaut. Pas logique ce nom qui ne veut rien dire, c’est pour cela que j’utilisais la valeur “Visible” tout bêtement, mais ça ne marchait pas.
J’avais à régler un dernier problème : en version compilée, l’application n’affichait pas les raccourcis clavier. J’ai déplacé le code après la vérification que le niveau du joueur est chargé et tout est rentré dans l’ordre.
Il ne reste donc plus aucun bug connu à ce jour, je vais pouvoir reprendre le cours normal du développement de la réplication, c’est une étape importante.