High Energy

Mon premier programme de jeu sous Windows !!! Après quelques essais infructueux pour faire des animations uniquement en Visual Basic, je m'achète un bon livre décrivant une librairie de classes C++ permettant d'animer des "sprites" sous Windows. Cela me permet de comprendre un petit peu les principes de l'animation et de pratiquer mon C++. J'écris une belle DLL que j'appelle de mon programme principal en Visual Basic.

Déjà, je surmonte la plupart des erreurs du débutant en ce qui concerne l'animation. Au départ, pour déplacer un sprite, j'envisage de l'effacer et de le redessiner plus loin. Tragique erreur, il faut le faire en une fois. J'envisage de sauvegarder la partie du fond recouverte actuellement pour la restaurer après. Tragique erreur, il faut conserver toute l'image du fond de toute façon pour pouvoir la redessiner après. Pour faire une sprite non rectangulaire, je comprend vite qu'il faut définir une transparence mais je mets très longtemps à comprendre qu'il faut deux opérations logiques et pas seulement un bon vieux XOR. Puis enfin, fort de mes nouvelles connaissances sur l'animation, j'écris mon propre code, j'apprends à connaître les belles fonctions que sont BitBlt et SelectObject. Je mets longtemps à comprendre comment cela fonctionne étant donné le manque de documentation précise et je tâtonne beaucoup dans les premiers temps. En fait, tout est beaucoup plus compliqué qu'il n'y parait à première vue !!!

Sinon, je comprends assez vite l'inadéquation totale des timers Windows pour faire des jeux. Il faudra donc utiliser la fonction magique TimeGetTime qui permet une mesure à la milliseconde près du temps qui passe.

Pour les sons, j'ai déjà des WAV et de la musique MIDI. Pour les WAVs, j'utilise le contrôle de base MCI.VBX. Un seul fichier WAV est utilisé et chargé en mémoire dès le départ. Je le joue par morceaux. La rapidité est assez correcte sauf pour le déplacement, sur un PC lent (486 DX 33), le mouvement est saccadé, le déplacement s'arrête imperceptiblement lorsqu'il boucle. Avec certaines rares cartes son pourries, c'est dramatiquement lent. Néanmoins, le résultat est tout à fait acceptable.

Pour la musique MIDI, de grosses lourdeurs sont sous-jacentes. En effet, de temps en temps, le programme plantait dans MCI.DRV. Après de TRÈS TRES longues recherches, mes déductions ont été les suivantes : lors du chargement en mémoire de gros Bitmaps (l'image de fond par exemple), le driver MIDI de Windows 3.1 se plante parfois. Je mets environ 2 semaines à isoler le problème, je suis encore jeune... J'envoie un "bug report" à Microsoft avec un programme en 7 lignes plantant environ au bout d'une demi-heure mais ils me répondent qu'ils n'arrivent pas à reproduire le problème. Sacré Bill !!! Finalement, il faut trouver une solution et elle est assez radicale : j'arrête la musique lorsque je charge les grands Bitmaps. Sinon, une fonction d'interruption de musique est prévue, elle est bien utile car elle prend bien vite la tête !

Sinon, le jeu est une sorte de PacMan. La principale originalité est que les pastilles à manger peuvent être mangées par les monstres, ce qui les fait réapparaître un peu plus tard autre part. Sinon, on peut ramasser un diamant qui permet d'être invulnérable pendant quelques temps lorsqu'on appuie sur la touche Espace. Lorsqu'on a ramassé toutes les pastilles, une clé apparaît qui permet d'accéder à la pièce finale du tableau. Entre chaque tableaux, il y a une scène de transition pendant laquelle une fusée se construit. A la fin, lorsque l'on a gagné la fusée s'envole, un très gros bitmap qui met un peu à genoux les 386 et les 486 mais bon, ca marche quand même !

Les graphismes des labyrinthes sont pas mal, les sprites sont assez primaires. Trois niveaux se succèdent. Le premier est vraiment simple. Le deuxième est un peu plus corsé. Le troisième est vraiment difficile. De plus, on ramasse les morceaux d'un puzzle qui se dessine au fur et à mesure.

Voilà, ce fut ma première "œuvre". En trois mois, ce fut terminé. En partant de rien, ce n'était pas si mal. Pour le tester, j'y ai joué de nombreuses heures. De temps en temps, des petits problèmes d'affichage se manifestent. Des pastilles restent parfois mal effacées. Si on est en 256 couleurs, Conny (le personnage principal) a le teint gris et les monstres ont de drôles de couleurs. A cette époque, je ne maîtrisais pas encore toutes les subtilités des palettes de Windows et il y en a beaucoup ! Sinon, de temps en temps, à cause de ces problèmes de palette, Conny laisse une "trace" derrière lui. Tout çà n'est pas bien grave et n'empêche pas le jeu de fonctionner. Au niveau performance, c'est assez correct en sachant que la plus grande partie du code est Visual Basic. Le jeu est jouable sur un 386SX 16 Mhz avec 5 Mo de mémoire en 16 couleurs. Comme quoi Windows et Visual Basic ne sont pas si lents que çà.

Vous pouvez télécharger le jeu en cliquant sur le lien High energy.


Eric Värnild
eric@varnild.com

Mis à jour le samedi 23 août 2003 22:00:30