Portal 2 transformé en serveur web - La prouesse technique folle de PortalRunner | Jeux | Le site de Korben
Image illustrant l'article : Portal 2 transformé en serveur web - La prouesse technique folle de PortalRunner

Portal 2 transformé en serveur web - La prouesse technique folle de PortalRunner

par Korben ✨ -

Vous savez ce qui manquait vraiment à Portal 2 ? Un serveur web pardi !

Non, sérieux, quelqu’un a transformé ce chef-d’oeuvre de Valve en serveur HTTP qui marche du feu de dieu ! On doit ça à PortalRunner, un développeur visionnaire qui a décidé que les cubes compagnons méritaient une seconde carrière dans l’hébergement web ! o2swich n’a qu’à bien se tenir ^^.

Le projet de PortalRunner n’est pas juste un délire de développeur en manque de caféine un dimanche pluvieux. Non, non, c’est surtout une véritable prouesse technique qui exploite les entrailles les plus secrètes du moteur Source Engine de Valve. Pour comprendre l’ampleur de l’exploit, il faut savoir que ce moteur fonctionne normalement avec des sockets UDP pour le multijoueur, c’est à dire un protocole rapide et efficace, mais pas vraiment conçu pour servir des pages web. PortalRunner a dû, pour cela, bidouiller sérieusement le système pour implémenter des connexions TCP compatibles avec le protocole HTTP standard.

La clé de cette transformation c’est une fonctionnalité méconnue du Source Engine, initialement développée pour la gestion des serveurs dans les jeux Left 4 Dead. Cette feature cachée dans les méandres du code permettait déjà d’établir des connexions TCP pour l’administration serveur. PortalRunner l’a donc détournée avec brio pour créer un authentique serveur web capable de répondre aux requêtes des navigateurs avec du HTML généré directement par le moteur de jeu. Franchement, qui avait prévu qu’on pourrait faire ça un jour ?


Et ce n’est pas juste un serveur statique qui crache du HTML basique comme dans les années 90. Non, PortalRunner a poussé le concept jusqu’à créer une interface dynamique où les objets du jeu modifient en temps réel le contenu des pages web servies aux visiteurs. Vous déplacez un cube compagnon dans Portal 2, et hop, la page web change instantanément côté navigateur. C’est du jamais vu dans toute l’histoire du détournement de jeux vidéo, et c’est fascinant !

La démonstration la plus spectaculaire de ce système c’est que PortalRunner empile littéralement des cubes compagnons pour “écrire” du HTML de manière entièrement visuelle. C’est l’équivalent Portal de la logique redstone dans Minecraft, mais appliqué au développement web moderne.

L’aspect le plus impressionnant de tout ça, c’est la simplicité relative de l’implémentation une fois qu’on comprend l’architecture sous-jacente. Le moteur Source Engine était déjà parfaitement capable de gérer des connexions réseau complexes et sophistiquées. Il suffisait de lui apprendre à parler HTTP au lieu de son protocole de jeu habituel. Ainsi, quand un navigateur envoie une requête GET classique, le jeu répond avec les bonnes headers HTTP et du contenu HTML valide. Et hop, vous avez un serveur web qui tourne dans Portal 2. Les experts de Hackaday ont d’ailleurs souligné que transformer Portal 2 en serveur web s’avère “bien plus facile qu’on pourrait le penser”.

Quand on voit ça, on comprend encore plus pourquoi Portal 2 reste si populaire chez les hackers, les moddeurs et les développeurs créatifs du monde entier car le jeu offre un environnement parfait pour expérimenter à savoir un moteur robuste et documenté, une physique précise et prévisible, et suffisamment de flexibilité pour supporter des détournements complètement fous comme celui-ci.

Et si on peut faire tourner un serveur web dans Portal 2, quelles autres applications seraient techniquement possibles ? Un serveur de base de données dans Half-Life ? Un proxy dans Counter-Strike ? Un serveur de streaming dans Team Fortress ? Tellement de possibilités !!!!

Alors Portal 2 en serveur web, c’est totalement inutile évidemment… mais j’ai trouvé ça génial et très inspirant également !

Un grand merci à Johnny pour le partage !

Source