{"id":42,"date":"2014-04-28T21:43:00","date_gmt":"2014-04-28T20:43:00","guid":{"rendered":"http:\/\/oneiricworlds.com\/en\/index.php\/2014\/04\/28\/turtle-travelling\/"},"modified":"2016-02-26T20:38:37","modified_gmt":"2016-02-26T19:38:37","slug":"turtle-travelling","status":"publish","type":"post","link":"https:\/\/oneiricworlds.com\/fr\/2014\/04\/turtle-travelling\/","title":{"rendered":"Voyage en tortue"},"content":{"rendered":"<p>Salut tout le monde,<\/p>\n<p>Ces derniers temps, j&rsquo;ai travaill\u00e9 sur 2 nouveaut\u00e9s pour le jeu:<\/p>\n<ul>\n<li>Les voyages \u00e0 dos de tortue<\/li>\n<li>Un monde cyclique (enfin techniquement, c&rsquo;est plut\u00f4t torique)<\/li>\n<\/ul>\n<p>En fait ces 2 points sont \u00e9troitement li\u00e9s.<\/p>\n<h3>I &#8211; La tortue<\/h3>\n<p>A un certain moment dans le jeu, le joueur peut traverser l&rsquo;univers entier sans restriction. Bien s\u00fbr, \u00e7a signifie qu&rsquo;il lui faut une autre aptitude que la nage, sans quoi ce serait bien trop long. J&rsquo;ai donc r\u00e9fl\u00e9chi \u00e0 un moyen sympa de voyager, et en accord avec mon cr\u00e9do \u00ab\u00a0libert\u00e9, humour, onirisme\u00a0\u00bb, j&rsquo;ai d\u00e9cid\u00e9 de lui faire chevaucher une tortue. J&rsquo;ai commenc\u00e9 par cr\u00e9er le mod\u00e8le dans Blender et la texture dans GIMP, comme d&rsquo;habitude:<\/p>\n<div style=\"clear: both; text-align: center;\"><a style=\"margin-left: 1em; margin-right: 1em;\" href=\"http:\/\/4.bp.blogspot.com\/-8uwvRKpYJFY\/U16kUWIE31I\/AAAAAAAAH1g\/AG28IDRig9c\/s1600\/20140428_turtle.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/4.bp.blogspot.com\/-8uwvRKpYJFY\/U16kUWIE31I\/AAAAAAAAH1g\/AG28IDRig9c\/s1600\/20140428_turtle.jpg\" alt=\"\" width=\"400\" height=\"217\" border=\"0\" \/><\/a><\/div>\n<div style=\"text-align: center;\"><i>Encore une texture bien mal optimis\u00e9e&#8230;<\/i><\/div>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: left;\">Mais rajouter une nouveaut\u00e9 au jeu n&rsquo;est jamais facile. De nombreuses questions se posent \u00e0 propos de cette tortue:<\/div>\n<ul>\n<li>Comment est-elle contr\u00f4l\u00e9e?<\/li>\n<li>A quelle vitesse se d\u00e9place-t-elle? Combien de temps le joueur peut-il se balader entre les \u00eeles avant d&rsquo;en avoir marre? Comment concilier \u00e7a avec la distance minimum que je dois respecter entre les \u00eeles pour \u00eatre s\u00fbr de ne pas saturer la m\u00e9moire et ralentir le jeu si trop d&rsquo;\u00eeles sont visibles en m\u00eame temps?<\/li>\n<li>Est-ce que le joueur peut utiliser les items habituels sur le dos de la tortue? Si oui, lesquels?<\/li>\n<li>Est-ce que le joueur peut sauter? Ou s&rsquo;accroupir? Est-ce que \u00e7a a un r\u00e9el int\u00e9r\u00eat?<\/li>\n<li>Comment le joueur passe du mode \u00ab\u00a0tortue\u00a0\u00bb au mode \u00ab\u00a0nage\u00a0\u00bb?<\/li>\n<\/ul>\n<div style=\"text-align: left;\">Je n&rsquo;ai pas r\u00e9pondu \u00e0 toutes ces questions, mais j&rsquo;ai du faire un certain nombre de choix. J&rsquo;ai impl\u00e9ment\u00e9 les m\u00eames contr\u00f4les pour la tortue et pour le joueur. Utiliser le Bo (l&rsquo;arme de m\u00eal\u00e9e) semblait inutile sur la tortue. Les armes de jets, en revanche, semblent int\u00e9ressantes pour les combats maritimes. Le probl\u00e8me est que les projectiles tir\u00e9s depuis la tortue paraissent tr\u00e8s lents en comparaison. Il est m\u00eame possible que la tortue soit plus rapide qu&rsquo;une fl\u00e8che.<\/div>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: left;\">J&rsquo;ai donc mis en place 2 vitesses diff\u00e9rentes:<\/div>\n<ul>\n<li>A faible vitesse, le joueur peut utiliser les armes de jet.<\/li>\n<li>A vitesse plus rapide, impossible de tirer, mais la tortue peut traverser tr\u00e8s vite la distance qui s\u00e9pare les \u00eeles.<\/li>\n<\/ul>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"clear: both; text-align: center;\"><a style=\"margin-left: 1em; margin-right: 1em;\" href=\"http:\/\/1.bp.blogspot.com\/-uzVLKXaF7Qk\/U168YIIxUVI\/AAAAAAAAH2A\/6CkhE1d4wgo\/s1600\/20140428_223735.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/1.bp.blogspot.com\/-uzVLKXaF7Qk\/U168YIIxUVI\/AAAAAAAAH2A\/6CkhE1d4wgo\/s1600\/20140428_223735.png\" alt=\"\" width=\"400\" height=\"225\" border=\"0\" \/><\/a><\/div>\n<div style=\"text-align: center;\"><i>La tortue dans le jeu.<\/i><\/div>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: left;\">Afin que le joueur ait une meilleur sensation (feedback) pendant les voyages en tortue, j&rsquo;ai mis en place diff\u00e9rents petits trucs:<\/div>\n<ul>\n<li>De l&rsquo;\u00e9cume et des ondes\/train\u00e9es derri\u00e8re la tortue<\/li>\n<li>De petites \u00e9claboussures d&rsquo;eau<\/li>\n<li>De grosses \u00e9claboussures al\u00e9atoires<\/li>\n<li>Une train\u00e9e derri\u00e8re les nageaoires<\/li>\n<\/ul>\n<div style=\"text-align: left;\">Et \u00e0 grande vitesse:<\/div>\n<div style=\"text-align: left;\"><\/div>\n<ul>\n<li>Des train\u00e9es de vent autour de la tortue<\/li>\n<li>Une focale de camera plus courte<\/li>\n<li>Un effet \u00ab\u00a0Fish Eye\u00a0\u00bb (distortion en coussinet) pour accentuer l&rsquo;effet de vitesse<\/li>\n<\/ul>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: left;\">Dass les 2 cas, d&rsquo;autres tortues surgissent spontan\u00e9ment autour de nous pour nous accompagner quelques secondes. Ca donne un peu plus de vie au voyage!<\/div>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"clear: both; text-align: center;\"><a style=\"margin-left: 1em; margin-right: 1em;\" href=\"http:\/\/4.bp.blogspot.com\/-tYW11Ry0nN0\/U169di7ataI\/AAAAAAAAH2M\/4QqBrK1HInY\/s1600\/20140428_162235.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/4.bp.blogspot.com\/-tYW11Ry0nN0\/U169di7ataI\/AAAAAAAAH2M\/4QqBrK1HInY\/s1600\/20140428_162235.png\" alt=\"\" width=\"400\" height=\"225\" border=\"0\" \/><\/a><\/div>\n<div style=\"text-align: center;\"><i>Le voyage en tortue!<\/i><\/div>\n<div style=\"text-align: left;\"><\/div>\n<p>&nbsp;<\/p>\n<h3 style=\"text-align: left;\">II &#8211; Monde cyclique<\/h3>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: left;\">Si le joueur peut aller n&rsquo;importe o\u00f9 en tortue, \u00e7a soul\u00e8ve la question des limites du monde. Je peux juste mettre une montagne, un mur ou un obstacle sur tout le tour de la carte, mais je n&rsquo;aime pas cette id\u00e9e. Elle va totalement \u00e0 l&rsquo;encontre de la libert\u00e9 que je veux laisser au joueur.<\/div>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: left;\">J&rsquo;ai donc d\u00e9cid\u00e9 de faire un monde cyclique. Le principe est le suivant: si le joueur sort d&rsquo;un c\u00f4t\u00e9 de la carte, il re-rentre de l&rsquo;autre c\u00f4t\u00e9. On peut voir \u00e7a comme une \u00ab\u00a0simple\u00a0\u00bb t\u00e9l\u00e9portation du joueur. Mais en r\u00e9alit\u00e9, il y a beaucoup d&rsquo;autres objets \u00e0 t\u00e9l\u00e9porter de l&rsquo;autre c\u00f4t\u00e9 de la carte: les effets de particules autour de la tortue, les autres tortues qui nous entourent, les projectiles \u00e9ventuellement tir\u00e9s par le joueur, et, bien s\u00fbr, la cam\u00e9ra, ce qui est probl\u00e9matique car elle a un mouvement liss\u00e9 bas\u00e9 sur la position et la vitesse pr\u00e9c\u00e9dente que je dois donc recalculer au moment de la t\u00e9l\u00e9portation.<\/div>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: left;\">Un autre probl\u00e8me est qu&rsquo;il y un type d&rsquo;objet que je ne PEUX PAS t\u00e9l\u00e9porter: les train\u00e9es (trails en anglais)&#8230; car elles sont calcul\u00e9es de mani\u00e8re dynamique dans le rep\u00e8re monde et je n&rsquo;ai aucun acc\u00e8s \u00e0 la position des sommets (j&rsquo;imagine que c&rsquo;est une limite de Unity, surement parce que les donn\u00e9es sont stock\u00e9es dans un buffer particulier de la carte graphique, ou un truc du genre). Donc je ne peux pas les bouger, ni les recr\u00e9er de l&rsquo;autre c\u00f4t\u00e9 de la carte en copiant et d\u00e9pla\u00e7ant les sommets.<\/div>\n<div style=\"text-align: left;\">Si je ne t\u00e9l\u00e9porte pas les train\u00e9es, \u00e7a cr\u00e9e une disparition soudaine TRES visible et tr\u00e8s moche. J&rsquo;ai donc choisis de les faire dispara\u00eetre progressivement lorsqu&rsquo;on s&rsquo;approche des bords de la carte, ce qui est \u00e0 peine visible.<\/div>\n<p>&nbsp;<\/p>\n<div style=\"text-align: left;\">Si je joueur navigue exactement sur la fronti\u00e8re de la carte, un nouveau probl\u00e8me appara\u00eet: je ne veux pas le t\u00e9l\u00e9porter \u00e0 chaque image (cette op\u00e9ration peut \u00eatre assez lourde en fonction du nombre d&rsquo;objet \u00e0 t\u00e9l\u00e9porter). Donc j&rsquo;attends que le joueur ait d\u00e9pass\u00e9 la fronti\u00e8re de X m\u00e8tres pour le t\u00e9l\u00e9port\u00e9 \u00e0 X m\u00e8tre \u00e0 l&rsquo;int\u00e9rieur de l&rsquo;autre c\u00f4t\u00e9 de la carte. Cela cr\u00e9e un effet d'\u00a0\u00bbHysteresis\u00a0\u00bb qui \u00e9vite les t\u00e9l\u00e9portation multiple et am\u00e9liore \u00e9norm\u00e9ment la fluidit\u00e9 du jeu en bordure de carte.<\/div>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: left;\">En outre, la t\u00e9l\u00e9portation instantan\u00e9e du joueur et de la cam\u00e9ra peut cr\u00e9er une cassure dans l&rsquo;animation de l&rsquo;oc\u00e9an. Pour \u00e9viter \u00e7a, j&rsquo;ai du configurer pr\u00e9cis\u00e9ment les \u00e9chelles de textures de l&rsquo;oc\u00e9an pour qu&rsquo;elles soient en phase avec la taille du monde. Encore un compromis \u00e0 faire en jouant avec des nombres premiers.<\/div>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: left;\">J&rsquo;ai aussi du rajouter d&rsquo;autres petits trucs: le son de l&rsquo;eau\/des vagues quand la tortue se d\u00e9place, un son de conque qu&rsquo;on utilise pour appeler la tortue (c&rsquo;est expliqu\u00e9 dans l&rsquo;histoire), des tests de collision avec les \u00eeles environnantes, &#8230; Je ne d\u00e9taille pas tout ici!<\/div>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: left;\">Et voil\u00e0 \u00e0 quoi \u00e7a ressemble \u00e0 l&rsquo;heure actuelle:<\/div>\n<div style=\"clear: both; text-align: center;\">\n<p><iframe loading=\"lazy\" title=\"World of Thieves - Turtle Ride\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/QhmzpsT5oVM?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<\/div>\n<div style=\"text-align: left;\">\u00a0<i>On peut remarquer que le monde est cyclique \u00e0 l&rsquo;aide de l&rsquo;\u00eele carr\u00e9e recouverte d&rsquo;herbe. Bien s\u00fbr dans le jeu, il y aura de vraies \u00eeles, ceci est juste un test technique.<\/i><\/div>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: left;\">Finalement, diriger la tortue est plut\u00f4t cool! Bien s\u00fbr, il faudra rajouter d&rsquo;autres \u00e9l\u00e9ments dans l&rsquo;oc\u00e9an pour lui donner un peu plus de vie (tonneaux flottants, plantes, barges, bateaux, poissons et autres animaux marins), mais, \u00e0 chaque fois, j&rsquo;aurai \u00e0 prendre en compte le souci de t\u00e9l\u00e9portation. Il faut aussi que je fasse tr\u00e8s attention \u00e0 ne pas positionner les \u00eeles trop pr\u00e8s du bord de la carte pour \u00e9viter qu&rsquo;elles apparaissent d&rsquo;un seul coup quand le joueur est t\u00e9l\u00e9port\u00e9.<\/div>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: left;\">Allez, \u00e0 la prochaine!<\/div>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: left;\">Paix!<\/div>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: left;\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Salut tout le monde, Ces derniers temps, j&rsquo;ai travaill\u00e9 sur 2 nouveaut\u00e9s pour le jeu: Les voyages \u00e0 dos de tortue Un monde cyclique (enfin techniquement, c&rsquo;est plut\u00f4t torique) En fait ces 2 points sont \u00e9troitement li\u00e9s. I &#8211; La tortue A un certain moment dans le jeu, le joueur peut traverser l&rsquo;univers entier sans [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":166,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-42","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/oneiricworlds.com\/fr\/wp-json\/wp\/v2\/posts\/42","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oneiricworlds.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oneiricworlds.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oneiricworlds.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oneiricworlds.com\/fr\/wp-json\/wp\/v2\/comments?post=42"}],"version-history":[{"count":5,"href":"https:\/\/oneiricworlds.com\/fr\/wp-json\/wp\/v2\/posts\/42\/revisions"}],"predecessor-version":[{"id":373,"href":"https:\/\/oneiricworlds.com\/fr\/wp-json\/wp\/v2\/posts\/42\/revisions\/373"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oneiricworlds.com\/fr\/wp-json\/wp\/v2\/media\/166"}],"wp:attachment":[{"href":"https:\/\/oneiricworlds.com\/fr\/wp-json\/wp\/v2\/media?parent=42"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oneiricworlds.com\/fr\/wp-json\/wp\/v2\/categories?post=42"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oneiricworlds.com\/fr\/wp-json\/wp\/v2\/tags?post=42"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}