21-01-2011, 02:17 PM
(21-01-2011, 11:58 AM)Argorate a écrit : J'avoue Holy, ne pas avoir tout compris à ton explication^^Alors, je suis un "fada" (hem) des fichiers et de la sérialisation. Donc mes cartes sont découpées par zone (ce qu'on voit sur la vidéo est une zone, de 18 sur 18) et enregistrées par zone. Ce qui me permet, quand je charge une partie de carte, de ne charger que le fichier de la zone (il fait approximativement 10ko pour 324 cases sur 8 couches différentes pour l'éditeur).
Mais après avoir vu la vidéo, je comprend un peu mieux, mais ça m'amène à une autre question. Parce que là tu parles et travailles avec un éditeur de carte mais comment tu fais ensuite pour stocker ta map? une fois que tu as fini avec l'éditeur, tu enregistres via une moulinette php qui fait des requêtes SQL pour chaque case?
Si c'est le cas, comment tu stock l'information? parce que terrain eau qui a des bords de sable en haut, a gauche et a droite, c'est différent du terrain eau avec des bords de sable qu'a gauche par exemple...
C'est vraiment pratique et performant (c'est un bête tableau à dérouler quoi et y a moyen de mettre en cache pas mal de données fixes une fois qu'on est en jeu), à un obstacle près : les maintenances globales sur l'ensemble de la carte. J'ai une fonction qui me permet de charger l'ensemble de mes cartes, mais vu que je travaille sur un continent entier (énorme : 1092 zones au total), ça carbure sévère au niveau de la mémoire allouée. Heureusement, ce type de maintenance ne concerne que l'éditeur car mes parties se jouent que sur une partie de carte (en général pas plus de 30 zones).
Ensuite, je ne stocke dans l'éditeur que le type de la case : eau, continent, sable, désert, etc. Après quand je charge ma carte, mon moteur de rendu calcule le type de bords à placer. Donc, en ce qui concerne l'éditeur, je ne stocke pas le rendu des bordure, je le recalcule à chaque fois (c'est jamais que des comparaisons ^^). Quand on est en partie en revanche, vu qu'à priori le décor ne change pas, je mets en cache le rendu des bordures sous la forme de lettres (qui correspondent de toute façon à mon css).
Il est tout à fait possible de stocker le tout dans une base de données, quitte à mettre des données sérialisées (json_encode/decode ou serialise/unserialise) dans des lignes de tableau. Le truc c'est qu'il faut avoir un serveur qui puisse répondre rapidement en lecture, mais ça c'est la même partout ^^
(21-01-2011, 11:58 AM)Argorate a écrit : Donc si je comprend bien, tout est basé sur ton éditeur de map? C'est a dire comme le dit colmea, quand tu rajoutes un terrain, cela détecte où tu as cliqué et applique aux 8 cases alentours des transitions?C'est exactement ça J'ai une bête réponse ajax (XML, mais je vais passer en JSon d'ici peu) qui dit : change le contenu des 8 divs environnantes avec telle et telle bordures, ainsi que celle où tu viens de cliquer
(21-01-2011, 11:58 AM)Argorate a écrit : Mais je n'ai pas bien saisie ton histoire de découpage en 4 (pourquoi 4 et pas 8? puisqu'il y a 8 directions possible)?C'est difficile à expliquer, mais pour commencer : c'est possible de le faire avec 8, mais ça veut dire, sauf si je me trompe, que tous tes calques ne sont pas de la même taille ^^ Enfin, ça dépend comment tu le conçois en fait.
En gros, si tu découpes en quatre ta case de 32 sur 32, tu as pour chaque quart 5 possibilités :
- coin interieur
- coin extérieur
- bordure verticale
- bordure horizontale
- ni bordure, ni coin
Quand je rentre, je filerai un zip avec un de mes autotiles et les 20 images, ça sera plus limpide.
(21-01-2011, 11:58 AM)Argorate a écrit : PS: ton éditeur est vachement classe!Merci ^^
Ca représente pas mal de taff et je suis plutôt fier du rendu final, surtout qu'on navigue très rapidement entre les zones de la carte.