L'historique du projet Doom

La génèse

Au départ (à la préhistoire pourrait-on dire ;-) ) étaient la HP48S(x) et sa cadette la HP48G(x), premières calculatrices graphiques programmables en assembleur. Donc premières machines sur lesquelles les apprentis programmeurs se sont exercés en réalisant des jeux. A cette époque les limites en puissance de ces machines étaient assez floues, et pour ceux que le problème interessait, une question revenait souvent : "Serait-il possible de faire un Doom ?". C'était en quelque sorte une mesure de puissance. Bien sûr, par "un Doom" on entendait une version simplifiée du jeu d'ID softwares : sans maping d'une part, et même éventuellement dans un monde 'plat' (sans escaliers ni plate-formes)... Personne n'ayant vraiment la reponse à cette question et le courage de tenter de le programmer sans être sûr d'y parvenir, la question resta assez longtemps sans réponse.

Et puis un jour, à la Journée Portes Ouvertes de Hewlett Packard de l'automne 1995 (j'étais alors en terminale et je commençais à peine la programmation sur HP), on vit un petit programme étrange sur HP48Gx : un champ de colonnes dans lequel on pouvait se balader... en 3D ! Alors bien sur, on pouvait traverser les colonnes et on ne pouvait pas encore tourner mais cela était très fluide et il y avait plein de colonnes ! Ca ressemblait assez à une version alpha d'un Doom en fait... Les auteurs de ce programme étaient Troc et PCBub... Mais cela interessat fortement un certain HPMâd... (alors qu'à cette époque, encore innocent et naïf, je regardais sans vraiment comprendre).

Un mois ou deux plus tard, dans le fanzine HpPisteur tenu par le HpMâd en question, on trouvait un article sur un certain HpDoom réalisé par un certain HpMâd (décidement on parle beaucoup de lui...). L'article disait que le jeu était presque fini !

Encore deux mois plus tard, à l'occasion d'une HpParty organisée par le fanzine, on eut l'occasion de découvrir enfin ce jeu... Autant dire qu'il était assez décevant : dans un monde tout plat et étrangement déformé (la 3D était vasouillarde, à mon avis à cause d'un algo de division foireux), sans monstres ni options (jeu à deux par cable), et sans mapping (mais bon ça on lui pardone de toute façon sur un écran de calculatrice ça ne rendrait pas terrible). En fait ça ressemblait plutôt à un mauvais Wolfenstein3D (l'ancetre de Doom)... Mais bon ça tournait assez vite quand même... A la question "Doom sur HP, possible ou pas ?" on pouvait enfin apporter un début de réponse : oui c'était probablement possible mais il faudrait encore bosser pour avoir quelque chose de réelement digne d'interêt...

Mais à la même HpPartie, et beaucoups plus discrets, on pouvait aussi voir Troc et PcBub ! Car leur programme aussi avait évolué... Fini les colonnes, ça ressemblait maintenant à un vrai terrain. Ormis le fait un peu génant qu'on ne pouvait pas tourner sur sois-même, l'affichage était nettement plus propre que sur la version d'HpMâd : pas de déformations, et un joli sol dallé pour faire beau... Et en plus leur moteur 3D offrait pas mal de possibilités. Il ne manquait plus grand chose !

A cette époque, mes seules réalisations sur HP étaient quelques programmes sans interêt, dont un Tunnel et la participation au concours de la HpParty (que j'aurais gagné si seulement je n'avais pas effacé mon programme juste avant pour avoir la place de stoquer Space Hulk en me disant que de toute manière j'était trop mauvais pour gagner (en fait, j'était seulement trop con))... Mais en voyant ces deux versions de Doom avec leurs avantages et leurs défauts, je me suis dit qu'il était surement possible de faire une version correcte de Doom, avec tout ce qui manquait aux deux autres (ce qui était très prétentieux !).

Vers la première démo

Je réfléchissais donc au problème (en l'attaquant du mauvais côté) quand deux mois plus tard parût un autre numéro du fanzine HpPisteur, dans lequel on trouvait l'explication de l'algorithme utilisé par HpMâd dans son HpDoom... En fait c'était une méthode assez simple qui s'appelle du Ray-casting (lancé de rayon en français). Quand j'ai lu ça je me suis dit "Mais bien sûr, la vérité est par là !" (en fait j'ai pas dit exactement ça parce qu'à cette époque je ne regardait pas encore les X-Files, mais on s'en fout). J'y ai donc réfléchit et j'ai relu l'article. Ce coup ci je me suis plutôt dit : "Il est pourit son algo !". Alors j'ai réfléchi, j'ai fait mon propre algorithme, et profitant des cours de philo et des weekends à la campagne (merci les parents !), j'ai commencé à le coder.

On arrive à la HpPartie suivante : 3 mois plus tard si je me souviens bien (en avril 1996). J'annonce tout fierement que j'ai fait un moteur 3D pour faire un Doom ! Et je rajoute après que ce n'est encore qu'une version alpha non optimisée ;) Mais ça plait ! Même fluidité que la version d'HpMâd, mais sans les déformations de murs... Et puis on peut tourner, mais on ne peut pas encore se deplacer :-( ! Quant à HpMâd, il ne semblait pas vouloir améliorer son programme, donc il ne restait plus que Troc et PcBub, qui avaient encore travaillé le leur : maintenant on pouvait voir un monstre (mais toujours pas tourner).

Je bosse toujours et arrive la HpParty suivante (Juin 96 je crois). Côté Troc et PcBub, c'est décevant, aucune nouvelle, leur Doom n'a pas évolué ! Il n'évoluera d'ailleurs plus, les auteurs ayant d'autres projets et occupations... Quant à moi on peut enfin se déplacer, c'est nickel chrome, mais je commence à me rendre compte des limites de mon algo : d'une part l'affichage des murs donne un effet trompeur quand on se déplace (on a l'impression de ne pas bouger dans les couloirs !), d'autre part certaines choses ne sont pas possibles dans la création des niveaux et c'est très génant (c'est grâce à JeremieK que je m'en suis rendu compte).

Alors, après avoir passé le jeu en plein écran (avant il était comme les autres sur la moitié d'un écran), et restant le seul interessé par la programmation d'un Doom, je décide de reprendre le problème au début : nouvel algo, nouveau code, nouvelle version... (l'ancienne ne sera jamais diffusée). Au passage on passe en niveaux de gris, le prog est plus gros, plus rapide et offre plus de possibilités. Je l'ai programmé pendant les vacances et à la Journée Portes Ouvertes HP de la rentrée, ça plait pas mal ! Il ne manque plus que l'affichage des monstres et options, leur gestion, et le tour est joué !

Seulement voila, alors que j'étudie l'optimisation de mon algo pour afficher les monstres, suite à une fausse manip en amphi et sur la HP d'une part et chez moi sur mon ordinateur d'autre part, je perds toutes les sources du jeu !!!! Catastrophe !!! Qu'à cela ne tienne, il me reste encore quelques notes sur papier, et surtout je connais le programme presque par coeur à force de le programmer, alors je le recommence depuis zéro (pour la seconde fois) !!! J'en profite pour l'optimiser un peu, et ajouter l'affichage des monstres, le tout en seulement 2 mois, juste à temps pour la HpPartie de janvier 1998. Ca fait un malheur, même si le jeu souffre de quelques ralentissements à cause de l'affichage des monstres qui n'est pas optimisé...

La naissance du projet actuel

Mais voilà, je commence à avoir du boulot à la fac, et un peu marre de coder Doom (ça fait plus d'un an et demi que je suis dessus maintenant). Alors je sort juste une version démo officielle dans laquelle j'ai rajouté l'animation des armes, et je n'y touche presque plus... Même si de temps en temps j'y reflechis un peu ce qui me permet de trouver la solution au problème des ralentissements (sans la coder), de faire des tests de réseau par cable (qui ne se sont malheureusement pas révélés efficaces), et de me rendre compte que si je voulais pouvoir gérer suffisement d'enemis en leur donnant un comportement pas trop débile, il fallait que j'optimise mon programme. Comme il était optimisé au maximum (en plus je n'y avait pas touché pendant presqu'un an, donc je n'arrivais plus a me relire et j'ai du passer beaucoup de temps à mettre des commentaires), j'ai encore une fois cherché une solution algorithmique, quitte à tout refaire une 4ème fois : il fallait trouver plus rapide que le ray casting !!!

Pendant ce temps là, il y eu encore deux autres projets de dooms, dont un par les auteurs de Shell qui avait la particularité d'être vu de côté, ce qui permettait certaines optimisations, et puis aussi un projet d'El Sicario je crois... Mais visiblement ces deux projets ont eu le même problème : le manque de temps de leurs auteurs respectifs (problème que je connais bien malheureusement !).

C'est au début de 1999 que je trouve un algorithme alternatif au ray-casting... Aux premières estimations, il devrait être seulement un peu plus rapide, mais beaucoup plus simple, plus souple, plus précis, plus sûr, et offrant plus de possibilités, entre autre en ce qui concerne la création de niveaux (avec la version précédente de Doom il était presque impossible de faire un éditeur de niveaux). Mais avant de coder, je veux être sûr que ce soit interessant, alors je cherche à améliorer encore l'algorithme, je le peaufine...

Mais y'a pas que la HP dans la vie, et côté Texas Instrument, on discute aussi beaucoup de Doom, et il y en a un de prevu sur TI89 en assembleur... Qu'est-ce que ça donnera ? (oui, au fait, qu'est-ce que ça a donné ?)

Heureusement HP sort un nouveau modèle à la rentrée 99 : la HP49 ! ccompagnée d'une opération de promotion dans les FNACs parisiennes... J'use de mes relations bien placées pour obtenir le job, et HP me fait la surprise de m'offrir une 49 (en fait c'était une erreur et ils ne devaient pas me l'offrir, mais c'est pas grave, je l'ai gagnée à la HpNight suivante). En attendant la rentrée je découvre donc la bête, ce qui me donne l'envie - entre deux désassemblages de ROM - de me remettre à Doom. Et il faut croire que les vacances m'ont été bénéfiques puisque je suis traversé subitement par un éclair de lucidité et que je trouve enfin l'optimisation de l'algo que je cherchais depuis plusieurs mois !!! Alors c'est partit, juste quelques réflexions suplémentaires avant de m'appercevoir qu'il est désormais peut être possible d'avoir un vrai Doom, c'est à dire de ne plus se contenter d'un monde plat. A nous les escaliers et autres ascensseurs !!!

Mais (eh oui cette histoire est pleine de rebondissements, et encore j'ai du en oublier ;-) ) malheureusement un autre éclair de lucidité me traverse : la rentré c'est le lendemain, je rentre en maîtrise et l'experience de la licence me laisse supposer que cette année va être très chargée (ce qui fut effectivement le cas). En d'autre terme je vais avoir très peu de temps à consacrer à Doom ! Mais je ne m'avoue pas vaincu, et je décide d'une part de ne pas perdre de temps tant que j'en ai encore, et surtout, de me faire aider. D'où le texte que vous lisez.... Je décide donc de diffuser les sources, ce que je fait effectivement après avoir traduit le programme pour la 49 lors d'une fameuse HpNight à l'EPITA lors de laquelle de nombreux programmes ont été convertis.

Mais bon le boulot reprends vite et je n'ai pas le temps de faire ce que j'aurai voulu faire. De ce point de vue là la maîtrise a été l'année d'étude la plus remplie que je n'ai jamais eue (note : j'ai changé d'avis depuis mon DEA ;-) ) ! Peu à peu je perds mes illusions et je crois de moins en moins que Doom sera fini un jour, même si je l'éspère !

Et le temps passe et j'arrive en DEA, et hop au passage je fait installer l'ADSL chez moi, je surf donc sur le net et en tombant sur des sites HP je m'y remet au fur et à mesure, surtout que j'ai à nouveau un peu de temps. Aussi quand Madchrist m'apprends qu'il se lance dans un Doom, j'ai du mal à m'empêcher de m'y remettre, motivé par la concurence ;-) Mais faut pas déconner quand même je n'ai pas autant de temps libre que je voudrais, et surtout celui-ci est entièrement pris par un nouveau projet 1000 fois plus interessant, qui n'a rien à voir avec la HP et dont je ne vous parlerai pas plus ;) Et voilà une fois de plus je m'éloigne de Doom pour y revenir un peu plus tard (serrait-ce mon destin ? ;-) ). Et ce coups-ci je décide de lancer réellement le projet Doom programmé en équipe, avec moi dans le rôle du chef de projet. Je demande donc à Talaron si je peu béneficier de la rubrique "Projets" d'HP-sources, et il accepte !

Et au final, vous êtes là, en train de lire mes élucubrations mégalo et égocentriques ;-)

Conclusion

Je vous propose donc maintenant de découvrir les algos que j'ai trouvé, et surtout de m'aider dans ma tâche, par vos remarques et vos bouts de codes, pour qu'enfin on puisse jouer à Doom sur caculatrice, et que ce soit sur HP !!! (parce qu'il ne faudrait pas que les codeurs TI lisent l'algo et l'utilisent pour leur machine avant nous ;-) !).

Si vous avez des remarques à faire sur ce texte, si vous estimez qu'il y a des choses fausses, n'hésitez pas à me contacter : hpfool@bigfoot.com

email