Quake III Arena n'est pas un simple prototype. C'est un jeu de tir en arène complet, doté d'un système de fichiers ZIP, d'un format de carte binaire, d'un langage de shaders autre que GLSL, d'un système de collisions différent du maillage dessiné et d'un code de déplacement qui, vingt-cinq ans plus tard, reste très particulier. Porter une partie de ce système en PHP ressemblait à un défi. C'en était un, en partie. C'était aussi une manière délibérée d'apprendre à maîtriser un moteur en réimplémentant ses mécanismes internes, et non en survolant un wiki.
Cet article décrit une expérience : un portage PHP progressif capable de lancer une fenêtre native, de charger des données PK3 (version commerciale ou démo), d'analyser une carte IBSP, de générer des lots de rendu, de gérer les déplacements du joueur à la Quake en tenant compte des collisions BSP, de tirer avec un arsenal réduit, d'ouvrir des portes et de rendre la carte maps/q3dm0.bsp suffisamment cohérente pour s'y déplacer, combattre et mourir. Il ne s'agit pas d'affirmer que Quake III a été entièrement réécrit en PHP. Il n'y a ni QVM, ni multijoueur, ni IA de bots, ni système de menus, et les textures du monde sont encore incomplètes. Ce qui existe, c'est une version jouable, avec la logique du moteur implémentée en PHP et l'interface graphique gérée par FFI.








