27 Punkte von GN⁺ 2025-05-22 | 2 Kommentare | Auf WhatsApp teilen
  • 90s.dev ist eine neue webbasierte Game-Maker-API, die die Erfahrung bietet, GUI-Apps im Stil der 90er zu erstellen
  • Die Plattform ist weder eine direkte Game-Engine noch ein Game Maker, sondern stellt APIs bereit, um Spiele, Game-Engines und Tools zur Spieleentwicklung zu erstellen
  • Zu den Merkmalen gehören HTML-Canvas-Basis, eine Auflösung von 320x180, WebGL2-Unterstützung sowie Sicherheit und Performance durch Web Worker
  • Mit einem TypeScript-first SDK und der Unterstützung für den Import von wasm-Modulen aus verschiedenen Sprachen ist schnelles und hochskalierbares Prototyping möglich
  • Nutzer können eigene Apps erstellen und über GitHub oder NPM teilen oder laden; Ziel ist die Zusammenarbeit in der Entwickler-Community und eine hohe Erweiterbarkeit

Die Bedeutung der Veröffentlichung von 90s.dev

  • 90s.dev ist eine neue Art von Game-Maker-API-Plattform, die im Web läuft
  • Sie bietet eine GUI-App-Entwicklungsumgebung im Stil der 90er und zeichnet sich durch APIs zur Erstellung von Spielen, Game-Engines und Game-Maker-Tools aus
  • Ziel ist der Aufbau eines Ökosystems, in dem jeder auf HTML Canvas Pixel Art, Sprites, Maps und andere Spiele-Assets sowie Tools einfach erstellen und teilen kann

Zentrale Funktionen und Vision

Grundlegende Einführung in die Plattform

  • 90s.dev läuft im Browser und füllt das Webfenster mit einer Anzeige in 320x180 (16:9) Auflösung
  • Alle Apps laufen in einer Web-Worker-Umgebung, was für bessere Sicherheit und Performance sorgt
  • Über einen WebGL2-Offscreen-Canvas sind Spiele mit bis zu 60 fps möglich
  • Auf GitHub und NPM gehostete App-Module können frei geladen und veröffentlicht werden
  • Ein VSCode-freundliches TypeScript-SDK unterstützt schnelles Prototyping
  • Es besteht Kompatibilität mit Modulen in verschiedenen Sprachen, die zu WebAssembly (wasm) gebaut wurden

Mitgelieferte Standard-Apps

  • Standardmäßig werden Basis-Apps zur Erstellung von Spiele-Assets bereitgestellt, darunter Pixel-Art-, Sprite-Erstellungs-Tools und ein Map-Editor
  • Werkzeuge für Sound- und Musikbearbeitung sind noch nicht enthalten, können aber von jedem selbst entwickelt und veröffentlicht/geteilt werden
  • Erstellte Apps und Tools können über iframe oder Links mit allen Nutzern geteilt werden

Inspiration und Unterschiede

Referenzierte Tools zur Spieleentwicklung

  • pico8: auf Minimalismus ausgerichtet, unterstützt nur eine einzelne Sprache
  • tic80: hebt mehrere Beschränkungen von pico8 auf
  • love2d: benötigt eine externe IDE
  • picotron: führt eine Betriebssystem-Architektur ein
  • 90s.dev ist ein metaartiges pico8 und kommt einem mit TypeScript ausgestatteten love2d oder einem auf vertikale Erweiterung fokussierten tic80 am nächsten

GUI-Innovation und technische Details

Layout-System

  • Um die Umständlichkeit manueller Platzierung und Größenanpassung zu reduzieren, wurde ein einfaches, aber leistungsstarkes Auto-Layout-System implementiert
  • Views (API) zeichnen den Bildschirm direkt und nutzen eine Baumstruktur aus Child-Views

Ref-System

  • Eigenschaften von Views (Größe, Children, Hintergrundfarbe usw.) werden über einen watchable pointer (ref) verwaltet
  • Allen Eigenschaften werden Referenzobjekte (ref) zugewiesen, um Änderungen automatisch zu erkennen und anzuwenden
  • Das System ist vollständig unabhängig von den üblichen refs in React/Vue konzipiert

Composites (Konzept zusammengesetzter Views)

  • In JSX werden String-Tags (kleingeschrieben) und Value-Tags (großgeschrieben) umgekehrt, um die Trennung von Implementierung und Nutzung zu stärken
  • Abstrakte Views werden in einer globalen Tabelle registriert und können von anderen Teilen des Systems frei verwendet werden
  • Beispiel: Die colorpicker-View liefert eine Standard-Implementierung, kann aber von Entwicklern durch einen gewünschten Stil ersetzt werden
  • Das bietet bei der Entwicklung von GUI-Apps hohe Flexibilität und Erweiterbarkeit

App-Bereitstellung und Zusammenarbeit in der Community

Veränderungen bei der App-Veröffentlichung

  • Früher wurde ein eigener, datenbankbasierter net/-Shared-Drive verwendet
  • Inzwischen werden direktes Hosting und Import von Modulen über CDN aus NPM/GitHub unterstützt
    • Beispiel: /os/fs/ghb/someuser/project@1.0.0/some/file.js
  • Mithilfe von Service Workern wurde ein Mechanismus zum Laden aus verschiedenen Quellen fertiggestellt

Beteiligung und Zusammenarbeit

  • Durch das betriebssystemartige Design wird die Entwicklung von Community-Apps zusätzlich zu den Pflicht-Apps (Basis-Apps) gefördert
  • Issue-Tracker, Forum und Wiki (alle im GitHub-Repo) unterstützen Kommunikation und Zusammenarbeit
    • Issues: Funktionswünsche und Fehlermeldungen
    • Forum: Projektvorstellungen und Diskussionen
    • Wiki: Projektsammlungen und Kuratierung

App-Sharing

  • Apps können über Links im Format /os/#app geteilt werden
  • Angestrebt wird eine communityzentrierte freie Erstellung und Verbreitung von Apps, Bibliotheken und Assets

Fazit und Ausrichtung

  • 90s.dev ist eine API-Plattform, die das Ökosystem von Game Makern selbst entwirft und definiert
  • Verfolgt wird eine erweiterbare webbasierte Umgebung zur Spieleentwicklung, in der jeder leicht eigene Apps erstellen, veröffentlichen und nutzen kann
  • Es handelt sich um ein zukunftsorientiertes Tool zur Spieleentwicklung, das auf Community-Zusammenarbeit und einer offenen Plattformphilosophie basiert

2 Kommentare

 
lazyhack 2025-05-23

Da fragt man sich, wie wohl die Game-Engine selbst ist.

 
GN⁺ 2025-05-22
Hacker-News-Kommentare
  • Schildert die Erfahrung, eines Tages im Februar um 2 Uhr morgens aufzuwachen und einfach mit dem Coden anzufangen; er oder sie hatte es satt, weiter zu warten, schrieb immer weiter Code und erschuf so ein API-basiertes Game-Maker-Tool, eine Game Engine und Spiele und erkannte dabei, dass die wahre Leidenschaft eigentlich im API-Design liegt; teilt die Bewunderung für Menschen, die ihre Leidenschaft auf diese Weise finden und sich ihr ganz widmen

  • Drückt Dank für das Lob aus und bedauert, dass das Wesen des Projekts nicht gut erklärt wurde; eigentlich sei die API der spannendste Teil, doch das sei nach außen hin nicht sichtbar, was frustrierend sei; man hätte vielleicht warten sollen, bis es mehr Beispiele gibt, die die innovative Nutzbarkeit der API zeigen; Reue darüber, den Release zu überstürzt gemacht zu haben

  • Gibt an, der Autor dieses Projekts zu sein, bedankt sich für das Feedback, spürt deutlich, dass der Release zu früh war, arbeitet an Verbesserungen zu den vielen angesprochenen Punkten und will in ein paar Monaten wiederkommen

  • Findet überhaupt nicht, dass der Release zu früh war; lobt das Projekt als extrem cool und herrlich überentwickelt; bewertet es mit der berühmten Bike-Shed-Metapher als absolut großartig; ist enorm beeindruckt davon, dass sogar ein eigenes reaktives System implementiert wurde

  • Hält den Zeitpunkt für perfekt für Show HN; konnte durch die Hello-World-Tour intuitiv verstehen, was für ein Projekt es ist; mit Erfahrung in PICO-8 und React wirke es noch reizvoller; hält auch die Wahl des 16:9-Formats für klug, da das quadratische Format von PICO-8 etwas seltsam sei

  • Dankt dafür, dass so früh veröffentlicht wurde, empfiehlt nachdrücklich eine Strategie des häufigen Veröffentlichens und betont mit dem Hinweis auf 10.000 Wiederholungen als Weg zum Erfolg, dass ein einzelner Versuch nur der Anfang ist

  • Ermutigende Nachricht, dass die Veröffentlichung keineswegs zu früh gewesen sei, und Zuspruch, dass der Autor einen großartigen Job macht

  • Obwohl es nicht tiefgehend behandelt wurde, gesteht jemand, sich heimlich noch stärker von dieser Retro-Stimmung angezogen zu fühlen; vermutlich werde dabei der Trost aus einer früheren, einfacheren und bequemeren Zeit wieder lebendig, wenn man solche Projekte heute sieht

  • Fragt, ob die Paint-App funktioniert; hat es in Firefox und Chrome versucht, aber nach der Farbauswahl und Klicks werde nichts gezeichnet, und auch in der Konsole erscheine kein Fehler; nebenbei Bewunderung dafür, wie erfolgreich das 90er-Jahre-Gefühl rekonstruiert wurde; zunächst wirkte es eher wie ein Terminal aus den 70ern oder 80ern, aber beim genaueren Hinsehen sei es tatsächlich exakt so, wie die 90er aussahen; äußert Vorfreude auf die weitere Entwicklung

  • Entschuldigt sich für die Verwirrung und erklärt, dass bislang nur der Farbwähler entwickelt wurde und alles darüber hinaus noch nicht implementiert ist; das lasse sich wahrscheinlich bald in weniger als einer Stunde fertigstellen; zugleich sei die eigentliche Absicht gewesen, den Spaß und die Power der GUI-App-Entwicklung im Stil der 90er wiederzugeben; Unbequemlichkeit wollte man weglassen und nur das Staunen bewahren, daher auch der Name 90s.dev

  • Vermutet, dass es noch nicht implementiert ist; wenn man links oben im Fenster auf den „hash“-Button klickt und dann „View Source“ wählt, sehe man, dass nur die UI gemockt ist; im Scroll-Bereich finde sich lediglich Code mit einem einfachen Muster

  • Funktioniert bei mir auch nicht

  • Versteht das Projekt selbst nicht vollständig, ist aber stark von der Stimmung eingenommen; findet es faszinierend, wie allein emotionale Atmosphäre und visuelle Elemente die Gefühle von Menschen stark beeinflussen und mehr Interesse wecken können

  • Überlegt sich persönlich eine bessere Erklärung: Man wollte ein benutzerfreundlicheres pico8 bauen und entwickelte deshalb ein 320x180-Design und einen Prototypen; gleichzeitig wollte man alle Komfortfunktionen von VS Code und TypeScript-Support; letztlich wurde es daher als Plattform konzipiert, mit der sich Dinge erstellen und verteilen lassen, die in den Tabs von pico8 enthalten sind; im Rückblick fühlt sich auch das immer noch wie ein zu früher Release an

  • Mag die Stimmung an sich, findet aber, dass das 16:9-Format und die Kombination mit einem 90er-PC nicht gut zusammenpassen; bevorzugt eher das besondere Gefühl von CRT-Monitoren, die näher an einem quadratischen Format waren

  • Dankt und klagt darüber, wie schwierig Erklärungen sind; gesteht, dass auch dieser Beitrag letztlich nur der Versuch war, möglichst kurz zu erklären, was eigentlich gebaut wurde; selbst in der kurzen Version bleibe der Inhalt zwangsläufig vage, weshalb man am liebsten aufgeben würde

  • Findet das Projekt sehr cool, aber den Einstieg etwas schwer; schlägt vor, dass ein kurzer Walkthrough zum Erstellen eines Mini-Games hilfreich wäre

  • Bedankt sich und erklärt, dass der aktuelle Weg zum Bauen eines Spiels dem App-Build-Tutorial entspricht, man aber eine Custom View erstellen und die draw-Methode überschreiben kann; für die Performance wäre es noch besser, ein OffscreenCanvas zu erzeugen und zu verwenden; eine API, die WebGL2 komfortabler kapselt, gebe es bislang noch nicht; verspricht, künftig unbedingt auch ein Tutorial zu erstellen, in dem selbst Anfänger ein ganzes Spiel selbst bauen können; momentan liege der Fokus noch auf Apps, daher habe die Entwicklung der Game-Maker-Tools wie Sprites und Maps Vorrang; teilt einen Hello-World-Tutorial-Link

  • Findet das Projekt extrem interessant und fühlt sich sofort in die Kindheit zurückversetzt; mag pico8 zwar auch, ist aber eher mit Desktop und GUI aufgewachsen, weshalb sich pico8 für diese Person ungefähr eine Generation zu früh anfühlt; dieses Projekt löse eher eine Nostalgie aus, als würde man wieder CDs kaufen

  • Erwähnt auch Picotron vom Pico8-Entwickler; beschreibt es als ein Desktop-OS ähnlich wie Pico8, aber mit etwas weniger Einschränkungen; hat es selbst nie benutzt und nur GIFs davon gesehen, findet aber das Projektparadigma ähnlich; da es ebenfalls auf eine „Plattform“ hinauslaufe, in der man pico8 im Inneren bauen könne, wirke es dem eigenen Projekt verwandt; beide würden auf unterschiedliche Weise demselben Ideal nachgehen

  • Bleibt schon beim ersten Schritt des Getting-Started-Guides hängen: hat helloworld.zip lokal heruntergeladen, filer.app.js im Web geöffnet und auf den Mount-Button geklickt sowie als Drive Name helloworld/app eingegeben, aber nichts passiere; unklar sei, wie die ZIP-Datei in die 90s.dev-Instanz hochgeladen werden soll

  • Bedankt sich für das Feedback und vermutet, dass vermutlich Firefox verwendet wird; die Funktion hänge von showDirectoryPicker ab, was Firefox nicht unterstütze, daher werde Chrome empfohlen; außerdem dürfe beim Drive Name nur der Name ohne Pfad eingegeben werden, also z. B. foo; der Guide werde bald angepasst; anschließend sei foo/helloworld.app.js mit dem tatsächlichen lokalen Pfad verknüpft

  • Sagt, dass das 90er-Jahre-Gefühl wirklich gefällt, besonders die Schriftart sei beeindruckend; bemerkt über sich selbst, stärker von 90er-Design als von Pixel-Art im Stil der 80er angezogen zu werden

  • Kritisiert die Landingpage: Das Projekt werde als „game maker“ bezeichnet und gleichzeitig als „kein game maker“, was verwirrend wirke; die Begriffe würden nicht konsistent verwendet

  • Erinnert daran, dass Naming von Natur aus schwierig ist und in der Informatik als eine der schwersten Aufgaben gilt, zusammen mit Cache-Invalidierung