Utiliser les datafiles avec Allegro

Un article de Mangue.org, l'encyclopéde libre.


A part dans les petits jeux que nous programmons pour nous faire la main, nous nous retrouvons avec Allegro face à un problème bien embêtant : la rapide prolifération des fichiers ressources du jeu (images, musiques, etc.) dont on ne sait pas comment les classer pour que l'arborescence ne devienne pas trop désorganisée. Heureusement, les développeurs d'Allegro ont tout prévu : Grabber, un utilitaire qui permet de regrouper les fichiers ressources du jeu en un seul fichier (un peu à la maniére d'une archive ZIP). Ainsi, plus de problêmes d'arborescence.


Utiliser Grabber

L'utilitaire Grabber, utilisé pour regrouper les fichiers dans un unique datafile, se situe dans le sous-répertoire tools d'Allegro. Son utilisation est on ne peut plus simple. Voici la marche à suivre pour créer un datafile :

Lorsque grabber.exe se lance, celui-ci crée automatiquement un nouveau fichier. A partir de là, nous allons tout d'abord régler la compression du fichier dans le cadre en haut à droite (il est conseillé de mettre "Global compression") :

Image:allegro_a2-1.gif Le cadre de compression de Grabber

Puis, nous allons spécifier le nom du header qui sera généré par la suite, en modifiant la champ header avec le nom désiré (par exemple nomdujeu.h) :

Image:allegro_a2-2.gif Définition du header dans Grabber

Ensuite, pour ajouter des objets (ressources...), il suffit de faire Objets->New, de choisir le type d'objet (Bitmap pour une image, MIDI File pour un fichier midi, etc.), et de spécifier son nom :

Image:allegro_a2-3.gif Sélection du type d'objet

Image:allegro_a2-4.gif Spécification du nom

Il ne nous reste plus maintenant qu'à charger dans le datafile le fichier que nous voulons inclure. Pour cela, il faut faire un clic droit sur l'entité nouvellement créée, et faire "grab" comme montré ci-dessous. Le logiciel demande alors le chemin du fichier, qu'il nous faut remplir.

Image:allegro_a2-5.gif Icône "grab" du menu clic-droit

Image:allegro_a2-6.gif Spécification du chemin

Pour enregistrer faire File->Save. A ce moment là sont générés le header et le datafile.

Remarque
Sous Grabber, le clavier n'est pas configuré en AZERTY mais en QWERTY. Alors attention...


Exploiter le datafile

Le datafile étant maintenant créé, il ne reste plus qu'à l'utiliser dans nos jeux.

La premiére chose à faire est d'inclure le header généré par Grabber comme cela : #include "nomduheader.h".

Puis, il faut déclarer la variable qui va référencer le datafile par la suite, et l'initialiser, ainsi :

//Déclaration
DATAFILE *datafile;
//Initialisation
datafile = load_datafile("nom_du_datafile.dat");

Après cela, il nous reste deux solutions pour utiliser le datafile. La première consiste à charger ses élèments en mémoire, comme suit :

BITMAP *image;
image=(BITMAP *) datafile[sprite].dat;

Cela charge l'objet bitmap nommé sprite contenu dans le datafile référencé par la variable datafile, dans le bitmap image. Pour afficher 'sprite' à l'écran, il ne reste plus qu'à faire :

blit(image, screen, 0, 0, 0, 0, 640, 480);

La seconde solution consiste à utiliser directement le contenu du datafile sans le charger en mémoire. Ainsi, pour afficher l'objet 'sprite' à l'écran, nous fairons directement (datafile est la variable référençant le datafile utilisé) :

blit(datafile[sprite].dat, screen, 0, 0, 0, 0, 640, 480);
Outils personels