27 points par GN⁺ 2025-05-22 | 2 commentaires | Partager sur WhatsApp
  • 90s.dev est une nouvelle API de game maker fonctionnant sur le web, qui offre une expérience de création d’applications GUI dans le style des années 90
  • Cette plateforme n’est pas directement un moteur de jeu ni un game maker, mais fournit une API pour créer des jeux, des moteurs de jeu et des outils de création de jeux
  • Ses caractéristiques incluent une base HTML Canvas, un écran en 320x180, la prise en charge de WebGL2, ainsi que la sécurité et les performances garanties via les web workers
  • Grâce à un SDK TypeScript-first et à la prise en charge de l’importation de modules wasm issus de divers langages, elle permet un prototypage rapide et hautement extensible
  • Les utilisateurs peuvent créer leurs propres applications et les partager ou les charger depuis GitHub ou NPM, avec pour objectif de favoriser la collaboration au sein de la communauté de développement et l’extensibilité

Ce que signifie la sortie de 90s.dev

  • 90s.dev est une nouvelle forme de plateforme d’API de game maker qui fonctionne sur le web
  • Elle propose un environnement de création d’applications GUI dans le style des années 90 et se distingue par une API destinée à créer des jeux, des moteurs de jeu et des outils de game maker
  • L’objectif est de former un écosystème où chacun peut facilement créer et partager, sur HTML Canvas, des assets et des outils de jeu tels que du pixel art, des sprites et des maps

Principales caractéristiques et vision

Présentation générale de la plateforme

  • 90s.dev s’exécute dans le navigateur et affiche une fenêtre web en 320x180 (16:9) qui remplit l’écran
  • Toutes les applications s’exécutent dans un environnement de web worker, ce qui améliore la sécurité et les performances
  • Grâce à un canvas hors écran WebGL2, les jeux peuvent fonctionner jusqu’à 60 fps
  • Il est possible de charger et de déployer librement des modules d’application hébergés sur GitHub et NPM
  • Un SDK TypeScript compatible avec VSCode permet un prototypage rapide
  • Compatibilité avec des modules de divers langages compilés en WebAssembly (wasm)

Applications fournies par défaut

  • Des applications de base pour créer des assets de jeu, comme un outil de pixel art, un éditeur de sprites et un éditeur de maps, sont fournies par défaut
  • Les outils d’édition audio et musicale ne sont pas encore fournis, mais tout le monde peut les développer et les publier/partager
  • Les applications et outils créés peuvent être partagés avec tous les utilisateurs via des iframe ou des liens

Inspirations et différenciation

Outils de développement de jeux de référence

  • pico8 : orienté minimalisme, prise en charge d’un seul langage
  • tic80 : lève plusieurs limitations de pico8
  • love2d : nécessite un IDE externe
  • picotron : introduit une architecture de type système d’exploitation
  • 90s.dev s’apparente à un pico8 méta, à un love2d avec TypeScript, ou à un tic80 davantage centré sur l’extension verticale

Innovation GUI et détails techniques

Système de layout

  • Mise en place d’un système d’auto-layout simple mais puissant pour réduire les contraintes du placement manuel et du redimensionnement
  • Les vues (API) dessinent directement l’écran et exploitent une structure en arbre de vues enfants

Système de ref

  • Les propriétés des vues (taille, enfants, couleur de fond, etc.) sont gérées via des watchable pointers (ref)
  • Chaque propriété reçoit un objet de référence (ref), ce qui permet de détecter automatiquement les changements de propriétés et de les répercuter
  • Ce système a été conçu de manière totalement distincte des ref de React/Vue existants

Composites (concept de vues composites)

  • En inversant dans JSX les tags chaîne de caractères (minuscules) et les tags valeur (majuscules), le système renforce la séparation entre implémentation et usage
  • Les vues abstraites sont enregistrées dans une table globale et peuvent être librement utilisées dans d’autres parties du système
  • Exemple : la vue colorpicker fournit une implémentation par défaut, mais le développeur peut la remplacer par le style de son choix
  • Cela apporte une grande flexibilité et extensibilité au développement d’applications GUI

Déploiement des applications et collaboration communautaire

Évolution de la méthode de déploiement des applications

  • Auparavant, la plateforme utilisait un lecteur de partage net/ basé sur sa propre base de données
  • Elle prend désormais en charge l’hébergement direct et l’importation de modules depuis NPM/GitHub via un CDN
    • Exemple : /os/fs/ghb/someuser/project@1.0.0/some/file.js
  • L’utilisation d’un service worker complète le mécanisme de chargement depuis diverses sources

Participation et collaboration

  • Avec son design de type système d’exploitation, la plateforme encourage le développement d’applications communautaires au-delà des applications essentielles (applications de base)
  • Elle prend en charge les échanges et la collaboration via un issue tracker, un forum et un wiki (tous dans un repo GitHub)
    • Issues : demandes de fonctionnalités et signalements de bugs
    • Forum : annonces de projets et discussions
    • Wiki : collection et curation de projets

Partage d’applications

  • Le partage d’applications est possible via des liens au format /os/#app
  • L’objectif est de favoriser, dans une logique communautaire, la création et la diffusion libres d’applications, de bibliothèques et d’assets

Conclusion et orientation

  • 90s.dev est une plateforme d’API qui conçoit et définit l’écosystème même du game maker
  • Elle vise un environnement web extensible de création de jeux où chacun peut facilement créer, déployer et utiliser ses propres applications
  • C’est un outil de développement de jeux tourné vers l’avenir, fondé sur la collaboration communautaire et une philosophie de plateforme ouverte

2 commentaires

 
lazyhack 2025-05-23

Je me demande ce que vaut le moteur de jeu lui-même.

 
GN⁺ 2025-05-22
Avis Hacker News
  • Partage d’une expérience où l’on se réveille à 2 h du matin un jour de février et où l’on se met simplement à coder, parce qu’on en avait assez d’attendre ; puis on continue à écrire du code pour créer un outil de création de jeux basé sur des API, un moteur de jeu, puis des jeux eux-mêmes, jusqu’à réaliser que sa véritable passion réside dans la conception d’API ; sentiment que les personnes qui trouvent ainsi leur passion et s’y consacrent sont vraiment admirables

  • Remerciements pour les compliments, regret que l’essence du projet n’ait pas été bien expliquée ; en réalité, l’API est la partie la plus intéressante, mais cela ne se voit pas extérieurement, ce qui est frustrant ; pensée qu’il aurait fallu attendre d’avoir davantage d’exemples montrant l’utilisabilité innovante de l’API ; regret d’avoir lancé le projet trop précipitamment

  • Je précise que je suis l’auteur de ce projet et j’exprime ma gratitude pour les retours ; je sens clairement que la sortie a été précoce ; j’indique que je travaille à améliorer les différents points soulevés et que je reviendrai dans quelques mois

  • Je ne pense pas du tout que la sortie ait été trop précoce ; c’est un projet extrêmement cool et extraordinairement surconçu, dans le meilleur sens du terme ; je le qualifie de sommet absolu selon la célèbre métaphore du bike shed ; immense admiration pour le fait d’avoir même implémenté un système réactif maison

  • J’estime que c’est exactement le bon moment pour Show HN ; en regardant la visite Hello World, on comprend intuitivement de quel type de projet il s’agit ; si l’on a déjà de l’expérience avec PICO-8 et React, c’est encore plus amusant ; le choix du ratio 16:9 me paraît aussi judicieux ; à mon avis, le ratio carré de PICO-8 est étrange

  • Merci d’avoir lancé tôt ; je recommande vivement la stratégie consistant à lancer souvent ; les 10 000 itérations sont le chemin vers le succès, et une seule tentative n’est qu’un début

  • Message d’encouragement disant que la sortie n’était pas du tout trop précoce et que l’auteur fait un excellent travail

  • Sans aller très en profondeur, j’avoue être discrètement encore plus attiré par cette esthétique rétro ; j’ai l’impression qu’un certain réconfort provenant d’une époque ancienne, plus simple et plus paisible, renaît quand je vois ce genre de projet aujourd’hui

  • Question sur le fonctionnement de l’application paint ; j’ai essayé sur Firefox et Chrome, mais après avoir sélectionné une couleur puis cliqué, rien ne se dessine ; aucune erreur non plus dans la console ; sur un autre sujet, admiration pour la réussite de la reconstitution de l’ambiance des années 90 ; au début, j’y voyais plutôt une ambiance terminal des années 70-80, mais en y regardant de plus près, je réalise que les années 90 ressemblaient vraiment exactement à cela ; j’exprime mon impatience de voir la suite

  • Je mentionne être désolé pour la confusion ; seul le sélecteur de couleurs a été développé, rien de plus n’est encore implémenté ; cela devrait pouvoir être terminé dans l’heure qui vient ; j’explique aussi que l’intention de départ était de recréer, avec une esthétique années 90, le plaisir et la puissance du développement d’applications GUI ; je voulais enlever l’inconfort et ne garder que l’émerveillement, d’où le nom 90s.dev

  • Il est possible que cela ne soit pas encore implémenté ; si l’on clique sur le bouton « hash » en haut à gauche de la fenêtre puis sur « View Source », on voit que seule l’UI est simulée ; dans la zone de défilement, on ne trouve qu’un simple motif de code dessiné

  • Chez moi non plus, cela ne fonctionne pas

  • Je ne comprends pas encore complètement le projet lui-même, mais je suis très séduit par l’ambiance ; je trouve fascinant que certains éléments visuels et atmosphériques puissent à eux seuls avoir un impact aussi fort sur les émotions et susciter davantage d’intérêt

  • J’ai réfléchi personnellement à une manière de l’expliquer ; je voulais créer un pico8 plus agréable à utiliser, alors j’ai conçu un format 320x180 et un prototype ; en même temps, je voulais bénéficier de tout le confort de VS Code ainsi que du support TypeScript ; au final, j’ai imaginé une plateforme destinée à créer et publier ce qui serait normalement contenu dans les onglets de pico8 ; et, en y repensant maintenant, j’ai moi aussi l’impression d’avoir lancé cela trop tôt

  • J’aime bien l’esthétique elle-même, mais à mon avis, le ratio 16:9 ne va pas avec un PC des années 90 ; je préfère la sensation particulière des moniteurs CRT, plus proches du carré

  • Merci ; j’avoue que l’exercice de l’explication est extrêmement difficile ; ce texte était justement une tentative d’expliquer aussi brièvement que possible ce que j’avais créé ; mais même en version courte, cela reste forcément flou, au point que j’ai envie d’abandonner

  • Je trouve le projet très cool, mais le démarrage semble un peu difficile ; ce serait bien d’avoir une petite visite guidée expliquant comment créer un mini-jeu

  • Merci ; actuellement, la manière de construire un jeu est la même que pour le tutoriel de création d’app, sauf qu’il faut créer une vue personnalisée et surcharger la méthode draw ; pour de meilleures performances, il est encore préférable de créer et d’utiliser un OffscreenCanvas ; pour l’instant, il n’existe pas encore d’API qui encapsule plus confortablement WebGL2 ; je promets de faire plus tard un tutoriel où même les débutants pourront créer un jeu complet eux-mêmes ; pour l’instant, comme l’accent est davantage mis sur les apps, je me concentre d’abord sur les outils de création de jeux (sprites, cartes, etc.) ; partage du lien du tutoriel Hello World

  • Je trouve le projet extrêmement intéressant ; cela m’a instantanément ramené en enfance ; j’aime aussi pico8, mais j’ai grandi davantage avec le desktop et les GUI, donc pico8 me donne l’impression d’être en avance d’une génération ; ce projet, lui, éveille une nostalgie semblable à celle de racheter des CD

  • Je mentionne aussi Picotron, créé par le développeur de Pico8 ; je le décris comme un OS desktop similaire à Pico8 mais un peu moins limité ; je ne l’ai pas utilisé moi-même, je n’en ai vu que des GIF, mais le paradigme du projet paraît proche ; comme mon projet, il semble viser une sorte de « plateforme » capable d’héberger pico8 en son sein ; j’ai l’impression que nous poursuivons le même idéal par des moyens différents

  • Bloqué dès la première étape du guide Getting Started ; après avoir téléchargé helloworld.zip en local, ouvert filer.app.js sur le web et cliqué sur le bouton mount en entrant helloworld/app comme drive name, il ne se passe rien ; la façon d’envoyer le fichier zip vers une instance de 90s.dev n’est pas claire

  • Merci pour le retour ; il est probable que vous utilisiez Firefox ; cette fonctionnalité dépend de showDirectoryPicker, que Firefox ne prend pas en charge, donc je recommande Chrome ; par ailleurs, dans drive name, il faut saisir seulement un nom sans chemin (par ex. foo) et je promets de corriger le guide bientôt ; ensuite, foo/helloworld.app.js sera relié au chemin local réel

  • J’exprime que l’esthétique des années 90 me plaît énormément, en particulier la police ; je réalise que je suis bien plus attiré par le design des années 90 que par le pixel art façon années 80

  • Critique de la landing page : le fait de qualifier le projet de « game maker » tout en disant en même temps que « ce n’est pas un game maker » crée une contradiction déroutante ; remarque sur le manque de cohérence dans les termes utilisés

  • Rappel que le naming est un problème notoirement difficile ; c’est considéré comme l’un des défis les plus compliqués en informatique, avec l’invalidation de cache