Ah ! les petits trucs vite finis…

J’imaginais pouvoir utiliser la librairie de Bioware pour animer les domestiques dans les habitations, librairie assez bien fournie et dont les noms de fonctions correspondent exactement à ce dont j’ai besoin.
L’ennui, c’est que soit je suis trop con pour les faire fonctionner, ce qui est parfaitement possible, soit elles ne fonctionnent pas bien. Voire pas du tout.
J’ai bien essayé de placer des waypoints libellés exactement comme requis, rien ne se passe comme prévu, les PNJs marchent bêtement en rond, ou passent les portes sans les ouvrir, ou se retrouvent coincés entre deux transitions, par contre j’en ai qui ont réussi à se barrer de la zone et on ne les a plus jamais revus…

Bref, comme d’hab, je n’utilise rien du code de Bioware et j’écris le mien, ce qui n’est pas facile d’une part parce que je n’ai pas de bouquin de calcul vectoriel sur ma table de chevet et d’autre part parce que la programmation événementielle est ultra piégeuse : l’angle qu’aura le PNJ devant un objet correspond rarement à son orientation au moment où les commandes sont empilées, ce qui impose un subtil mélange entre Action_quelque_chose et DelayCommand(autre_chose).
Et surtout parce que je veux que ce soit parfait, les maisons sont sinistres si elles ne sont pas animées correctement ; c’est vrai, je pourrais y revenir plus tard, mais ce serait une fois de plus repousser une échéance.
J’ai considérablement baissé le prix de l’accès à la propriété parce que je considère que les maisons sont un des attraits majeurs d’un univers persistant, alors si le majordome doit passer une porte, je veux qu’il aille à la porte, qu’il s’arrête devant la porte un bref instant, ouvre la porte, passe la porte, referme la porte et s’éloigne, comme le ferait une personne normalement constituée et pas une IA écrite sur un bout de comptoir.

Le résultat sera très très cool, mais c’est du travail.
Je me demande quand même toujours qui est le plus nul, de moi ou du code de Bioware et, en toute franchise, le jury délibère toujours. J’aime autant ne pas savoir.

Ouais, ouais, ouais…

Je sais, l’apparence du site est revenue à ce qu’elle était la semaine dernière.
*Groumph* Perdu mon temps.
Les modèles proposés par WordPress créés par des tiers sont de la daube fumante, le seul truc qui marche bien c’est le bouton pour acheter la version ‘Pro’. J’ai rencontré les pires difficultés pour rédiger les formulaires dont j’ai besoin pour mes clients ne me laissant d’autre choix que de virer tout ça et reprendre un thème officiel, le Twenty Eleven, celui que je préférais de toutes manières, tant pis si un de mes clients s’amuse à retrouver la racine du site à partir des URL que je lui envoie et arrive sur Myrda. Après tout, hein, il n’a qu’à acheter le jeu !

Bon, côté développement, tout se passe à merveille.
J’ai terminé la refonte et le test de la banque, des vendeurs et des maisons. Chantier que je ne pouvais mener à bien avant le patch qui corrigeait DeleteCampaignDatabase.
C’est chose faite et j’ai amélioré le comportement de toutes les mécaniques.

Je mets la dernière main à quelques modifications pour les maisons:

  1. Acheter une nouvelle maison envoie dans l’inventaire tous les meubles déployés dans la précédente.
  2. Il est désormais possible de modifier l’éclairage de sa maison : couleurs ambiantes et couleurs des torches. Nouveau myrdalights.2da. Il est aussi possible d’éteindre toutes les lumières, ce qui nécessite de quitter la maison et d’y revenir. Le majordome peut également enregistrer les couleurs que l’on désire, selon un tableau que je vais publier au guide de jeu.
  3. Le personnel de maison fait son entrée, ce qui va mettre de la vie dans tout ça, je pourrai même utiliser ces PNJs pour des conversations spéciales.
  4. J’ai placé la routine de musique d’ambiance dans les habitations, peut-être conviendra-t-il de permettre au majordome de donner plus de choix.
  5. Il est possible de changer le nom du majordome, ce qui me laisse craindre le pire, mais heh ! après tout je ne veux rien savoir de ce que les joueurs font dans leur maison, j’ai des souvenirs d’Althea qui me laissent encore perplexe 15 ans plus tard, je ne suis pas près d’y remettre les pieds !
  6. Le majordome peut se transformer en déménageur : sur simple demande il transfère tous les meubles d’une habitation dans l’inventaire du joueur. Aucun risque qu’un invité se barre avec toute la collection : le dialogue du majordome ne s’exécute que pour le propriétaire.

J’ai ajouté au loot des fioles de teintures. Totalement inutile comparé au mannequin de l’enchanteur mais elles existent dans le jeu, je n’avais rien à créer, et elles ajouteront de la variété, j’avais besoin d’un peu diluer la fréquence de certains objets qui tombent trop souvent.

Habitations

Je travaille sur la gestion des coffres dans les bases de données.
De manière à ne plus jamais rencontrer le problème des tables qui grossissent à l’infini, je prends le parti de créer une table différente pour :

  • la banque
  • le vendeur au marché
  • les 4 coffres des maisons

Ces tables sont détruites chaque fois qu’elles sont modifiées et je les recrée pour n’enregistrer que les données courantes, ce qui me garantit des bases de données en condition optimale en toutes circonstances.

Pour rendre les habitations plus attrayantes, j’ai ajouté un coffre de plus à chaque palier, soit 1 pour la petite maison jusqu’à 4 pour le château.
J’ajoute également des domestiques pour donner de la vie à l’ensemble. Je travaille à leur intelligence artificielle pour plus de réalisme.

Voilà qui me met un peu de pain sur la planche, d’autant que j’ai remarqué que le code des vendeurs est tout pourri, je vais le refaire entièrement. Ce sera rapide puisque j’utilise la même technique pour tous les types de conteneurs associés à un joueur.

J’ai corrigé un bug très vicieux pour les PNJs d’ambiance, qui démarraient encore bien une conversation alors qu’ils étaient séparés de trente mètres. On n’est pas à l’opéra…
Le bug venait du fait que ClearAllActions(), appelé pour stopper leurs actions d’ambiance, nettoie bien la pile d’actions mais empêchait aussi un ActionMoveToObject de s’enclencher. Ce n’est pas très normal et ce n’est pas documenté, mais ce bug me chipotait depuis longtemps déjà et l’idée m’est venue de séparer l’événement de rapprochement des PNJs en deux phases, la première qui met un terme à toutes leurs actions, la deuxième qui lance leur déplacement. Le problème est ainsi résolu.

Ca marche !

J’ai modifié la gestion des bases de données et la correction – que Virusman m’a promise en juillet, le temps passe ! – est effective. Le comportement de DestroyCampaignDatabase est à présent conforme à mes attentes et l’amélioration de performances est saisissante par exemple lorsqu’on enregistre son coffre en banque.
Vu que je suis à l’aise en matière de fréquentation des serveurs en attendant que la version mobile de NWN soit disponible, je ne me suis pas gêné pour changer tout le code d’un coup – je commence à le connaître -, je testerai à partir de demain si tout fonctionne.
Cette modification importante a nécessité un effacement des bases de données, impossible d’y couper.
Je rétablirai les points d’artisanat perdus pour les anciens sur simple demande, mais pas avant d’avoir mes apaisements sur le fonctionnement de tout le système, soit quelques jours quand même.
Correction : j’ai écrit un petit fragment de code qui récupère les anciennes valeurs d’artisanat, personne n’aura rien perdu.

Au programme de ce dimanche, le grand-prix du Japon – ben si, tout de même… – et le test des maisons, de leurs coffres et du transfert des meubles en cas de changement d’habitation.

Redirections

J’aurais voulu scinder distinctement mes sites, WordPress ne me facilite pas la tâche…

Le multi-sites ne fonctionne sur mon NAS Synology qu’au prix de bidouillages que je préfère éviter car susceptibles de ne plus fonctionner si WordPress ou Synology modifient leur code : piste abandonnée.
Créer un site directement chez WordPress est horriblement limitatif à moins de souscrire à des abonnements premium, je n’y ai donc qu’une seule page qui redirige vers mon NAS.
La seule solution qui me restait était de spécifier une adresse fixe pour la page d’accueil de l’installation WordPress du NAS et de créer tous mes sites sur mon propre serveur avec leurs adresses propres.
Il ne me restait plus qu’à créer une page de redirection pour qui entrerait japu.synology.me pour toute adresse, ce qui arrivera forcément. J’ai réglé le problème aussi proprement que je le pouvais.

Les observateurs remarqueront que le site de Myrda a complètement changé. Joie ! J’ai été contraint à ce travail supplémentaire parce que j’avais créé le site sur le thème officiel WordPress TwentyEleven dont les images cliquables d’en-tête de chaque page pointaient vers la page d’accueil de wordpress, là où se trouve à présent ma redirection. Il m’a été impossible de changer le PHP responsable de ce fâcheux comportement parce que, comme souvent, les informations expliquant comment modifier l’adresse liée aux images ne sont plus à jour ; c’est un thème de 2011, on trouve des méthodes d’altération du PHP datant de 2011 à 2015, mais depuis WordPress a complètement changé la structure de son code de gestion de page et tous mes efforts sont restés vains pour forcer la redirection – qui de toutes manières eût été compromise par tout changement de code chez WordPress.

Quoi qu’il en soit, je pense – benoîtement – avoir terminé à la fois la structure de mes sites et la configuration définitive du site de Myrda, qui ne manque pas d’élégance, nous ne perdons pas au change. Je retourne de toute urgence au développement de Myrda !