{"id":2892,"date":"2021-05-14T23:27:13","date_gmt":"2021-05-14T21:27:13","guid":{"rendered":"http:\/\/myrdil.com\/?p=2892"},"modified":"2021-05-14T23:27:13","modified_gmt":"2021-05-14T21:27:13","slug":"replication-coffre","status":"publish","type":"post","link":"https:\/\/myrdil.com\/?p=2892","title":{"rendered":"R\u00e9plication coffre"},"content":{"rendered":"<p>Projet termin\u00e9.<\/p>\n<p><!--more--><\/p>\n<p>Je n&#8217;ai pourtant pas assimil\u00e9 tout ce que je dois en mati\u00e8re de r\u00e9plication. Pour commencer, je m&#8217;\u00e9tais laiss\u00e9 berner par les vid\u00e9os que j&#8217;avais regard\u00e9es o\u00f9 la r\u00e9plication \u00e9tait utilis\u00e9e dans le code du personnage dont le joueur a &#8211; forc\u00e9ment &#8211; le contr\u00f4le. Par contre la r\u00e9plication ne peut pas fonctionner lorsque le joueur ne poss\u00e8de pas le contr\u00f4le de l&#8217;acteur qu&#8217;il veut r\u00e9pliquer, par exemple un coffre, qui n&#8217;appartient \u00e0 personne pos\u00e9 dans l&#8217;univers. Il n&#8217;est pas non plus possible d&#8217;assigner le contr\u00f4le d&#8217;un acteur au joueur. C&#8217;est ainsi que le moteur est con\u00e7u et j&#8217;ai pass\u00e9 un temps consid\u00e9rable \u00e0 fouiller le net pour finalement le d\u00e9couvrir.<\/p>\n<p>Pour r\u00e9pliquer un acteur dont le joueur n&#8217;a pas le contr\u00f4le, il faut passer une r\u00e9f\u00e9rence de l&#8217;acteur au joueur, qui peut alors cr\u00e9er une RPC (<em>remote procedure call<\/em>) ex\u00e9cut\u00e9e par le serveur et actionner les fonctions de l&#8217;acteur en <em>multicast<\/em> pour les r\u00e9pliquer pour &#8211; presque &#8211; tout le monde. Je dis <em>presque<\/em>, parce que les joueurs qui ne sont pas pr\u00e8s de la sc\u00e8ne, aussi appel\u00e9s <em>relevant<\/em>, ne verront rien.<\/p>\n<p>Pour qu&#8217;un joueur qui arrive sur les lieux plus tard voie le r\u00e9sultat de la r\u00e9plication, par exemple un coffre ouvert, il faut passer par un <em>repnotify<\/em>, soit une variable associ\u00e9e \u00e0 une fonction de r\u00e9plication qui s&#8217;ex\u00e9cutera lorsque le joueur deviendra <em>relevant<\/em> pour l&#8217;acteur.<\/p>\n<p>On pourrait croire que tout cela fait partie int\u00e9grante du moteur, mais non, faut tout programmer soi-m\u00eame, c&#8217;est tr\u00e8s complexe, raison pour laquelle je viens d&#8217;y passer trois jours et que je ne suis toujours pas satisfait.<\/p>\n<p>Mais \u00e7a marche et ma compr\u00e9hension progresse.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Projet termin\u00e9.<\/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-2892","post","type-post","status-publish","format-standard","hentry","category-news"],"_links":{"self":[{"href":"https:\/\/myrdil.com\/index.php?rest_route=\/wp\/v2\/posts\/2892","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=2892"}],"version-history":[{"count":0,"href":"https:\/\/myrdil.com\/index.php?rest_route=\/wp\/v2\/posts\/2892\/revisions"}],"wp:attachment":[{"href":"https:\/\/myrdil.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2892"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/myrdil.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2892"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/myrdil.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2892"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}