DOOM porté sur des écouteurs sans fil
(doombuds.com)- Projet portant le jeu classique de 1993 DOOM sur les écouteurs sans fil PineBuds Pro, avec possibilité d’y jouer à distance via le web
- Composé de quatre éléments : un serveur série (serial server) reliant les écouteurs et le serveur web, un serveur web, une page web statique et le port de DOOM
- Grâce à une connexion UART, le projet obtient une bande passante d’environ 2,4 Mbps et transmet la vidéo via un flux MJPEG, pour une performance théorique allant jusqu’à 27 FPS
- Le CPU a été overclocké de 100 MHz à 300 MHz et, malgré les limites de l’encodage JPEG, les performances réelles atteignent environ 18 FPS
- Les contraintes de RAM et de FLASH ont été surmontées grâce à des optimisations et au fichier Squashware WAD allégé, montrant le potentiel des expérimentations matérielles basées sur un firmware open source
Aperçu du projet
- DOOM, sorti en 1993, a été porté pour fonctionner sur les écouteurs PineBuds Pro
- Les PineBuds Pro sont présentés comme les seuls écouteurs sans fil compatibles avec un firmware open source
- Les visiteurs du site peuvent s’inscrire dans une file d’attente pour jouer au jeu à distance
- Le projet se compose de quatre parties
- Un port de DOOM exécuté sur les écouteurs
- Un serveur série qui relie les écouteurs au serveur web et convertit le flux MJPEG en Twitch
- Un serveur web chargé de fournir les ressources, gérer la file d’attente, transmettre les entrées clavier et afficher le flux
- Une page web statique chargée de l’affichage dans le navigateur et de la communication avec le serveur
Matériel et architecture de connexion
- Les écouteurs n’ont pas d’écran ; les données sont donc transmises via Bluetooth ou via des pads de contact UART
- Le Bluetooth, limité à environ 1 Mbps, est plus lent, ce qui rend l’UART (2,4 Mbps) plus adapté
- Le framebuffer de DOOM a une résolution de 320×200 en couleur 8 bits, soit environ 96 KB
- Avec la bande passante de l’UART, cela permettrait de transmettre environ 3 FPS
- Pour améliorer cela, le projet adopte un flux MJPEG
- Utilisation de bitbank2/JPEGENC comme encodeur JPEG
- Taille moyenne des images JPEG : 11 à 13,5 KB
- La cadence théorique maximale atteint 22 à 27 FPS
Ajustement des performances CPU
- Le firmware de base cadence le CPU à 100 MHz, mais celui-ci a été monté à 300 MHz et le mode basse consommation désactivé
- Le Cortex-M4F (300 MHz) est suffisant pour exécuter DOOM, mais l’encodage JPEG devient le principal goulet d’étranglement
- La cadence réelle se situe autour de 18 FPS
Optimisation de la mémoire (RAM)
- La RAM accessible par défaut est de 768 KB, portée à 992 KB lorsque le processeur auxiliaire est désactivé
- DOOM nécessitant 4 MB de RAM, diverses optimisations ont été appliquées
- Pré-génération de tables de recherche, stockage des variables
consten flash, désactivation du système de cache, suppression de variables inutiles, etc., pour réduire l’empreinte mémoire
- Pré-génération de tables de recherche, stockage des variables
Problème de capacité de la mémoire flash
- Le fichier WAD standard de DOOM 1 pèse 4,2 MB, ce qui dépasse la limite de stockage de 4 MB des écouteurs
- Le problème a été résolu en utilisant la version allégée Squashware WAD (1,7 MB) de fragglet
- Toutes les ressources peuvent ainsi tenir dans la mémoire flash
Open source et accessibilité
- Le code du projet est publié dans deux dépôts GitHub
- DOOMBuds : port de DOOM pour écouteurs
- DOOMBUDS-JS : prise en charge de l’interaction entre le navigateur et les écouteurs
- Le site fonctionne avec une file d’attente et, à partir de la 5e position, le flux Twitch bascule vers un flux MJPEG à faible latence
5 commentaires
« It Runs DOOM »
Les maîtres de DOOM sont vraiment… impressionnants.
Waouh, là c'est un peu... hallucinant hahaha
Mon Dieu.
Avis Hacker News
Chaque fois que je vois DOOM tourner sur un appareil aussi simple, je me demande si c’est une victoire du logiciel ou un échec économique à ne pas avoir su fabriquer du matériel dédié moins cher
Des écouteurs Bluetooth ANC ne sont pas des produits simples, et la réduction de bruit exige d’exécuter en continu des calculs très complexes
Un MCU rapide n’est pas juste du gaspillage : il apporte des avantages en faible latence et en gestion efficace de l’alimentation
Il est bien plus réaliste d’avoir une architecture évolutive avec un MCU générique qu’un ASIC parfait
Au final, acheter en volume un MCU éprouvé revient bien plus vite que de fabriquer une puce sur mesure
Le coût en main-d’œuvre, tests, formation et petite série pour concevoir et produire une puce sur mesure est en fait plus élevé
Le coût des processus métier pèse bien plus lourd que le coût des matériaux
On vit dans un monde où DOOM tourne sur des écouteurs, il n’y a aucune raison de voir ça négativement
C’est excessif, mais c’est impressionnant que tout ça tienne dans l’oreille
C’est moi qui ai porté DOOM sur les PineBuds Pro
En vous connectant via Internet, vous pouvez jouer à DOOM sur mes écouteurs
Les détails et le lien GitHub sont sur mon site
C’est toujours un peu dommage qu’on porte uniquement DOOM
Avant, il y avait beaucoup de jeux simples mais addictifs ; aujourd’hui les jeux sont devenus trop gros et trop complexes pour être adaptés à de petites plateformes
On dirait que l’industrie a perdu sa direction, hors scène indé
Des jeux comme Master of Orion 1 étaient simples mais donnaient envie d’y revenir encore et encore
Les jeux actuels ressemblent davantage à des vidéos, avec peu d’interaction et du grind d’XP, ce qui les rend moins intéressants
C’est presque devenu une tradition
Aujourd’hui, la plupart des utilisateurs se soucient assez peu de la taille ou des performances
Comme les consommateurs ont adopté une attitude du type « tant que ça tourne », la valeur de l’optimisation a diminué
Cela dit, la scène indé propose encore beaucoup de jeux courts et stylés
C’est juste que les jeux courts, comme les films, ont du mal à marquer durablement et restent donc peu connus
La liste des portages de DOOM est disponible sur la page Wikipédia
Je pense que c’est un excellent coup de pub pour les PineBuds Pro
Je me demande si les Fairbuds pourraient faire pareil
Mais puisque DOOM tourne sur autant d’appareils, pourquoi n’est-il toujours pas fluide sur un 386 ?
Ça me rappelle que John Carmack disait dans une interview après DOOM 3 qu’avec la complexité croissante des moteurs, il était devenu impossible pour lui d’écrire tout le code tout seul
Je me demande ce qu’il pense de l’époque actuelle de l’IA
Personnellement, je pense qu’il est plutôt positif vis-à-vis de l’IA
Et “Masters of Doom” est vraiment un excellent livre, que je recommande
Je me demande si quelqu’un ici a déjà utilisé les PineBuds Pro
Il n’y avait pas de canal dédié sur l’IRC de Pine64, donc c’était difficile de poser la question
Je ne peux rien dire sur le confort ou la qualité audio, mais il existe un salon Pinebuds dédié sur le serveur Discord de Pine64
J’ai volontairement installé un firmware sans ANC, mais comme écouteurs Bluetooth, ils remplissent correctement leur rôle
Dans quelques années, avec un peu plus de RAM dans les écouteurs, on pourra sans doute faire tourner un cluster Kubernetes local
J’attends le billet intitulé « J’ai porté DOOM sur la puce d’une cigarette électronique jetable » 😄
Si la loi de Moore continue, ce sera peut-être possible dans une dizaine d’années
Une visionneuse autonome directement connectée aux écouteurs fonctionne aussi sur mobile
Voir la vidéo de démonstration
Il n’y a pas de contrôle tactile, seule la boucle d’introduction est lue