Voir la version complète : Problème de tiles
Bonjours à tous, je de nouveau perdu dans mon petit problème concernant mon editeur de map :/
En résumé, je veux me servir des "tileset" de rpgmaker pour refaire en gros les foncitonalité de "mapping" de l'editeur de rmk.
Pour le moment, je me limite au terrain de base .
Mon problème étant de gérer les transition de terrain correctement .
Et je n'arrive pas a trouver une facons de procéder correcte .
J'avais par exemple pensé appliqué des schéma simple, en définissant en hard tout les cas possible en fonction du type de tile des 8 voisins direct ( en réalité il n'y as pas tant que ca, car on ne gere pas les diagonale ), une fois tout ces patttern définit, je pensais faire passer le tile selectionné dans tout ces pattern, pour voir lequel lui convenait .
Je me susi rendu compte, que ca va bien marché, uniquement si je n'ai pas des amas de plus de 9 tile disposé en carré .... sinon ca donne des résultat faux assez souvent ( pas ceux que l'on souhaiterai du moins) .
Je me suis ensuite dit, pourquoi ne pas , en plus du tile que l'on veux réélement changer, passer a la moulinette, tout les tiles voisin directs ... bah, ca non plus ca marche pas bien ^^
Enfin je me suis dit que l'idée était peu être, de tester les pattern avec TOUT les tiles de meme nature, qui sont voisin de notre tile principale, et de renouveller l'opération pour cahcun des tiles touché .
En pratique, ( pas testé ), je pense que ca ne va pas marcher .... mais bon je vais quand meme tenter au ca ou ( en n'oubliant pas, de n'appliquer le tout qu'une fois au max par tile ... sinon on prend une boucle infini ^^ )
Enfin bref <---- en manques d'idées ;)
Bon, je viens de tester, l'application bete et mécahnte des pattern a tout les tile du meme voisin de notre tile principale, et a totu les voisin de ceux-ci ect.... ect ... par réucrrence .
Ca ne plante pas :p Mais ca ne donne pas encore le résultat escompté , simplement car l'ordre dans lequel les tile passent a la moulinette engendre des erreurs ( des dessein qui en recouvrent d'autre et ainsi de suite )
Il doit encore me manquer quelquechose .... des idées ? ( ou alors, je fais peut-etre fausse route ^^ )
Lightness1024!
08/11/2005, 22h15
je suis peut etre trop fatigué là, mais j'ai absolument rien compris de ce que tu veux faire :/
plutot pareil que lightness 1024 la... je comprends pas trop bien ...
En résumé, je veux me servir des "tileset" de rpgmaker pour refaire en gros les foncitonalité de "mapping" de l'editeur de rmk.
c'est donc une librairy de textures j'ai bon ?
gérer les transition de terrain correctement .
Tu veux dire les make "seamless" pour que les textures se recoupent sur les bords ?
J'avais par exemple pensé appliqué des schéma simple, en définissant en hard tout les cas possible en fonction du type de tile des 8 voisins direct ( en réalité il n'y as pas tant que ca, car on ne gere pas les diagonale ), une fois tout ces patttern définit, je pensais faire passer le tile selectionné dans tout ces pattern, pour voir lequel lui convenait .
ca me rappelle un casse tete avec 9 cases, qui existe en standard sous unix, avec des cases carrees qu'il faut poser les unes a cote des autres pour que ca "matche" avec la case d'a cote... (meme numero; meme image)
Je me susi rendu compte, que ca va bien marché, uniquement si je n'ai pas des amas de plus de 9 tile disposé en carré .... sinon ca donne des résultat faux assez souvent ( pas ceux que l'on souhaiterai du moins) .
Si c'est le casse tete auquel je pense, c'est fort complique d'avoir 9 9 alors plus... enfin le casse tete se regle et il doit y avoir une technique parce qu'en en ayant eu un dans mon enfance j'ai trouve 9 solutions soit disant qui n'existait pas. Donc ca doit se coder. Mais c'est un algo TRES specifique, qui n'a pas l'air de ton niveau (je ne dis pas que c'est du mien, je le faisait par ce que je devais etre un peu rainman *grin* mais surtout ca doit etre facile a implementer quand on t'as explique mais a trouver seul... en tout cas pour + de 9)
Je me suis ensuite dit, pourquoi ne pas , en plus du tile que l'on veux réélement changer, passer a la moulinette, tout les tiles voisin directs ... bah, ca non plus ca marche pas bien ^^
Donc en gros recurser sur tout les conjoints qui partagent un cote... mais bon le reste est place et tu risques d'avoir enormement de repetitions plutot que le truc joli que tu voulais. D'un autre cote tu as un nombre "infini" de plaquettes de chaque type, alors c'est effectivement moins difficile qu'un casse tete...
Enfin je me suis dit que l'idée était peu être, de tester les pattern avec TOUT les tiles de meme nature, qui sont voisin de notre tile principale, et de
renouveller l'opération pour cahcun des tiles touché .
Ouais mais ca c du tatonnage...
Bref, c'est bien joli mais je pense qu'on code ce genre de truc quand on "en a l'idee", et pas parce qu'on "aimerais l'avoir". C'est trop spe. (Je dis pas que t'as pas d'idees ! je dis que t'as pas celle la !, oui je sais c'est enervant... m'en veux pas parce que c'est moi qui te l'ai dit)
voila donc je crois que tu es en manque d'un bon truc cool a coder et que tu t'epuise ... peut etre en vain... si j'ai bien compris ce que tu veux faire, ce dont je ne suis pas sur.
@ Laeti²x j'ai un peu de mal a suivre ton raisonnement :p
Hum c'est vrai, mon premier post est a chier, faut le dire :p
C'est trés mal expliqué :/ D'autant plus que le problème n'est pas trés compliqué a comprendre, alors je vais tenter de faire plus simple .
Je programme donc un editeur de map, a base de TILE, donc en 2D .
Chaque tile fait 16*16, ce sont des "petit tile" , chaque gros tile, faisant lui 32*32 ( c'est simplement un découpage arbitraire, en réalité c'est juste un regroupement de 4 petit tiles ) .
Nous avons donc sur l'écran uen carte, avec des tas de petit tiles affiché.
Chaque tile posséde un identifiant, qui le relie a une partie de texture donnée .
Ainsi quand je charge une map, le prog va lire tout les identifiant des petits tiles dans le fichier map, puis crréer l'objet "cMap" en mémoire, et ensuite affiché cette carte a l'écran a l'aide des données qu'elle contient .
Mon but est désormais de modifier ces tiles .
Pour cela, je dispose d'un "TileSet", en gros, une texture, contenant des groupement de tiles , il peut y avoir un nombre de groupement indéterminer de tile, mais le problèeme est le meme qu'avec 2 groupe de tile .
Chaque groupe de tile représente une partie de terrain ( herbe, plaine, mer ect ...)
Chaque groupe de tile est constitué de 12 gros tiles ( donc 12*4 petits ), chacun représentant une version différente du tile, le but étant qu'en jouant avec ces 12 tiles, l'on puissent arriver a recomposer un terrain corrrectement, c'est a dire, en gérant de manière assez "jolie", les transition entre terrain du genre herbe/mer . ( en gros, on gére les coins ) .
Ensuite, l'utilisateur peut selectionner un groupement de tile ( symbolisé a l'écran par gros tile représentatif de celui-ci ) et l'apliquer sur un gros tile de la map .
Le but étant de trouver quelles tiles afficher dans le gros tile visé de la carte, et eventuellemnt dans les tiles avoisinant ( dans le but de générer les transitions de terrain évoqué plus haut ) .
Quand a l'algo a mettre en place, je pense qu'il ne doit être sorcier ... ( et j'espère bien de mon niveau :D )
J'espère que ca vous aura éclairé :)
Allez, je retourne triturer mon esprit ^^
ok je comprends mieux ;)
j'etais a cote dans le sens ou
je l'ai compare a un case tete ou le nb de tiled dispo de chaque sorte est limite, et donc augmente la complexite du pb
je n'avais pas compris l'utilite reelle, cad gerer les transitions entre textures
question : est ce que tu ranges cote a cote seulement des 16 16 entre eux et des 32 32 entre eux ou est ce que tu les melanges ?
en quoi est tu oblige de le faire si tu les melanges ?
je comprends que surement il faut les combiner mais tu laisse du flou pour la suite
la suite est apparement l'affaire que tout les set de tiles sont "schematiquement" identiques, chaque tournant a gauche est place au meme endroit sur tout les tileset, etc, et tu peux remplacer celui que tu as fait par le suivant. Et qu'on peut les remplacer entre eux et surtout, ce qui a l'air de te preoccuper, les subdiviser pour affiner le processus
en fait je crois que la phrase
Ensuite, l'utilisateur peut selectionner un groupement de tile ( symbolisé a l'écran par gros tile représentatif de celui-ci ) et l'apliquer sur un gros tile de la map .
est plus confuse que le reste (bien que je cerne de mieux en mieux ce que tu vois sans trop changer d'avis : il m'est arrive de regarder des tilesets de ce genre parfois en pensant : fodrait en faire quelque chose...mais ca me parait etre des bidules a "pseudo" placer a la main, non ?)
Moi je crois que si tu nous mettais deux petits screenshots (par exemple, un de ce que tu as pour le moment, et un autre représentant ce que tu veux), ce serait quand même vachement plus clair :)
En principe , on fait un grand pas vers la solution lorque le problème est clairement énoncé :)
Peut-être que ce lien peut t'aider ?
http://www.gamedev.net/reference/articles/article934.asp
Ups j'ai pas recu une belle notification par mail des réponses, alors j'ai du retard :D
heu le problem est trés bine énoncé par le lien de Ced666 ( merci, mais je l'avais deja lu :p ) Enfin le problem de cette méthod c'est quelle se base sur ( de mémoire ) 32 version graphique de chaque tile, ce que je n'ai pas l'intention de refaire .
Enfin bref, je *pense* avoir de toute facons trouver la solution ;)
A l'arrache en itérant sur certain tiles et en décrivant les cas possible en hard , ca semble marcher, j'en suis a 55 cas ( je pense qu'il me reste une petite 10aine ), a raison de 5 min / cas c'était pas si terrible :D
Enfin je vous tient au courant ;)
Avec un Screen du résultat si ca marche :p
Me revoila ... j'ai encore pas mal de test a fare pour vérifier que ce que j'ai fait fonctionne bien, mais sa semble "ok" ... Il reste aussi de nombreux problème mais, je vais m'y attaquer d'ici peu :p
Enfin bref, voila en gros ce que ca donne pour le moment
http://max.cat.free.fr/test.png
Ya de l'espoir ;)
edit ... honte a moi , je veint de m'appercevoir qu'il y a un pti bug ... je vais corriger ca vite fait :p ( visible sur la map ^^ )
Je me permet de "upper" le topic, car j'ai encore un dernier problème et je n'ai pas encore trouvé de solution .
En effet, je n'ai pas encore tenu compte du tile présent sur la 1ere rangée , 2eme colonne de chaque groupement de 12 tiles . Et c'est maintenant que je m'appercois de son utilité :/
Il semble renvoyé vers un autre groupement .
je vais prendre un exemple :
Dans le groupement des 12 tiles de montagne enneigé , le tile en question est un tile de neige .
Ce qui semble ce produire est que :
Si je met une montagne enneigné, puis que juste a coté, je met un tile de neige, le programme va reconnaitre le tile de montagne enneigé comme de la neige, ce qui va permettre de généré des transitions correcte entre les tiles .
Je pense pouvoir codé ca différement de rpgmaker, en introduisant une variable par groupe de tile, indiquant vers quel groupe de tile elle renvoie .
Mais je me demande surtout comment rpgmaker s'en sort pour gérer ca ... car je doute que ce genre d'info soit contenu dans le .png ;)
Des idées ?
Bon bah, je m'y suis collé et j'ai codé ca comme je l'avais pensé, en indiquant manulement dans mon fichier décrivant le tileset les liens entre les différent tile ( c'est trés rapide a faire ... et de toute facons , au final, ce sera fait de facons graphque dans mon editeur de niveau, donc ca va ^^ ) .
Enfin bref, un dernier exemple de ce que ca donne ( toujours avec mon tileset de base pour tester ...oui c'est pas beau , mais oui ca marche ^^ )
http://max.cat.free.Fr/test2.png
Je trouve ça plutôt pas mal moi.
codespirit
19/11/2005, 23h31
http://perso.wanadoo.fr\metald\level1.JPG
un petit apercu de mon éditeur de map 3D maison
c'est codé en c# et basé sur directx 9.0c pour le rendu.
Il faut inverser les 2 derniers "\" .
codespirit
20/11/2005, 11h34
j ai reverifie le lien il est ok
vous etes sur que ca ne marche pas?
Disons que je suppose que si on est sous Windows avec IE, celui-ci doit corriger automatiquement les backslash (\) et slash (/) et on ne doit pas s'appercevoir que le lien est faux.
vBulletin® v.3.6.5, Copyright ©2000-2009, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org