{"id":4708,"date":"2026-08-26T22:20:33","date_gmt":"2026-08-26T20:20:33","guid":{"rendered":"https:\/\/myrdil.com\/?p=4708"},"modified":"2026-08-26T22:22:17","modified_gmt":"2026-08-26T20:22:17","slug":"moi-qui-croyais-en-finir-rapidement","status":"publish","type":"post","link":"https:\/\/myrdil.com\/?p=4708","title":{"rendered":"Moi qui croyais en finir rapidement&#8230;"},"content":{"rendered":"<p>J&#8217;esp\u00e9rais boucler les skills assez vite, toute l&#8217;interface \u00e9tait termin\u00e9e, la base de donn\u00e9es, le node.js, l&#8217;API, l&#8217;UI : tout !<\/p>\n<p>Oui, mais voil\u00e0, je manquais de pr\u00e9cision dans la r\u00e9partition des t\u00e2ches entre le character, le player controller, le game instance et le player state. J&#8217;avais plac\u00e9 les donn\u00e9es du personnage sur le game instance, ce qui m&#8217;avait \u00e9t\u00e9 pr\u00e9sent\u00e9 comme le bon endroit car insensible \u00e0 la mort du perso et aux changements de carte. Ce qui ne m&#8217;avait pas \u00e9t\u00e9 pr\u00e9cis\u00e9, c&#8217;est que le game instance, par je ne sais quels d\u00e9tours, n&#8217;existe qu&#8217;en un seul exemplaire sur le serveur et qu&#8217;un nouveau joueur qui se connecte \u00e9crase forc\u00e9ment les donn\u00e9es du pr\u00e9c\u00e9dent. J&#8217;ai donc d\u00fb transf\u00e9rer les donn\u00e9es joueur sur le controller, non sans avoir pass\u00e9 une journ\u00e9e \u00e0 cuisiner l&#8217;IA pour \u00eatre certain que je faisais le bon choix, avoir d\u00fb lire ses contradictions, les lui opposer, recevoir de nouvelles informations, contredites par d&#8217;autres sources et apr\u00e8s de nombreuses heures \u00e9puisantes finalement prendre la d\u00e9cision de rapatrier les donn\u00e9es sur le player controller. Un inconv\u00e9nient : le controller aussi est d\u00e9truit au changement de map et contrairement au player state ne peut pas \u00eatre copi\u00e9 avant sa destruction, je suis donc contraint de refaire dans un avenir proche un beginPlay propre pour rechercher les donn\u00e9es de la database. Un avantage : le player state ne peut pas faire ex\u00e9cuter du code par le serveur, le controller le peut, donc je gagne des d\u00e9tours.<br \/>\nTant que j&#8217;y \u00e9tais, j&#8217;ai transf\u00e9r\u00e9 du game instance vers le player controller tout ce qu&#8217;il fallait, \u00e7a c&#8217;est termin\u00e9.<\/p>\n<p>J&#8217;aurais peut-\u00eatre pu finir aujourd&#8217;hui mais je suis all\u00e9 de bug en bug pour finalement comprendre (cela a pris 4 minutes 30 \u00e0 ai.studio pour le d\u00e9terminer, mais il y est parvenu), que la lecture des infos joueurs se faisaient en local et non par une proc\u00e9dure serveur, ce qui provoquait syst\u00e9matiquement des tables de skills vides car jamais initialis\u00e9es sur le serveur.<\/p>\n<p>Cela ajout\u00e9 \u00e0 des b\u00eatises comme des erreurs d&#8217;encodage \u00e0 la table des skills et j&#8217;aurai pass\u00e9 une semaine l\u00e0-dessus, si seulement j&#8217;arrive \u00e0 terminer demain !<\/p>\n<p>Quand ce sera fini, je ne sais pas trop bien ce que je vais attaquer, d&#8217;ailleurs.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>J&#8217;esp\u00e9rais boucler les skills assez vite, toute l&#8217;interface \u00e9tait termin\u00e9e, la base de donn\u00e9es, le node.js, l&#8217;API, l&#8217;UI : tout ! Oui, mais voil\u00e0, je manquais de pr\u00e9cision dans la r\u00e9partition des t\u00e2ches entre le character, le player controller, le &hellip; <a href=\"https:\/\/myrdil.com\/?p=4708\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-4708","post","type-post","status-publish","format-standard","hentry","category-news"],"_links":{"self":[{"href":"https:\/\/myrdil.com\/index.php?rest_route=\/wp\/v2\/posts\/4708","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/myrdil.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/myrdil.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/myrdil.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/myrdil.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4708"}],"version-history":[{"count":3,"href":"https:\/\/myrdil.com\/index.php?rest_route=\/wp\/v2\/posts\/4708\/revisions"}],"predecessor-version":[{"id":4711,"href":"https:\/\/myrdil.com\/index.php?rest_route=\/wp\/v2\/posts\/4708\/revisions\/4711"}],"wp:attachment":[{"href":"https:\/\/myrdil.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4708"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/myrdil.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4708"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/myrdil.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4708"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}