[PHP , XML]

Fermé
Chris - 11 août 2004 à 02:47
 Chris - 11 août 2004 à 10:39
Bonjour à tous.

Je développe actuellement un site de jeu en php et je voudrais que mes joueurs puissent accéder à une carte qui ressemblerait à ceci :
http://chriskang.free.fr/loki.htm
L'image est assez grande (mon exemple est en 800x600) et j'aimerais qu'elle le soit encore plus. Comme vous le voyez, elle peut se décomposer en cases d'environ 20 pixels de coté. Ce qui représente environ 1200 cases sur l'image.

Pour générer cette carte je suis confronté à plusieurs possibilité et j'aimerais votre avis, sachant que mon but et de limiter au maximum la taille des données (eh oui, je compte héberger ce site sur mon ordi personnel donc je veux ménager mon petit débit d'upload).

1. Créer cette carte dynamiquement avec la librairie GD pour PHP. Ca marche bien, c'est d'ailleurs comme ca que mon exemple a été généré. En fait ca coince uniquement au moment du choix du format de sortie. Là c'est du PNG (c'est à dire un algo proche du GIF) et j'obtient un fichier de taille 22k. Le problème c'est que le PNG nécessite une palette et ne supporte pas le truecolor. Je vais donc être vite limité si je veux améliorer mes graphismes.

2. La deuxième idée c'est toujours d'utiliser GD mais de formatter en jpeg. Là j'ai des belles couleurs mais si je veux une qualité correcte il me faut au moins un facteur de qualité de 70 voire 75% ce qui donne un fichier de 65k. C'est un peu trop à mon gout.

3. Enfin la dernière possibilité que je vois (mais si vous avez autre chose, n'hésitez pas) ce serait d'utiliser PHP pour générer un document XML qui serait ensuite convertit en un bête tableau HTML.
Si j'ai bien compris le principe du XML (que je viens juste de découvrir, corrigez moi si je me trompe) il me suffit de déclarer une balise pour chaque type de case que je vais utiliser et d'envoyer le code ainsi généré, lequel sera interpreté par le naviguateur coté client.

Par exemple, si je définit dans mon fichier XSL la correspondance entre une balise
PERSO et le code <TD bgcolor='#123456' width=... height=...>
et que j'envoie à mon client le code
<PERSO/><PERSO/><PERSO/>
son naviguateur sera bien capable d'interpreter cela comme une suite de trois balises <TD ...>
non?
Donc d'après mes calculs, si j'ai 1200 cases et qu'il suffit d'une balise de 10 caractères environ pour construire chaque case, j'obtient un fichier de 12k, ce qui serait la meilleure solution.

Qu'en pensez vous?
D'avance merci pour votre aide.
A voir également:

1 réponse

teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
11 août 2004 à 09:15
Salut...

Quelques precisions d'abord,
Ton image sera fortement plus volumineuse si tu souhaites plus de couleurs.
Pour faire ce que tu veux avec un fichier XML, il te faudra ecrire un fichier XSL et utiliser soit du PHP pour en faire du html, mais c'est le html qui sera telecharge, soit tu peux aussi envoye le XML et le XSL chez tes clients, a charge pour eux de le parser...Pas terrible tout ca...
Et si tu fais ton tableaux directement en HTML ca donne quoi? A la limite pour pas te faire BIIIp avec les precisions tu peux utiliser des css...


.  .  Ce post a été écrit entièrement
\_/  avec des molécules recyclées
0
Quand tu dis "à charge pour eux de le parser", ca veut dire qu'ils devront télécharger les deux fichiers et faire le parsing manuellement chez eux? Je pensais pourtant qu'IE ou Netscape étaient capables de faire ca tous seuls non?

Pour l'idée d'envoyer du html, ca ne me plait pas trop. Une balise du style
<TD bgcolor="#123456" width=... height=...> </TD>
prend déjà dans les 50 caractères. Pour 1200 cases ca donne un fichier de 60k, donc c pas rentable, autant envoyer du jpeg.

Effectivement je n'avais pas pensé aux CSS.
L'idée du <TD class="perso"/> me convient mais si ca pouvait marcher avec un simple tag <PERSO/> ce serait encore mieux.

Merci.
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
11 août 2004 à 10:06
Je pensais pourtant qu'IE ou Netscape étaient capables de faire ca tous seuls non?

Mouais, mais bon, j'ai jamais ete vraiment convaincu par les resultats

Pour l'idée d'envoyer du html, ca ne me plait pas trop. Une balise du style

Ben, tu n'es pas oblige de repreciser la taille, tu peux definir ca par defaut...
Apres il existe des reducteurs de HTML (Regarde sur http://sebsauvage.net/logiciels je crois qu'il a ca) qui peuvent te faire gagner pas mal de place...

Honnetement, je suis un pro-xml jusqu'au bout des ongles, mais la je vois pas bien l'utiliter (sauf bien sur si tu en as besoin dans un programme sur le serveur pour faire marcher le jeu, auquel cas oui ca vaut la peine de s'invesrit dans cette solution...)


.  .  Ce post a été écrit entièrement
\_/  avec des molécules recyclées
0
Chris > teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011
11 août 2004 à 10:39
L'utilité, ca aurait été d'obtenir avec 12k de code le même résultat visuel qu'une image jpeg de 65k mais si tu me dis que les naviguateurs gèrent mal le parsing coté client je te fais confiance.
Je vais rester à ma bonne vieille librairie GD.
Merci du conseil.
0