18-03-2010, 12:26 PM
(Modification du message : 18-03-2010, 12:27 PM par Sephi-Chan.)
Pour ma part, je trouve que la technique des boucles dans les boucles est… dépassée. Raisonner en grille n'est pas efficace.
Le mieux, à mon sens, pour générer une carte, c'est de procéder en deux temps : le premier et le deuxième.
Dans un premier temps, on créer une structure descriptive de la carte :
Et dans un second temps, on génère une feuille de style à la volée afin de positionner ces blocs.
Les gros avantages de cette technique :
Le principal défaut est que ça demande d'être rigoureux dans la maintenance des sprites (car si des éléments bougent, ça fout tout en l'air). Mais est-ce réellement un défaut ?
Sephi-Chan
Le mieux, à mon sens, pour générer une carte, c'est de procéder en deux temps : le premier et le deuxième.
Dans un premier temps, on créer une structure descriptive de la carte :
<div class="map">
<div class="tiles">
<div class="tile-1-1" id="tile-54" />
<div class="tile-1-2" id="tile-55" />
<div class="tile-2-1" id="tile-56" />
<div class="tile-2-2" id="tile-57" />
</div>
<div class="objects">
<div class="tile-1-2" id="object-47" />
</div>
<div class="characters">
<div class="tile-1-1" id="character-13" />
</div>
</div>
Et dans un second temps, on génère une feuille de style à la volée afin de positionner ces blocs.
Les gros avantages de cette technique :
- Très léger d'un point de vue des requêtes SQL (et de l'accès aux données, de manière générale) : aucune imbrication. On a 3 requêtes simples ;
- Le code HTML est beaucoup plus léger ;
- Il est bien plus facile de manipuler des éléments positionnés (en absolute et relative) avec Javascript que des éléments imbriqués dans tes tableaux ;
- La gestion des objets qui prennent plusieurs cases devient triviale ;
- Une partie du code CSS peut être mise en cache : celle qui positionne les tuiles selon leurs coordonnées X-Y à l'écran (et pas leur coordonnées absolues sur la carte) ;
- On peut utiliser des sprites CSS pour n'avoir que très peu de requêtes HTTP et un fort potentiel de mise en cache, ce qui a pour résultat direct d'accélérer considérablement le chargement de la carte ;
- Etc.
Le principal défaut est que ça demande d'être rigoureux dans la maintenance des sprites (car si des éléments bougent, ça fout tout en l'air). Mais est-ce réellement un défaut ?
Sephi-Chan