Unreal a un gros problème : la communication entre blueprints.
Ainsi, pour que la barre de compétences sache qu’un de ses éléments a été activé, Ryan Laley a programmé un “Event dispatcher” dans le blueprint du personnage ; quand on presse sur un bouton, le bouton obtient une référence du blueprint du personnage et active un “call”, soit un “Eh! les gars, un truc vient de se passer”. A ce moment, la barre de compétences reçoit cet “Event dispatcher” qu’elle est programmée pour écouter, et lance la procédure de cooldown de la compétence.
Le problème, c’est que si on active une deuxième compétence alors que le cooldown de la première n’est pas terminé, la première compétence existe toujours en tant qu’objet et reçoit le message “Eh! les gars, un truc vient de se passer” adressé à la deuxième compétence, message qu’elle intercepte puisqu’elle écoute toujours et recommence son cooldown… depuis zéro.
Super simple, j’ai ajouté un “Unbind all events” à une compétence dès qu’elle commence son cooldown, comme ça elle cesse d’écouter. Mais Ryan ne l’avait pas fait, et pour débugger un truc comme ça, quand on n’a pas derrière soi une solide expérience d’Unreal, ce n’est pas évident.
Au niveau programmation blueprints, je crois être au niveau pour ne plus recopier le code des autres, c’est mieux, car une mentalité n’est pas une autre.
Je suis en train de travailler à la taverne pour boucher les trous qui laissent passer la lumière de partout. Ce n’est pas simple, je ne sais pas encore comment je vais m’y prendre. Je n’ai pas envie de tout refaire alors que, pourtant, ce serait le plus simple. Je n’aime pas la sur-abondance de matériaux utilisés par tous les objets, bourrés de cartes d’occlusion, normales, roughness, métallique en plus de l’albedo. C’est trop de cartes à streamer et sampler quand des dizaines d’objets utilisent tous des matériaux différents. Ces artistes travaillent comme s’ils étaient seuls au monde et perdent de vue la fonction de l’objet : un simple décor qui prend le moins de ressources possible. Joli, soit, mais sans fusiller le processeur par des draw calls inconsidérés.
J’envisage de créer quelques matériaux moi-même, avec juste une carte d’albedo et de normales et de les utiliser partout avec de simples variations de bruit, couleurs, saturation, roughness et metallic par paramètres et non par cartes. Je construis un jeu de rôle, pas une scène de visualisation architecturale !