(24-01-2013, 11:52 PM)Xenos a écrit : Rien ne t'empêche, sinon, de faire un fichier xml ou json coté serveur avec les données statiques ou quasi-statiques de toutes les cases de la carte, et de laisser le navigateur aller récupérer ce xml. Le navigateur devrait, normalement, mettre le document en cache assez rapidement, et donc, tu n'auras plus de gros transfert.C'est une solution qui peut être très intéressante par rapport aux données statiques (typiquement : le décor de la carte). On pourrait avoir une évolution en temps réels reposant sur un Json en cache avec uniquement une actualisation des données dynamiques.
Mais... c'est une solution incompatible avec un brouillard de guerre totale où même le décor est caché (révélé qu'une fois que le joueur a découvert). A voir si le brouillard de guerre total vaut le fait de se priver d'un tel système.
(24-01-2013, 11:52 PM)Xenos a écrit : Enfin, je rappelle que ces données sont assez légères point de vue javascript, et donc, cela ne rame QUE parceque tu essaie d'AFFICHER 120x120 cases, pas parce que tu essaie de gérer 120x120 cases.A mais là-dessus je suis entièrement d'accord. Ce que je voulais dire c'est que pouvoir afficher de façon fluide 400 cases (20 x 20) nécessite de pouvoir gérer 14400 cases efficacement, donc à fortiori de pouvoir compter sur la solidité des requêtes ajax & de la gestion des events qui les lancent.
L'octree est super intéressant. Personnellement, sur un autre moteur purement 2D (non isométrique), j'ai utilisé un système de compression basé sur la redondance des infos sur les cases affichées. Couplé à un système très efficace de classes CSS et de sprites, ça me permettait de réduire de 90% les informations transférées lorsque celles-ci étaient explicites et dépliées : autrement dit, pas besoin de transférer "/images/herbe.png", mais uniquement "herbe". Mieux, si une seconde instance du mot "herbe" était transférée, je la convertissais en "a" par exemple. Pareil, si une ligne était vide, je renseignais simplement un tableau vide. Tout le "dépliage" était géré par le client. Ca fonctionnait du feu de dieu (je crois que c'est un des meilleurs taffs de programmation que j'ai fait jusqu'à présent).
Si j'ai l'occasion de le sortir de façon documentée, ça serait top ^^
Merci pour tes explications sur les events de navigation, ça m'éclaire assez bien. Je vais essayer de taffer ça dans les prochains jours pour voir ce que ça pourrait donner