{"id":3001,"date":"2021-06-15T15:54:11","date_gmt":"2021-06-15T13:54:11","guid":{"rendered":"http:\/\/myrdil.com\/?p=3001"},"modified":"2021-06-15T15:54:11","modified_gmt":"2021-06-15T13:54:11","slug":"bug-cooldown-regle","status":"publish","type":"post","link":"https:\/\/myrdil.com\/?p=3001","title":{"rendered":"Bug cooldown r\u00e9gl\u00e9"},"content":{"rendered":"<p>Unreal a un gros probl\u00e8me : la communication entre blueprints.<\/p>\n<p><!--more--><\/p>\n<p>Ainsi, pour que la barre de comp\u00e9tences sache qu&#8217;un de ses \u00e9l\u00e9ments a \u00e9t\u00e9 activ\u00e9, Ryan Laley a programm\u00e9 un &#8220;Event dispatcher&#8221; dans le blueprint du personnage ; quand on presse sur un bouton, le bouton obtient une r\u00e9f\u00e9rence du blueprint du personnage et active un &#8220;call&#8221;, soit un &#8220;Eh! les gars, un truc vient de se passer&#8221;. A ce moment, la barre de comp\u00e9tences re\u00e7oit cet &#8220;Event dispatcher&#8221; qu&#8217;elle est programm\u00e9e pour \u00e9couter, et lance la proc\u00e9dure de cooldown de la comp\u00e9tence.<\/p>\n<p>Le probl\u00e8me, c&#8217;est que si on active une deuxi\u00e8me comp\u00e9tence alors que le cooldown de la premi\u00e8re n&#8217;est pas termin\u00e9, la premi\u00e8re comp\u00e9tence existe toujours en tant qu&#8217;objet et re\u00e7oit le message &#8220;Eh! les gars, un truc vient de se passer&#8221; adress\u00e9 \u00e0 la deuxi\u00e8me comp\u00e9tence, message qu&#8217;elle intercepte puisqu&#8217;elle \u00e9coute toujours et recommence son cooldown&#8230; depuis z\u00e9ro.<\/p>\n<p>Super simple, j&#8217;ai ajout\u00e9 un &#8220;Unbind all events&#8221; \u00e0 une comp\u00e9tence d\u00e8s qu&#8217;elle commence son cooldown, comme \u00e7a elle cesse d&#8217;\u00e9couter. Mais Ryan ne l&#8217;avait pas fait, et pour d\u00e9bugger un truc comme \u00e7a, quand on n&#8217;a pas derri\u00e8re soi une solide exp\u00e9rience d&#8217;Unreal, ce n&#8217;est pas \u00e9vident.<\/p>\n<p>Au niveau programmation blueprints, je crois \u00eatre au niveau pour ne plus recopier le code des autres, c&#8217;est mieux, car une mentalit\u00e9 n&#8217;est pas une autre.<\/p>\n<p>Je suis en train de travailler \u00e0 la taverne pour boucher les trous qui laissent passer la lumi\u00e8re de partout. Ce n&#8217;est pas simple, je ne sais pas encore comment je vais m&#8217;y prendre. Je n&#8217;ai pas envie de tout refaire alors que, pourtant, ce serait le plus simple. Je n&#8217;aime pas la sur-abondance de mat\u00e9riaux utilis\u00e9s par tous les objets, bourr\u00e9s de cartes d&#8217;occlusion, normales, roughness, m\u00e9tallique en plus de l&#8217;albedo. C&#8217;est trop de cartes \u00e0 streamer et sampler quand des dizaines d&#8217;objets utilisent tous des mat\u00e9riaux diff\u00e9rents. Ces artistes travaillent comme s&#8217;ils \u00e9taient seuls au monde et perdent de vue la fonction de l&#8217;objet : un simple d\u00e9cor qui prend le moins de ressources possible. Joli, soit, mais sans fusiller le processeur par des <em>draw calls<\/em> inconsid\u00e9r\u00e9s.<\/p>\n<p>J&#8217;envisage de cr\u00e9er quelques mat\u00e9riaux moi-m\u00eame, avec juste une carte d&#8217;albedo et de normales et de les utiliser partout avec de simples variations de bruit, couleurs, saturation, roughness et metallic par param\u00e8tres et non par cartes. Je construis un jeu de r\u00f4le, pas une sc\u00e8ne de visualisation architecturale !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Unreal a un gros probl\u00e8me : la communication entre blueprints.<\/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-3001","post","type-post","status-publish","format-standard","hentry","category-news"],"_links":{"self":[{"href":"https:\/\/myrdil.com\/index.php?rest_route=\/wp\/v2\/posts\/3001","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=3001"}],"version-history":[{"count":0,"href":"https:\/\/myrdil.com\/index.php?rest_route=\/wp\/v2\/posts\/3001\/revisions"}],"wp:attachment":[{"href":"https:\/\/myrdil.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3001"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/myrdil.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3001"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/myrdil.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3001"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}