English version

TETRHEX, l'histoire

J'ai écrit mon premier tetris en 1988 sur un Apple II+, directement en langage machine 6502 (je n'avais pas d'assembleur). Il n'y avait quasiment aucun bug, si bien que je l'ai terminé en 3 jours. Deux ans plus tard, comme je n'avais plus mon Apple II, j'en ai écrit un autre sur mon Atari Mega ST4, d'abord en GFA-Basic, puis en assembleur 68000 quelques jours plus tard.

Quelques mois après avoir eu mon Falcon 030, en 1993, on me conseille vivement d'écrire un jeu qui exploite les nouvelles possibilités du Falcon (notamment les nouvelles résolutions graphiques). Je n'avais pas trop d'idées en ce moment, et je me suis dit que je n'allais quand même pas réécrire un tetris, surtout que celui du Mega ST marchait parfaitement (enfin presque, ce qui m'étonnait déjà beaucoup) sur le Falcon et dans n'importe quelle résolution. J'avais récupéré peu de temps auparavant un columns (jeu que je ne connaissais pas encore) du domaine public, alors j'ai eu l'idée de faire un jeu du type tetris, mais assez différent. Pourquoi pas un tetris hexagonal? ou un columns hexagonal?

Le 25 octobre 1993, je me lance dans un tetris hexagonal en assembleur 68030, en commençant par coder la présentation de façon à pouvoir réfléchir en même temps sur le jeu lui-même: définition des règles... (à ce moment, je ne connaissais pas encore hextris, et même après avoir lu dans un magazine un article sur les différentes sortes de tetris, où aucun tetris à pièces hexagonales n'était mentionné). Voulant pouvoir le faire évoluer assez facilement, notamment changer les règles pour obtenir un columns hexagonal, je décide que les règles seront stockées dans un fichier séparé. Mais je voulais d'abord me concentrer sur une règle particulière: celle d'un tetris hexagonal, appelé Tetrhex (les pièces sont formées de 4 hexagones), qui donne aussi son nom au programme: TETRHEX (en majuscules).

Les règles sont codées dans un langage spécifique à TETRHEX, appelé RUL, ce qui constitue la partie code. Il y a aussi une partie définition dans laquelle on définit un certain nombre de paramètres, comme la forme des pièces, les motifs apparaissant sur chaque hexagone... Le tableau, formé de cases hexagonales, sera hexagonal (contrairement à hextris), sa taille pouvant être variable (fixée au début du jeu). La partie code est composée de plusieurs phases: la phase d'initialisation (appelée au début de la partie), la phase de terminaison (appelée en fin de partie pour déterminer le score final), la phase où on détermine la prochaine pièce, la phase où on détermine les hexagones qui devront être détruits une fois la pièce arrivée en bas, et la phase que l'on peut considérer comme principale puisque c'est celle qui est appelée le plus souvent; cette phase agit comme un filtre: un signal est donné en entrée, et la règle détermine une action à effectuer (nombre renvoyé en sortie).

La possibilité de définir ses règles est un premier point fort de TETRHEX. Mais je voulais aller plus loin dans l'évolutivité: d'une part je voulais que TETRHEX puisse utiliser des programmes ou routines existants, par exemple envoyer des messages à un player de modules, pour faire jouer certaines musiques à des moments précis; d'autre part je voulais que le clavier ne soit pas le seul moyen de jouer, mais avoir la possibilité d'utiliser le joypad de la jaguar, faire jouer l'ordinateur, ou même de jouer par la voix (le Falcon ayant une entrée audio et un DSP). Toutes ces possibilités devaient pouvoir être réalisées sans avoir besoin de recompiler TETRHEX et par n'importe qui (ayant certaines connaissances en matière de programmation, notamment en assembleur). J'ai alors eu l'idée des fichiers de messages, qui contiennent des routines, communiquant avec TETRHEX suivant un certain protocole (qui sera fixé beaucoup plus tard).

Voulant une résolution minimale assez élevée (640 × 480 au moins), je me suis fixé sur 256 couleurs: 16 couleurs ne sont pas suffisantes, et en True Color (32768/65536 couleurs) le Falcon n'est pas capable de supporter une résolution assez élevée. D'autre part, l'absence d'un mode chunky (1 pixel = 1 octet), l'entrelacement des plans par mots de 16 bits et la pauvreté du système d'exploitation compliquent beaucoup les choses, et je ne peux pas rester assez général (pour avoir un affichage assez rapide). Pour pouvoir accepter d'autres modes graphiques (i.e. chunky pixels ou plans non entrelacés), il faudrait réécrire une bonne partie du programme.

Quelques semaines plus tard, on me conseille la compatibilité MultiTOS (le système d'exploitation multitâche préemptif d'Atari, qui est encore assez inachevé), i.e. de pouvoir le faire tourner dans une fenêtre GEM, non pas en plein écran. C'était le temps où on croyait encore que MultiTOS allait être le système d'exploitation de l'Atari (et aussi à la sortie possible du Falcon 040).

Je décide donc que TETRHEX pourra tourner dans deux modes différents: soit en plein écran (avec présentation au début), soit dans une fenêtre GEM (sans présentation), le second mode étant quasiment obligatoire sous MultiTOS. Le mode fenêtre GEM complique beaucoup de programme du fait de l'entrelacement des plans (la fenêtre peut être déplacée).

Aujourd'hui TETRHEX est (presque) terminé, les évolutions futures consisteront surtout en de nouvelles règles et de nouveaux fichiers de messages. Il tourne parfaitement sous MultiTOS, avec quelques limitations quand même, et prend très peu de mémoire. Malheureusement le Falcon 030 reste assez lent (surtout quand on est dans une résolution très élevée), le Falcon 040 n'est jamais sorti, et les cartes accélératrices tardent à venir (et sont assez chères).

TETRHEX devait être commercialisé, mais pour plusieurs raisons (notamment les mises à jour, le style de programme, et le retard pris), il est devenu shareware; la première version shareware date du 27 novembre 1994, la première version avec la nouvelle documentation date du 6 mars 1995, et la dernière version à ce jour date du 6 mai 1995 (10 mai pour la version enregistrée).

Maintenant, je commence à réfléchir à la version 2 (mais la version 1 sera toujours supportée et continuera d'évoluer grâce aux fichiers de règles et de messages), qui sera plus modulaire. Contrairement à la version 1, elle sera destinée à plusieurs systèmes (d'abord au Risc PC d'Acorn, mais je pense aussi à l'Archimedes et aux clones Atari), notamment avec la possibilité de jouer en réseau sur des systèmes différents, et réservera certainement de nombreuses autres surprises; certaines demanderont beaucoup de puissance. Malgré le peu d'enregistrements actuels à la version 1, la version 2 devrait aussi être shareware.

Mais rien n'est fixé, et pour l'instant je compte beaucoup sur les nouveaux enregistrements à la version 1.

Vincent Lefèvre,

le 10 juillet 1995 (un an après la première version de démonstration, présentée lors de l'Assemblée Générale de l'association FAUCONtact).



Powered By...?
Valid XHTML 1.0! Level Double-A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0.
Dernière modification:
webmaster@vinc17.org