La gestion des ressources

View previous topic View next topic Go down

La gestion des ressources

Post  Yann on Fri 30 May - 23:30

Il est un domaine où le jeux semble condamné à prendre de plus en plus de poids, ce sont les ressources. Au fur et à mesure que le code diminue, de nouveaux graphismes et quelques textes viennent occuper l'espace pour rendre le contenu plus attractif. Avec déjà 25Ko de ressources en version 15, le jeux montre déjà sa gourmandise, et ce n'est qu'un début.

On pourrait à la rigueur envisager de travailler sur des ressources "réduites", une version un peu "manuelle" pour économiser l'espace. Mais dans un premier temps, je préfèrerais étudier une méthode générique d'économie d'espace.
La compression vient tout de suite à l'esprit.

L'un des problèmes de la compression, c'est qu'il faut décompresser. Trivial comme conclusion, mais lourd de conséquences en termes de réactivité. On pourra par la suite travailler le sujet de la latence dans un prochain billet, mais pour l'instant, intéressons nous seulement aux alternatives disponibles et à ce qu'elles apportent.

J'ai considéré 3 compresseurs réputés pour en tester l'efficacité. BZ, de Mika Heiskanen, est le grand standard, rappelé dans la plupart des forums et sites sur la calculatrice HP. Flash est une alternative "récente" d'Arthur Patrouchev, réputée plus rapide. Enfin, TNT, de Damien Harper, s'affiche comme étant le plus efficace.

Verification faite, en utilisant une compression sur pas moins de 100Ko de données, notamment graphiques, TNT arrive en tête de la performance de compression, suivi de peu par BZ, puis Flash.
Qu'en est-il du temps de décompressions ?
Il en va tout autrement, puisque BZ est le plus rapide, a égalité pratiquement avec Flash, puis loin, très loin derrière, on retrouve TNT.
Voilà qui change la donne, car il n'est pas vraiment intéressant de sacrifier autant de réactivité juste pour quelques % d'économies en plus.

En première conclusion, j'utiliserai donc BZ.

Maintenant quel serait le meilleur usage ?
Dans un premier temps, le plus facile serait de créer un programme qui compresse automatiquement toutes les données du répertoire, celles-ci appelant automatiquement le décompresseur. Ce serait assez trivial à implémenter et plutôt simple d'emploi.

Oui mais, il y aurait moyen de faire encore mieux, car il reste encore le problème de la perte de performances liée à la recherche de variable globale, ainsi que quelques gaspillages d'entête.
Sur le modèle du Link Array, on pourrait envisager de compresser toutes les données, de les placer dans un seul fichier unique où elles seraient compressées par "pack", disons d'au moins 500 octets. Avec une table de pointeurs en début de fichier, le temps d'accès serait probablement amélioré. De plus, en éliminant la notion de variable et de nom de variable, on gagnerait probablement en entête.
Resterait donc à régler la notion de cross-référence, chaque définition d'écran pouvant faire appel à une ou plusieurs images, des fichiers qui portent des noms.
Bref, un véritable petit développement, assez proche de ce que fait déjà MkLib, la compression de fichier en plus.

Peut-être serait-il d'ailleurs plus intéressant de modifier directement MkLib pour parvenir à ce résultat ? Mmmh, une idée qui semble bien au-delà de mes moyens actuels. Mais qui sait...

Yann
Admin

Number of posts : 174
Registration date : 2008-05-01

http://phantasie.tonempire.net

Back to top Go down

View previous topic View next topic Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum