# Portages de Doom

Les portages de Doom (« Doom source ports » en anglais) sont le fruit d'un portage informatique (porting ou source port en anglais) du Doom Engine, le moteur 3D utilisé par le jeu vidéo Doom.
Ce terme s'applique souvent aux modifications faites par les fans de Doom, plutôt qu'aux versions officielles produites par id Software ou les compagnies affiliées.
Le code source du Doom Engine est rendu public en 1997. Bien que Doom soit originellement créé pour MS-DOS, cette source rendue publique était celle de la version ultérieure pour Linux. La raison était la présence, dans la version DOS, d'une bibliothèque propriétaire pour les sons.
Le but originel des portages était de permettre une adaptation à plusieurs plates-formes, mais peu après la publication de la source de Doom, les programmeurs se mirent à corriger des bugs existants et à rajouter des fonctions dans leurs portages, notamment du code pour améliorer le jeu et altérer le gameplay.
Le code source fut originellement publié sous une licence propriétaire, interdisant l'usage commercial et n'exigeant pas que les développeurs fournissent le code source de leurs modifications. En 1999 une licence publique générale GNU (GNU GPL) fut adoptée, à la suite des demandes de la communauté.

## Utilisation

Doom, ou un jeu compatible, nécessite pour être joué :
* du moteur (Doom Engine ou un portage)
* des données de jeu, sous format Where's All the Data (WAD), incluant les éléments graphiques, les cartes, etc.
Il est donc nécessaire pour faire fonctionner un portage de Doom de disposer d'un fichier WAD contenant les données de base du jeu. Celui-ci peut être récupéré en acquérant une version officielle d'un jeu compatible, ou alors être remplacé par des alternatives gratuites, comme la version shareware de Doom, ou libres, comme Freedoom.
Les WAD de base sont surnommés IWAD (« internal WAD »), les autres WAD (à combiner avec un IWAD) étant surnommés PWAD (« patch WAD »). Certains portages ne fonctionnent qu'avec les IWAD de Doom, Doom II ou Freedoom ; c'est par exemple le cas de Boom. ZDoom et ses dérivés sont compatibles avec pratiquement tous les IWAD, et certains IWAD sont développés spécifiquement pour ZDoom, comme Action Doom II - Urban Brawl et Harmony. Les autres portages n'assurent qu'une compatibilité limitée avec les IWAD autres que Doom (Heretic, Hexen, Chex Quest, Strife, HACX, etc.). Par exemple, EDGE n'accepte que les IWAD de Doom et de HACX, tandis que Chocolate Doom ne fonctionne qu'avec les IWAD de Doom, Chex Quest et HACX.

## Portages pour ordinateurs personnels, compatibles IBM PC

Dans ce qui suit, le terme « vanilla DOOM » désigne simplement le jeu original. On entend par le terme « vanilla » le jeu sans aucune retouche ni modification. Ce terme est apparu à la suite de la création des premiers portages du jeu, dans le but d'éviter d'éventuelles confusions.
À partir du code source du vanilla DOOM, de nombreux ports sont apparus, qui ont eux-même donné naissance à de nombreux dérivés, et ainsi de suite. Parmi eux, le portage BOOM a eu une influence considérable, et de nombreux ports sont conçus pour offrir le même niveau de fonctionnalités que ce dernier. Les ports qui offrent les mêmes fonctionnalités que le portage BOOM sont dit BOOM-compatibles. Une partie seulement est dérivée du port BOOM, d'autres sont des dérivés d'autres portages mais ont ajouté une compatibilité avec BOOM soit dès leur création, soit au cours de leur existence.
Le schéma suivant illustre une partie des portages de DOOM, disponibles à sa date de création (2018). Les portages plus récents ne sont pas représentés. Parmi les portages plus récents non présents sur ce schéma, on peut citer les ports DSDA DOOM et VKDOOM, assez populaires dans la communauté DOOM.

### DOSDoom et dérivés

DOSDoom est le tout premier portage pour DOS, construit à partir de la source Linux comme expliqué plus haut. Il est la base du développement de Boom, mais également d'autres portages encore actualisés à ce jour comme EDGE et 3DGE (voir plus bas) et Doom Legacy (sous Windows et Linux).

### Boom et dérivés

Boom est créé par la TeamTNT, par ailleurs développeurs de l'extension officielle Final Doom. Boom élimine des limitations du Doom Engine, et rajoute de nombreuses possibilités comme les tapis roulants, les téléporteurs silencieux, etc. Ce moteur est devenu une référence, au point que la plupart des extensions pour le jeu, ou les autres portages, se définissent comme étant « Boom-compatible » ou non. Par exemple, la version libre alternative de Doom, Freedoom, ne peut normalement fonctionner qu'avec un portage Boom-compatible.
MBF (Marine's Best Friend) est un successeur direct de Boom, qui introduit notamment la possibilité de monstres amicaux (des chiens).
* Ses successeurs sont SMMU (Smack My Marine Up) et Eternity Engine, ce dernier étant encore actualisé régulièrement.
* Woof!, originellement paru en 2019, modernise et améliore WinMBF, la version de MBF pour systèmes Windows parue en 2004.
PrBoom est un autre dérivé de Boom, cherchant un maximum de compatibilité avec le Doom Engine tout en apportant quelques améliorations à Boom, comme l'OpenGL. Il intègre également plusieurs modifications issues de MBF, comme les chiens amis. Son successeur PrBoom+ apporte quelques améliorations supplémentaires : possibilité de regarder vers le haut et le bas, etc.
La version officielle de Doom pour iPhone, Doom Classic, est partiellement basée sur PrBoom.
DSDA DOOM est basé sur un fork de PrBoom+ et très utilisé dans la communauté speedrun, en raison de sa fidélité au jeu original (d'autres ports modifient certains paramètres de gameplay du jeu) ainsi que de la présence denombreuses fonctionnalités utiles aux speedrunners. Il est dit démo-compatible, à savoir qu'il permet de rejouer à l'identique des sessions de jeu enregistrés dans des fichiers dit démo, qui enregistrent les inputs réalisés par le joueur et toute autre information nécessaire pour rejouer la session de jeu. L'usage de demo est très répandu dans la communauté des speedrunners, car elle facilite la vérification des runs et la détection d'une éventuelle triche.

### Chocolate Doom et dérivés

Chocolate Doom est un portage qui cherche à reproduire le plus fidèlement possible le comportement du Doom Engine originel, jusque dans ses limites et même ses bugs, d'avoir un code source optimisé et propre, et d'assurer un fonctionnement sur le maximum de plates-formes. Conformément à son cahier des charges, il n'est absolument pas Boom-compatible. Il apporte cependant des améliorations mineures au logiciel d'origine, surtout d'ordre ergonomique : usage de tous types de clavier (autres que QWERTY), support direct des extensions de type DeHackEd, etc.
Chocorenderlimits est un fork offrant des outils d'analyse de WAD, afin de déceler d'éventuels problèmes de compatibilité.
Crispy Doom et Doom Retro sont des forks créés en 2014, l'année des 20 ans de Doom, proposant chacun leurs améliorations au moteur. Les deux logiciels proposent une résolution plus élevée, de nouveaux effets visuels et des améliorations des limites du moteur. Il existe cependant plusieurs différences dans leurs philosophies de développement :
* Crispy Doom propose plusieurs changements optionnels de gameplay (visée laser, saut, mouvement vertical…), mais en n'activant pas ces options, la compatibilité technique est totale avec Chocolate Doom et le jeu originel.
* Doom Retro cherche une fidélité au gameplay d'origine tout en proposant plus de modifications graphiques (sang sur les murs, etc.) et une compatibilité avec plus de matériel (manette de jeu, Xbox 360, etc.) ; en revanche il ne recherche pas spécifiquement de stricte compatibilité technique (paramétrages, sauvegardes, démonstration, multijoueurs, etc.) avec Chocolate Doom ou le jeu originel, et vise à être pleinement Boom-compatible.
Marshmallow Doom est un fork de Crispy Doom rajoutant des bots et autres options multijoueurs, la possibilité de rajouter des ennemis à la volée, et autres altérations du gameplay.
Strife: Veteran Edition est la réédition en 2014 du jeu Strife, utilisant pour moteur un dérivé de Chocolate Strife, lui-même variante de Chocolate Doom.

### Vavoom

Vavoom est un portage apportant de très nombreuses améliorations, notamment graphiques. Il tire une partie de son code du jeu Quake. K8Vavoom est un fork de Vavoom reprenant le flambeau de ce dernier.

### EDGE

EDGE$^,$ (Enhanced Doom Gaming Engine) est un projet collaboratif Open Source basé sur le code source de Doom . EDGE est dérivé d'un projet précédent appelé DOSDoom et a commencé son développement au début de 1999 avant la publication de DOSDoom 0.65. EDGE est parfois appelé 3DGE ou hyper3DGE en raison du développement de longue date de la fourche 3DGE, initialement publiée le 11 avril 2011. La première version officielle d'EDGE a été publiée le 20 juin 2000. Depuis l'équipe publie des versions de développement régulièrement. EDGE a été compilé pour de nombreux systèmes d'exploitation dont Windows, Linux, BeOS, Raspberry PI, Sega Dreamcast OS et Mac OS X. La caractéristique la plus attrayante d’EDGE est son système DDF, issu de DOSDoom. DDF décrit tout le comportement du jeu dans les fichiers texte externes au fichier exécutable. En conséquence, il est populaire parmi les modeurs qui utilisent l’extensibilité pour ajouter de nombreuses nouvelles armes et fonctionnalités avec beaucoup moins de limites que dans les autres portages de Doom. Un nouveau fork de Edge voit le jour en 2021, nommé Edge-Classic il s'agit d'un port de Doom qui fournit des fonctionnalités avancées, une facilité de modding ainsi que des visuels attrayants tout en gardant des exigences matérielles très modestes. Il s'agit d'un renouveau de la base de code de Edge 1.35 pour les systèmes modernes.

### ZDoom et dérivés

ZDoom apporta de très nombreuses améliorations de gameplay et assurant une compatibilité avec d'autres portages plus anciens, notamment Boom et Doom Legacy. Il eut plusieurs dérivés dont GZDoom avec des améliorations graphiques OpenGL, QZDoom optimisant le rendu graphique en mode logiciel, et plusieurs portages dédiés au jeu en ligne comme Odamex, ZDaemon ou Zandronum (héritier de Skulltag).
ZDoom fut utilisé comme moteur pour plusieurs jeux indépendants de Doom, et inclus dans les fichiers de ces jeux : Chex Quest 3, Action Doom 2: Urban Brawl, Harmony et The Adventures of Square.
Le 7 janvier 2017, son développeur Randi Heit annonce la fin de ZDoom après 20 ans de développement (depuis la sortie du source de Doom en 1997); GZDoom devient la branche principale du projet et QZDoom devient sa branche expérimentale (depuis le 29 avril 2017). Enfin, LZDoom est basé sur une ancienne version de GZDoom, il ne fournit pas toutes les fonctionnalités actuellement prises en charge par GZDoom mais il peut fonctionner sur du matériel plus ancien.
VKDOOM est un fork de GZDOOM qui apporte de meilleures performances, un système d'éclairage par lightmaps ray-tracées, et quelques fonctionnalités supplémentaires. Il a été utilisé dans quelques productions commerciales, notamment le jeu indé Hands Of Necromancy 2.

### Doomsday Engine et dérivés

Autrefois appelé JDoom/JHexen/JHeretic (« J » pour Jaakko, prénom de l'auteur), le Doomsday Engine est un portage supprimant de nombreuses limitations du Doom Engine, et permettant de considérables améliorations graphiques, comme l'intégration de modèles en 3D et l'OpenGL. Il s'agit du portage le plus abouti techniquement, mais également celui s'éloignant le plus de Vanilla Doom, bien qu'il soit possible de jouer pratiquement sans aucun effet graphique supplémentaire.
En revanche, il n'est pas encore Boom-compatible ; c'est la raison pour laquelle fut créé le portage Risen3D (au départ surnommé Boomsday Engine), qui vise à réconcilier le Doomsday Engine avec les fonctionnalités de Boom. Toutefois le code étant en constante progression, les prochaines versions du moteur seront de plus en plus compatibles avec les spécifications de Boom$^,$.

## Les portages PC tournant sur des machines virtuelles

* Terminal Doom tourne à l'intérieur de Doom 3, pour jouer à Doom sur les ordinateurs manipulés par le protagoniste du jeu Doom 3.
* Le Doom Triple Pack est une version de Doom tournant sous Adobe Flash.
* Parmi les différents projets de faire tourner Doom en Java, le projet MochaDoom est encore actif.

## Les portages pour les systèmes autres que le PC

En plus des portages pour ordinateur de type PC, de nombreux portages visent à faire tourner DOOM sur des systèmes d’exploitation ou du matériel différents.
Doom et ses portages ont été adaptés à de nombreux autres systèmes, comme MacOS, RISC OS ou BeOS, mais également sur des systèmes des années 1980 comme Commodore VIC-20 ou ZX Spectrum.
À côté de l'adaptation officielle Doom Classic sur iPhone, d'autres adaptations non officielles ont été réalisées sur différents types de téléphones, sur des consoles comme la Nintendo DS, et même sur le système Digita OS pour appareils photos.

## Les niveaux de compatibilité

Les portages de DOOM ne sont pas tous exactement fidèles au jeu d'origine. Ils ajoutent de nombreuses fonctionnalités, retirent des limites techniques du moteur originel, améliorent le rendu graphique, etc. Cependant, il arrive que cela se traduise par des modifications du gameplay original du jeu. Les ports modernes gèrent divers niveaux de compatibilité qui activent ou désactivent certaines fonctionnalités, afin de soit retrouver le gameplay originel, soit de profiter de certaines fonctionnalités qui n’altèrent pas trop le gameplay et de désactiver les autres, soit de profiter de toutes les améliorations possibles.
Un exemple de fonctionnalité problématique est le fait que les ennemis ont une hauteur infinie dans le jeu DOOM originel. Par hauteur infinie, on veut dire que DOOM étant un jeu dont le monde est en 2D, il n'est pas possible de passer au-dessus d'un ennemi (en sautant ou avec un rocket-jump), les projectiles ne peuvent pas passer au-dessus d'un ennemi et/ou du joueur, un ennemi volant comme un cacodémon ne peut pas passer au-dessus du joueur, etc. Les ports sources modernes incorporent une fonctionnalité pour gérer la hauteur des ennemis, alors que ce n'est pas possible dans le jeu de base. Et cela pose des problèmes pratiques quant à la validité des speedruns, sans compter que cela altère la difficulté et le gameplay à la fois du jeu de base, mais aussi de certaines productions communautaires (les WADs). Aussi, suivant le niveau de compatibilité choisit, la fonctionnalité est activée ou désactivée.
Les niveaux de compatibilité correspondent chacun à un ensemble de fonctionnalité typiquement implémenté par un port de référence. Les niveaux de compatibilité 0 à 4 correspondent à un gameplay le plus proche possible du jeu de base. Le niveau 5 correspond au port DOS DOOM, le niveau 6 correspond à TASDOOM, les niveaux 7 à 9 correspondent aux standards du port Boom, 10 correspond aux fonctionnalités par défaut de LxDoom, 11 au port MBF, les niveaux 12 à 17 correspondent aux niveaux de fonctionnalités des versions antérieures de PrBoom. Le niveau de compatibilité 21 a été ajouté avec l'introduction du standard MBF21. Un niveau de compatibilité égal à -1 active toutes les fonctionnalités par défaut du portage considéré.
Les productions communautaires sont conçues pour un certain niveau de compatibilité. Par exemple, de nombreux WADs sont conçus avec un niveau de compatibilité 0-4, à savoir qu'ils peuvent fonctionner aussi bien sur le jeu de base que sur les portages. D'autres demandent un niveau de compatibilité plus élevé.