TourDeJeu, le portail des jeux en ligne alternatifs, les articles 
TourDeJeu, le réseau des jeux en ligne alternatifs : jeux web multijoueurs, jeux par forum. En savoir +
En ligne : 518 jeux, 7177 news, 26754 commentaires
 

Recherche de jeu par critères - Un jeu au hasard !

Les Focus

Tech. : Le programmeur écologique
Tech. : automatisation et mails
Salon MondeDuJeu 2002
Revue de presse des JpC
Humour : 1001 raisons pour jouer
Ludique : le joueur parfait
Ludique : découverte du JpC
PHP : accès base de données
PHP : structure du site
Ludique : JpC et Temps réel
Jeux de rôles sans règles
Humour : astrologie du JpC
Tech. : Bases de données
MJ : les joueurs multiples
PHP : utilité pour un JpC
PHP : c'est quoi ?
Tech. : l'analyse des ordres
Ludique : débutants et vétérans
Tech. : archi Ultraball 2100
Ludique : les jeux de pronos
Tech. : le site Web d'un JpC
Humour : football et wargame
Présentation de TourDeJeu

Devenir un développeur écologiste

Compactez toutes vos données

Compactez vos données
Le premier réflexe que devrait avoir un concepteur de jeu, c'est de tester son jeu sur un modem 14K. Encore que ce soit difficile à trouver de nos jours, l'expérience est enrichissante. Elle permet de mesurer la quantité de données qui sont envoyées au joueur par le jeu.

Il faut dès à présent énoncer une règle ESSENTIELLE dans la conception d'un jeu : estimez toujours la quantité de données affichées en fonction du temps moyen que devra passer le joueur sur la page de jeu. S'il doit s'arrêter pour réfléchir deux minutes entre chaque action le temps que le jeu se charge, le niveau de réflexion stratégique du jeu a intérêt à être élevé. Un jeu de réflexion peut impliquer des éléments graphiques plus complexes qu'un jeu d'action. Et l'efficacité du jeu impose des compromis ou des ruses de sioux pour s'accomoder de graphismes complexes.

Oubliez votre fond d'écran en 1280x1024
C'est dur à vivre, mais votre fond d'écran représentant un dragon rouge terrassant un quelconque Saint Michel va devoir passer à la poubelle. Certes il ne pèse que 130ko en JPEG. Mais quand 1000 joueurs viennent jouer tous les jours, ils téléchargent grosso modo 130 mégas de ce fond d'écran par jour (en comptant le cache du navigateur). Soit 4GO par mois, plus que le plafond de 3GO qu'autorisent certains hébergeurs. Les solutions pour vivre sans image de fond géante sont multiples. La première, c'est de décomposer l'image, par exemple entre arrière-plan et avant-plan. Si le fond de l'image est un dégradé rouge/vert du plus bel effet, il sera sans doute intéressant de compresser ce fond indépendamment en JPEG et de surimposer le dragon en GIF transparent. De toute manière, un fond d'écran n'a pas besoin de sauter aux yeux puisqu'il est destiné à décorer le fond de l'écran.

La variante, c'est la texture "marbre" qui pèse 30ko. Certes pour avoir un motif pas trop répétitif, l'image doit être grande, mais il est impensable que ce fond ne se réduise pas à quelques ko (en GIF 12 couleurs ou en JPEG un peu compressé). C'est une question de compromis : il faut accepter une petite perte de couleur dans le fond d'écran (qui est d'ailleurs souvent caché par les boutons, cadres et autres textes) quand elle permet de diviser la taille par 6. Les joueurs vous en seront éternellement reconnaissants. Il y a plein de logiciels et d'utilitaires qui permettent de gérer la compression à l'octet près (Photoshop, Paint Shop Pro, JPEG Optimizer...), ne vous en privez pas.

D'une manière générale, décomposer une image en petits éléments permet d'économiser des octets parce que la compression fonctionne très bien sur des éléments simples. Il suffit de les assembler ensuite dans les pages HTML constituant le jeu. Le HTML permet de surimposer le fond d'écran du BODY, puis le fond détouré (en GIF transparent) d'un TABLE, par exemple, et enfin une IMG éventuellement transparente, elle aussi. Et encore je ne parle pas de LAYERS qui permettent d'empiler les couches d'images. De quoi décomposer en petits morceaux la plupart des éléments visuels de votre jeu. Mais l'essentiel, je vous le rappelle, c'est d'être modestes : si le logo 3D que vous avez fait ne se compresse pas en dessous de 20ko, JETEZ-LE ! Ne surchargez pas vos pages avec cet élément encombrant, qui ne sert pas le jeu.

Le texte aussi
On a tendance à penser que le texte a peu d'importance par rapport aux images, parce qu'il ne pèse pas lourd et qu'on ne peut pas le compresser. Il ne mériterait pas qu'on se prenne la tête à l'optimiser. Moi je dis : "Que nenni ! Détrompez-vous !" Parce que, contrairement aux images, qui peuvent se mettre en cache sur le navigateur, le texte généré par PHP est RECHARGÉ dès qu'il y a un changement sur la page. Et puisqu'on cause de jeux en ligne, à chaque changement de page il est censé y avoir rechargement des données. Ce qui signifie que la page de 30ko (et je reste modeste ; ça monte vite avec quelques tableaux et une mise en page complexe) va être chargée, disons une quinzaine de fois par chaque joueur et que 1000x15x30ko par jour ça fait beaucoup d'octets quand même. Dans un jeu de plateau constitué de cases (type Nainwak), le navigateur doit charger par exemple 8x8 = 64 cases dotées chacune d'un fond d'écran et d'images, et éventuellement de liens et autres mouseover. Dans ce type de structure, le moindre caractère de texte est précieux, puisqu'il sera envoyé soixante quatre fois au navigateur du joueur à chaque action.

Il y a des manières diverses de compresser le texte, dont l'efficacité dépend essentiellement du type de données présentes sur la page. La première préoccupation, c'est de surveiller la taille des balises HTML. Utilisez les feuilles de style ! Il faut bannir les mises en forme de type <FONT> alors qu'il existe les <TD class="style"> (ou les <SPAN class="style"> si vous n'avez pas de tableau) bien plus économiques. Il est trop facile de créer un code monumental à partir d'une simple ligne PHP répétée 500 fois. Il est plus élégant de définir un style une fois pour toutes et de le réutiliser mille fois dans la page.

Autre nécessité : raccourcir les noms utilisés.
C'est vrai pour les feuilles de style : un class="d" sera plus économique qu'un class="police_par_defaut_de_la_page_principale". Une lettre est souvent suffisante, éventuellement assortie de chiffres (d01,d02,d55...). Idem pour les images et leur répertoire. Si vous deviez payer un euro par caractère, vous préfèreriez copier 64 fois "images/image01.gif" ou "i/i01.gif" ? (ni l'un ni l'autre diront certains, mais vous avez compris l'idée : compresser ces caractères !). Pour les liens, on se retrouve dans la même situation. Supposons que vous désirez affecter une action à chacune des 64 cases et que seul un numéro varie. Le programmeur insouciant va copier gaillardement "action.php?action=deplacement&id=04" ou 05 ou 06 pour chaque case. La première étape serait, vous l'aurez compris, d'en faire "ac.php?a=d&i=04", mais il y a encore moyen de faire mieux. Le programmeur écologiste va réduire cette ligne à ce qu'elle contient d'essentiel : une action et un chiffre. Il pourra alors créer une fonction javascript qu'il nommera "d" (comme déplacement) ; le lien deviendra "d(04)" et la fonction se chargera de compléter le reste de l'adresse de la page à chaque appel.

Retour au sommaire de l'article 

(c) TourDeJeu 2000-2024