Tutoriel qui pourrait être utile, même si je pense que Gemini sera plus efficace.
#level
Tutoriel qui pourrait être utile, même si je pense que Gemini sera plus efficace.
#level
Terminé la programmation des sacs de loots, soit laissés à la mort des mobs, soit utilisés par les joueurs pour lâcher des objets au sol, pour se débarrasser de l’inutile ou pour échanger des objets avec quelqu’un.
C’est terminé et ça fonctionne. Le code est un peu dégueulasse parce que je réutilise le même que pour les coffres avec quelques subtilités comme la destruction automatique d’un sac après 5 minutes ou dès qu’il est vide. J’aurais pu faire plus propre mais c’était beaucoup plus de travail vu que ces sacs ont besoin de l’accès multi-joueurs et le déplacement des fenêtres d’inventaire à l’écran, déjà codés dans les inventaires de coffres.
Comme je n’entrevois pas d’autre type de conteneurs, si ça fonctionne bien comme ça, on fera avec.
Prochaine étape : les marchands. Ca, c’est le gros morceau, aucune idée de comment ça va se passer, on verra. Et après les marchands, je vais soit attaquer la garde-robe, soit le combat, pas encore décidé.
Tout fonctionnait impeccablement aux inventaires du joueur et de la banque, et ce matin : patatras ! la banque reste désespérément vide !
Ai-je modifié quoi que ce soit au code ? Je ne pense pas !
Il m’aura fallu une journée pour déplomber ça : la table des slots existait une fois dans la définition de la classe d’inventaire au C++ (ce qui n’aurait jamais dû arriver, la classe qui contient les données ne peut pas contenir un élément d’affichage) et une fois dans la classe mère des widgets d’affichage. Pour les inventaires joueurs, ça marchait parce que cette table des slots affichés était créée à la fois dans le C++ et dans le widget, ce qu’il ne faut jamais faire. Et pour la banque, j’initialisais la table C++ et affichait la table blueprints qui elle n’était pas initialisée, donc ça ne pouvait pas marcher, jamais !
Or ça fonctionnait très bien jusque ce matin, c’est le genre de truc qui restera inexpliqué probablement jusqu’à la fin des temps.
Une journée pour tout vérifier en partant du backend et en remontant progressivement par l’API puis le C++ puis les blueprints, évidemment éclatés comme des grenade ananas.
Et deux minutes pour régler le problème une fois que j’ai vu l’hérésie du code. J’ai simplement viré le code C++ qui n’aurait jamais dû exister et rebranché dans les blueprints ce qui était orphelin. Deux minutes chrono !
Maintenant tout fonctionne, demain j’attaque la création des sacs de loot, soit ce que les monstres ou les joueurs laissent tomber au sol.
Banque terminée, non sans une sérieuse prise de tête : la base de données des inventaires était pourvues de deux index, un sur l’ID du personnage, l’ID de l’inventaire et le numéro de slot. Le deuxième sur l’ID du personnage et le numéro de slot, soit la première version avant que je n’introduise les numéros d’inventaire pour permettre la banque et les coffres de maison. Or, ces deux index entraient en conflit et dans certaines circonstances non seulement un inventaire ne s’enregistrait pas mais surtout tous ses objets étaient effacés de la base de données.
J’avais cru remarquer un comportement étrange ces derniers jours mais, occupé par mon développement, n’y avais pas prêté attention.
Quand je me suis rendu compte que le problème était réel et toute la mécanique des inventaires corrompues, gros stress pour trouver le coupable, qui se cachait bien profond là où il était sûr que je n’irais pas le chercher. Qui aurait pu croire qu’un vieil index traînait au fond du back-end ?
Enfin, c’est réglé, tout est testé et fonctionne parfaitement, j’ai déjà attaqué les sacs de loot, laissés au sol par les mobs ou par un joueur qui veut faire un échange rapide avec un copain ou se délester d’objets inutiles.
Pour finir, un addon d’unwrap pour Blender, un jour peut-être, quand je serai sorti de la technique !
#Blender #unwrap #UVs
Je devrais avoir fini demain la banque, tous les autres bugs connus étant résolus.
C’est un peu pénible de travailler en même temps avec le C++ et les blueprints éclatés de partout, mais après la banque il me restera à gérer le dépôt d’un objet par terre et les marchands.
Ca avance !