{"id":83,"date":"2012-10-24T08:20:00","date_gmt":"2012-10-24T07:20:00","guid":{"rendered":"http:\/\/oneiricworlds.com\/en\/index.php\/2012\/10\/24\/how-to-create-a-smart-tile-based-floor-in-a-diablo-like-game\/"},"modified":"2016-02-26T12:02:00","modified_gmt":"2016-02-26T11:02:00","slug":"how-to-create-a-smart-tile-based-floor-in-a-diablo-like-game","status":"publish","type":"post","link":"https:\/\/oneiricworlds.com\/fr\/2012\/10\/how-to-create-a-smart-tile-based-floor-in-a-diablo-like-game\/","title":{"rendered":"Comment cr\u00e9er un pavage de sol int\u00e9ressant avec des tuiles"},"content":{"rendered":"<p>Aujourd&rsquo;hui, je vous pr\u00e9sente une technique pour cr\u00e9er un sol sympa pour un jeu vid\u00e9o en utilisant des \u00ab\u00a0tuiles\u00a0\u00bb. J&rsquo;expliquerai un peu plus en d\u00e9tail comment <a style=\"clear: right; float: right; margin-bottom: 1em; margin-left: 1em;\" href=\"http:\/\/1.bp.blogspot.com\/-ou5yjyF81xM\/UIcNIS23VvI\/AAAAAAAAGIY\/yIHRso-il-A\/s1600\/torchlight-pc-041.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/1.bp.blogspot.com\/-ou5yjyF81xM\/UIcNIS23VvI\/AAAAAAAAGIY\/yIHRso-il-A\/s320\/torchlight-pc-041.jpg\" alt=\"\" width=\"320\" height=\"256\" border=\"0\" \/><\/a> rajouter des variations pour casser les r\u00e9p\u00e9titions trop flagrantes. J&rsquo;ai compris cette m\u00e9thode en \u00e9tudiant attentivement le jeu \u00ab\u00a0Torchlight\u00a0\u00bb (un Diablo-like bien sympa&#8230; par certains des cr\u00e9ateurs de Diablo en fait&#8230; super \u00e9quipe!)<\/p>\n<p><a href=\"http:\/\/www.blogger.com\/null\" name=\"more\"><\/a><\/p>\n<h3>I &#8211; Tout d&rsquo;abord qu&rsquo;est-ce qu&rsquo;une tuile?<\/h3>\n<p>Simple! C&rsquo;est une image comme \u00e7a:<\/p>\n<div style=\"clear: both; text-align: center;\"><a style=\"margin-left: 1em; margin-right: 1em;\" href=\"http:\/\/2.bp.blogspot.com\/-HegC6zGypWw\/UIb3hhS5oXI\/AAAAAAAAGGg\/vGZceuXQ80w\/s1600\/dalles2.png\"><img decoding=\"async\" src=\"http:\/\/2.bp.blogspot.com\/-HegC6zGypWw\/UIb3hhS5oXI\/AAAAAAAAGGg\/vGZceuXQ80w\/s1600\/dalles2.png\" alt=\"\" border=\"0\" \/><\/a><\/div>\n<div style=\"text-align: center;\"><i>Tuile A<\/i> &#8211; <i>Un sol en pierre<br \/>\n<\/i><\/div>\n<p>Une tuile a ceci de particulier qu&rsquo;on peut la r\u00e9p\u00e9ter X fois sans qu&rsquo;on puisse d\u00e9celer de rupture au niveau des \u00ab\u00a0bords\u00a0\u00bb:<\/p>\n<div style=\"clear: both; text-align: center;\"><a style=\"margin-left: 1em; margin-right: 1em;\" href=\"http:\/\/4.bp.blogspot.com\/-kXzacguNdpE\/UIb4nlWi3yI\/AAAAAAAAGGo\/mU1m14jovSQ\/s1600\/dallesTest.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/4.bp.blogspot.com\/-kXzacguNdpE\/UIb4nlWi3yI\/AAAAAAAAGGo\/mU1m14jovSQ\/s320\/dallesTest.png\" alt=\"\" width=\"320\" height=\"320\" border=\"0\" \/><\/a><\/div>\n<div style=\"text-align: center;\"><i>\u00a0Tuile A r\u00e9p\u00e9t\u00e9e sur une grille 3&#215;3<\/i><\/div>\n<div style=\"text-align: center;\"><\/div>\n<p>Les tuiles (<em>tile<\/em> en anglais) sont parfois aussi appel\u00e9es \u00ab\u00a0image sans bords\u00a0\u00bb (<em>seamless<\/em> <em>image<\/em> en anglais). Cette technique est \u00e9norm\u00e9ment utilis\u00e9e dans les jeux vid\u00e9os pour cr\u00e9er de vastes sols\/dallages avec une simple image (pour optimiser l&rsquo;utilisation m\u00e9moire). M\u00eame World of Warcraft l&rsquo;utilise:<\/p>\n<div style=\"clear: both; text-align: center;\"><a style=\"margin-left: 1em; margin-right: 1em;\" href=\"http:\/\/1.bp.blogspot.com\/-jB0u2FibyxM\/UIb_nOQH2qI\/AAAAAAAAGHI\/ryRxjsye30A\/s1600\/world-of-warcraft-mists-of-pandaria-pc-1319229630-007.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/1.bp.blogspot.com\/-jB0u2FibyxM\/UIb_nOQH2qI\/AAAAAAAAGHI\/ryRxjsye30A\/s320\/world-of-warcraft-mists-of-pandaria-pc-1319229630-007.jpg\" alt=\"\" width=\"320\" height=\"200\" border=\"0\" \/><\/a><\/div>\n<div style=\"text-align: center;\"><i>Des tuiles repr\u00e9sentant des pav\u00e9s dans World of Warcraft<\/i><\/div>\n<p>Dans cette image, il n&rsquo;est pas \u00e9vident de rep\u00e9rer la r\u00e9p\u00e9tition (mais vous pouvez la trouver!), car les formes sont complexes et les artistes de chez Blizzard sont tr\u00e8s bons. Evidemment, si vous utilisez beaucoup de r\u00e9p\u00e9titions, et en particulier sur des surfaces plates, comme les int\u00e9rieurs de b\u00e2timent par exemple, l&rsquo;illusion ne tiendra pas longtemps. Nous allons voir comment limiter ce probl\u00e8me.<\/p>\n<h3>II &#8211; Des variations dans les textures<\/h3>\n<p>Tout d&rsquo;abord, on peut utiliser 2 textures (ou plus) pour ajouter un peu de vari\u00e9t\u00e9. Mais, pour que les 2 textures se \u00ab\u00a0connectent\u00a0\u00bb bien, il faut que leur bord\/pourtour soient identiques. Par exemple:<\/p>\n<div style=\"clear: both; text-align: center;\"><a style=\"margin-left: 1em; margin-right: 1em;\" href=\"http:\/\/2.bp.blogspot.com\/-17SdUuwmnN0\/UIb50VJWI-I\/AAAAAAAAGGw\/zoEA5YYn78s\/s1600\/dalles2_3.png\"><img decoding=\"async\" src=\"http:\/\/2.bp.blogspot.com\/-17SdUuwmnN0\/UIb50VJWI-I\/AAAAAAAAGGw\/zoEA5YYn78s\/s1600\/dalles2_3.png\" alt=\"\" border=\"0\" \/><\/a><\/div>\n<div style=\"text-align: center;\"><i>\u00a0Tuile B avec les m\u00eames bords que la tuile A<\/i><\/div>\n<div style=\"text-align: center;\"><\/div>\n<p>Le centre de l&rsquo;image est diff\u00e9rent, mais les bords sont exactement les m\u00eames, de telle sorte que si je mets une tuile B au milieu de tuiles A, voil\u00e0 ce que \u00e7a donne:<\/p>\n<div style=\"clear: both; text-align: center;\"><a style=\"margin-left: 1em; margin-right: 1em;\" href=\"http:\/\/1.bp.blogspot.com\/-SeheZteQrGU\/UIb6HCLSBFI\/AAAAAAAAGG4\/-f6AZygeV7A\/s1600\/dallesTest.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/1.bp.blogspot.com\/-SeheZteQrGU\/UIb6HCLSBFI\/AAAAAAAAGG4\/-f6AZygeV7A\/s320\/dallesTest.png\" alt=\"\" width=\"320\" height=\"320\" border=\"0\" \/><\/a><\/div>\n<div style=\"text-align: center;\"><i>Tuile B entour\u00e9e de 8 tuiles A<\/i><\/div>\n<p>En introduisant une variation de texture et en choisissant au hasard l&rsquo;une ou l&rsquo;autre, on peut cr\u00e9er un sol moins uniforme. On peut \u00e9videmment rajouter autant de variations qu&rsquo;on le souhaite, mais cela aura un impact sur la m\u00e9moire utilis\u00e9e. Il faut trouver un bon compromis. Si on travaille sur un jeu en 2D, c&rsquo;est un truc bien utile! Mais si on travaille sur un jeu en 3D, il y a une autre m\u00e9thode envisageable&#8230;<\/p>\n<p>&nbsp;<\/p>\n<h3>III &#8211; Variations dans les mod\u00e8les\/maillages<\/h3>\n<p>Pour le moment, on a suppos\u00e9 que toutes les tuiles \u00e9tait appliqu\u00e9es sur un simple plan, comme ceci (en 3D):<\/p>\n<div style=\"clear: both; text-align: center;\"><a style=\"margin-left: 1em; margin-right: 1em;\" href=\"http:\/\/2.bp.blogspot.com\/-guAbf69RBjc\/UIcEvgAfE9I\/AAAAAAAAGHo\/7EkQT2fzxQ8\/s1600\/mesh1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/2.bp.blogspot.com\/-guAbf69RBjc\/UIcEvgAfE9I\/AAAAAAAAGHo\/7EkQT2fzxQ8\/s320\/mesh1.png\" alt=\"\" width=\"320\" height=\"174\" border=\"0\" \/><\/a><\/div>\n<p>Tout plat, et tout triste. Toutefois, nous ne sommes pas limit\u00e9s aux plans! On peut ajouter des variations sur le maillage\/mod\u00e8le qui supporte cette texture. Par exemple on peut cr\u00e9er un plan avec:<\/p>\n<div style=\"clear: both; text-align: center;\"><a style=\"margin-left: 1em; margin-right: 1em;\" href=\"http:\/\/1.bp.blogspot.com\/-b5glzL_pVMI\/UIcEwr2N3yI\/AAAAAAAAGHs\/4odmU3a4Ih0\/s1600\/mesh2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/1.bp.blogspot.com\/-b5glzL_pVMI\/UIcEwr2N3yI\/AAAAAAAAGHs\/4odmU3a4Ih0\/s320\/mesh2.png\" alt=\"\" width=\"320\" height=\"164\" border=\"0\" \/><\/a><\/div>\n<div style=\"text-align: center;\"><i>Juste une pierre qui ressort<\/i><\/div>\n<p>&nbsp;<\/p>\n<div style=\"clear: both; text-align: center;\"><a style=\"margin-left: 1em; margin-right: 1em;\" href=\"http:\/\/4.bp.blogspot.com\/-AWqNN2ZXxM8\/UIcExX--pwI\/AAAAAAAAGH0\/h5q1vgHM0jE\/s1600\/mesh3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/4.bp.blogspot.com\/-AWqNN2ZXxM8\/UIcExX--pwI\/AAAAAAAAGH0\/h5q1vgHM0jE\/s320\/mesh3.png\" alt=\"\" width=\"320\" height=\"179\" border=\"0\" \/><\/a><\/div>\n<div style=\"text-align: center;\"><i>Ou une pierre instable<\/i><\/div>\n<p>&nbsp;<\/p>\n<div style=\"clear: both; text-align: center;\"><\/div>\n<div style=\"clear: both; text-align: center;\"><a style=\"margin-left: 1em; margin-right: 1em;\" href=\"http:\/\/4.bp.blogspot.com\/-rvGYWWuucBQ\/UIcEydGup1I\/AAAAAAAAGIA\/GOGj1jTU1YQ\/s1600\/mesh4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/4.bp.blogspot.com\/-rvGYWWuucBQ\/UIcEydGup1I\/AAAAAAAAGIA\/GOGj1jTU1YQ\/s320\/mesh4.png\" alt=\"\" width=\"320\" height=\"174\" border=\"0\" \/><\/a><\/div>\n<div style=\"text-align: center;\"><i>Ou une pierre plus basse\/affaiss\u00e9e<\/i><\/div>\n<p>&nbsp;<\/p>\n<p>On peut r\u00e9p\u00e9ter ce processus pour chaque tuile. Ceci peut donner lieu \u00e0 un grand nombre de combinaisons qui peut ressembler \u00e0 \u00e7a:<\/p>\n<div style=\"clear: both; text-align: center;\"><a style=\"margin-left: 1em; margin-right: 1em;\" href=\"http:\/\/2.bp.blogspot.com\/-ArU4d7n_aFU\/UIcFsmebbTI\/AAAAAAAAGII\/K80eWmP3c8Q\/s1600\/final.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/2.bp.blogspot.com\/-ArU4d7n_aFU\/UIcFsmebbTI\/AAAAAAAAGII\/K80eWmP3c8Q\/s320\/final.png\" alt=\"\" width=\"320\" height=\"168\" border=\"0\" \/><\/a><\/div>\n<div style=\"text-align: center;\"><i>Variations de textures et de maillages pour des tuiles de sol en pierre<\/i><\/div>\n<h3><\/h3>\n<h3>IV &#8211; Quelques pr\u00e9cisions et une d\u00e9mo<\/h3>\n<p>Pas mal n&rsquo;est-ce pas? Mais voici quelques autres consid\u00e9rations sur le probl\u00e8me:<\/p>\n<ul>\n<li>Il est bien plus rapide et facile de cr\u00e9er un nouveau maillage qu&rsquo;une nouvelle texture. Et \u00e7a utilise moins de m\u00e9moire (enfin, au moins pour les maillages avec peu de polygones &#8211; ou \u00ab\u00a0low-poly\u00a0\u00bb). Donc si vous devez choisir&#8230; pr\u00e9f\u00e9rez les modifications de maillage. Mais pour un impact visuel correct, il faudra surement les 2.<\/li>\n<li>Ici, j&rsquo;ai choisi un look \u00ab\u00a0cartoon\u00a0\u00bb et j&rsquo;ai utilis\u00e9 peu de polygones pour mod\u00e9liser le sol. C&rsquo;est OK si on regarde la sc\u00e8ne d&rsquo;une distance correcte, comme c&rsquo;est le cas dans des jeux \u00e0 la Diablo par exemple. Mais si on veut faire des gros plans, il faudra certainement retravailler tout \u00e7a.<\/li>\n<li>Bien s\u00fbr, on peut ajouter encore plus de diversit\u00e9 \u00e0 l&rsquo;ensemble en disposant des objets sur le sol (tapis, pierres isol\u00e9es, d\u00e9bris, chaises, tables, et bien s\u00fbr les classiques caisses, &#8230;)<\/li>\n<li>On peut utiliser un jeu de tuiles compl\u00e9mentaire pour cr\u00e9er des chemins. Ca casse la monotonie de l&rsquo;ensemble. Dans Torchlight, les d\u00e9veloppeurs utilisent des chemins rectilignes afin de ne pas avoir \u00e0 g\u00e9rer les transitions ENTRE 2 JEUX DE TUILES COMPLETS (ce qui est un tr\u00e8s gros boulot)<\/li>\n<\/ul>\n<div style=\"clear: both; text-align: center;\"><a style=\"margin-left: 1em; margin-right: 1em;\" href=\"http:\/\/4.bp.blogspot.com\/-Dr4EEbcXupw\/UIenqElqgXI\/AAAAAAAAGIo\/9m4_0aQ3OJ0\/s1600\/torchlight-pc-073.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/4.bp.blogspot.com\/-Dr4EEbcXupw\/UIenqElqgXI\/AAAAAAAAGIo\/9m4_0aQ3OJ0\/s320\/torchlight-pc-073.jpg\" alt=\"\" width=\"320\" height=\"256\" border=\"0\" \/><\/a><\/div>\n<div style=\"text-align: center;\"><i>Des tuiles de pav\u00e9s agr\u00e9ment\u00e9es de chemins dans Torchlight<\/i><\/div>\n<ul>\n<li>Et enfin, on peut utiliser cette technique sur tout type d&rsquo;\u00e9l\u00e9ments architecturaux (murs, plafonds, toits, corniches, &#8230;) et avec des styles tr\u00e8s diff\u00e9rents (moderne, gothique, et tous les trucs qu&rsquo;on voit habituellement dans les jeux vid\u00e9os). Gardez toutefois en t\u00eate que les variations de maillage sur des g\u00e9om\u00e9tries complexes comme des murs en ruines sont d\u00e9licates et demandent de faire attention aux connections\/bords du maillage ET de la texture (ce qui peut \u00eatre tr\u00e8s difficiles car \u00e7a repose g\u00e9n\u00e9ralement sur des mapping de textures complexes).<\/li>\n<\/ul>\n<div style=\"clear: both; text-align: center;\"><a style=\"margin-left: 1em; margin-right: 1em;\" href=\"http:\/\/4.bp.blogspot.com\/-xChFZ3JkR6Q\/UIerA90hlSI\/AAAAAAAAGI4\/7m9mmdLWpW4\/s1600\/torchlight-pc-111.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/4.bp.blogspot.com\/-xChFZ3JkR6Q\/UIerA90hlSI\/AAAAAAAAGI4\/7m9mmdLWpW4\/s320\/torchlight-pc-111.jpg\" alt=\"\" width=\"320\" height=\"256\" border=\"0\" \/><\/a><\/div>\n<div style=\"text-align: center;\"><i>Jetez un oeil au boulot de dingue fait sur les tuiles des murs en ruine. Les connections sont invisibles!<\/i><\/div>\n<p>&nbsp;<\/p>\n<p>Un petit bonus: vous pouvez <a href=\"http:\/\/oneiricworlds.com\/media\/unity\/tileBasedGround\/WebPlayer.html\">tester une petite d\u00e9mo<\/a> que j&rsquo;ai faite et qui g\u00e9n\u00e8re un sol de mani\u00e8re al\u00e9atoire avec cette m\u00e9thode. Il vous faudra peut-\u00eatre installer un plugin (Unity Webplayer) pour pouvoir la lancer.<\/p>\n<p>Voil\u00e0 pour aujourd&rsquo;hui! J&rsquo;essaierai de poster plus de tutoriels comme celui-ci expliquant les coulisses de la cr\u00e9ation de jeu vid\u00e9o. Maintenant, vous pouvez essayer de rep\u00e9rer cette technique dans tous les jeux auxquels vous jouez \ud83d\ude09<\/p>\n<p>Vous pouvez utiliser les 2 tuiles que je montre dans cet article gratuitement si vous me mentionnez comme auteur quelque part.<br \/>\nDans un prochain post, j&rsquo;expliquerai comment cr\u00e9er de telles tuiles, et comment faire en sorte que les connections se fassent bien.<\/p>\n<p>Amusez-vous, et n&rsquo;h\u00e9sitez pas \u00e0 r\u00e9agir ou ajouter quelque chose dans les commentaires! Merci!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aujourd&rsquo;hui, je vous pr\u00e9sente une technique pour cr\u00e9er un sol sympa pour un jeu vid\u00e9o en utilisant des \u00ab\u00a0tuiles\u00a0\u00bb. J&rsquo;expliquerai un peu plus en d\u00e9tail comment rajouter des variations pour casser les r\u00e9p\u00e9titions trop flagrantes. J&rsquo;ai compris cette m\u00e9thode en \u00e9tudiant attentivement le jeu \u00ab\u00a0Torchlight\u00a0\u00bb (un Diablo-like bien sympa&#8230; par certains des cr\u00e9ateurs de Diablo [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":171,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[13,15],"class_list":["post-83","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorial","tag-blender","tag-gimp"],"_links":{"self":[{"href":"https:\/\/oneiricworlds.com\/fr\/wp-json\/wp\/v2\/posts\/83","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=83"}],"version-history":[{"count":7,"href":"https:\/\/oneiricworlds.com\/fr\/wp-json\/wp\/v2\/posts\/83\/revisions"}],"predecessor-version":[{"id":366,"href":"https:\/\/oneiricworlds.com\/fr\/wp-json\/wp\/v2\/posts\/83\/revisions\/366"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oneiricworlds.com\/fr\/wp-json\/wp\/v2\/media\/171"}],"wp:attachment":[{"href":"https:\/\/oneiricworlds.com\/fr\/wp-json\/wp\/v2\/media?parent=83"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oneiricworlds.com\/fr\/wp-json\/wp\/v2\/categories?post=83"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oneiricworlds.com\/fr\/wp-json\/wp\/v2\/tags?post=83"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}