- 90s.dev es una nueva API de creación de juegos que funciona en la web, y ofrece una experiencia de creación de apps con GUI al estilo de los 90
- Esta plataforma no es directamente un motor de juegos ni un game maker, sino que ofrece una API para crear juegos, motores de juego y herramientas de desarrollo de juegos
- Está basada en HTML Canvas, con pantalla de 320x180, soporte para WebGL2, y se caracteriza por garantizar seguridad y rendimiento mediante web workers
- Con un SDK TypeScript-first y soporte para importar módulos wasm de varios lenguajes, permite un prototipado rápido y altamente escalable
- Los usuarios pueden crear sus propias apps y compartirlas o cargarlas desde GitHub o NPM, con el objetivo de fomentar la colaboración en la comunidad de desarrollo y la escalabilidad
La importancia del lanzamiento de 90s.dev
- 90s.dev es una nueva plataforma de API tipo game maker que funciona en la web
- Ofrece un entorno de creación de apps con GUI estilo noventero, y se distingue por su API para crear juegos, motores de juego y herramientas game maker
- Su objetivo es formar un ecosistema donde cualquiera pueda crear y compartir fácilmente assets y herramientas para juegos, como pixel art, sprites y mapas, sobre HTML Canvas
Características principales y visión
Introducción básica a la plataforma
- 90s.dev se ejecuta en el navegador y tiene una pantalla de 320x180 (16:9) que llena la ventana web
- Todas las apps se ejecutan en un entorno de web workers, lo que mejora la seguridad y el rendimiento
- Con WebGL2 offscreen canvas, puede ejecutar juegos de hasta 60fps
- Permite cargar y desplegar libremente módulos de apps alojados en GitHub y NPM
- Ofrece soporte para prototipado rápido con un SDK de TypeScript compatible con VSCode
- También tiene compatibilidad con módulos de varios lenguajes compilados a WebAssembly (wasm)
Apps incluidas por defecto
- Incluye por defecto apps básicas para crear assets de juego, como pixel art, herramientas de sprites y editor de mapas
- Aún no incluye herramientas de audio y edición musical, pero cualquiera puede desarrollarlas y publicarlas/compartirlas
- Las apps y herramientas creadas pueden compartirse con todos los usuarios mediante iframe o enlace
Inspiración y diferenciadores
Herramientas de desarrollo de juegos tomadas como referencia
- pico8: orientado al minimalismo, con soporte para un solo lenguaje
- tic80: elimina varias de las limitaciones de pico8
- love2d: requiere un IDE externo
- picotron: introduce una arquitectura de sistema operativo
- 90s.dev es una especie de pico8 meta, y se acerca más a love2d con TypeScript o a tic80 con enfoque en la expansión vertical
Innovación en GUI y detalles técnicos
Sistema de layout
- Implementa un sistema de layout automático simple pero potente para reducir la molestia de posicionar y redimensionar manualmente
- Las vistas (API) dibujan directamente la pantalla y aprovechan una estructura de árbol de vistas hijas
Sistema Ref
- Administra las propiedades de las vistas (tamaño, hijos, color de fondo, etc.) mediante watchable pointers (
ref)
- Todas las propiedades reciben un objeto de referencia (
ref), lo que detecta y refleja automáticamente los cambios
- Está diseñado de forma totalmente separada de los ref tradicionales de React/Vue
Composites (concepto de vistas compuestas)
- En JSX, invierte las etiquetas de cadena (minúsculas) y las etiquetas de valor (mayúsculas) para reforzar la separación entre implementación y uso
- Registra vistas abstractas en una tabla global para que puedan usarse libremente en otras partes del sistema
- Ejemplo: la vista colorpicker ofrece una implementación predeterminada, pero el desarrollador puede reemplazarla por el estilo que quiera
- Ofrece alta flexibilidad y extensibilidad para el desarrollo de apps con GUI
Despliegue de apps y colaboración comunitaria
Cambios en la forma de desplegar apps
- Antes se usaba una unidad compartida
net/ basada en base de datos propia
- Recientemente añadió soporte para alojar e importar módulos directamente desde NPM/GitHub vía CDN
- Ejemplo:
/os/fs/ghb/someuser/project@1.0.0/some/file.js
- Con el uso de service workers, completa un mecanismo de carga desde múltiples fuentes
Participación y colaboración
- Con un diseño tipo sistema operativo, fomenta el desarrollo de apps de la comunidad además de las apps esenciales (básicas)
- Da soporte para comunicación y colaboración mediante issue tracker, foro y wiki (todos en repositorios de GitHub)
- Issues: solicitud de funciones y reporte de errores
- Foro: presentación y discusión de proyectos
- Wiki: recopilación y curaduría de proyectos
Compartir apps
- Es posible compartir apps con enlaces en formato
/os/#app
- Busca una expansión libre, centrada en la comunidad, de apps, librerías y assets
Conclusión y dirección
- 90s.dev es una plataforma de API que diseña y define el propio ecosistema game maker
- Apunta a un entorno web extensible de creación de juegos donde cualquiera pueda crear, desplegar y usar apps fácilmente
- Es una herramienta de desarrollo de juegos orientada al futuro, basada en la colaboración comunitaria y la filosofía de plataforma abierta
2 comentarios
Me da curiosidad cómo será el motor del juego en sí.
Comentarios de Hacker News
Comparte la experiencia de haberse despertado un día de febrero a las 2 de la mañana y simplemente empezar a programar, cansado de seguir esperando; siguió escribiendo código y terminó creando una herramienta de creación de juegos basada en API, un motor de juegos y juegos en sí, y se dio cuenta de que su verdadera pasión está en diseñar APIs; comenta lo genial que le parece la gente que encuentra una pasión así y se entrega a ella
Agradece los elogios, pero lamenta no haber explicado bien la esencia del proyecto; en realidad, la API es la parte más interesante, pero no se nota a simple vista y eso le frustra; cree que debió esperar hasta tener más ejemplos que mostraran la usabilidad innovadora de la API, y se arrepiente de haber lanzado demasiado pronto
Dice que es el autor de este proyecto y agradece los comentarios; siente claramente que fue un lanzamiento temprano, está trabajando en mejorar varios de los puntos señalados y expresa su intención de volver en unos meses
No cree que haya sido un lanzamiento demasiado temprano; elogia el proyecto por ser muy genial y extremadamente sobreingenierizado, lo califica como lo mejor usando la famosa metáfora del bike shed y expresa una gran admiración por el hecho de que incluso implementara su propio sistema reactivo
Considera que el momento fue perfecto para Show HN; al revisar el tour de Hello World pudo entender intuitivamente de qué trataba el proyecto; si ya tienes experiencia con PICO-8 y React resulta todavía más divertido, y también le parece una decisión acertada haber elegido una proporción 16:9; opina que la proporción cuadrada de PICO-8 se siente rara
Agradece que lo haya lanzado temprano y recomienda fuertemente una estrategia de lanzar con frecuencia; menciona que 10,000 iteraciones son el camino al éxito y subraya que un solo intento no es más que el comienzo
Mensaje de ánimo diciendo que no fue un lanzamiento demasiado temprano y que el autor lo está haciendo muy bien
Aunque no lo ha analizado a fondo, confiesa que en secreto le atrae cada vez más esta estética retro; quizá al ver proyectos así revive el consuelo que transmitían tiempos más simples y tranquilos de antes
Pregunta si la app de paint funciona; la probó en Firefox y Chrome, pero aunque selecciona un color y hace clic, no se dibuja nada y tampoco aparece ningún error en la consola; aparte, admira lo bien que se recreó la estética de los 90: al principio le pareció una terminal de los 70 u 80, pero al mirarlo mejor cayó en cuenta de que los 90 realmente se veían justo así, y expresa entusiasmo por ver cómo evoluciona
Menciona que lamenta la confusión; solo desarrolló hasta el selector de color y lo demás todavía no está implementado, aunque cree que podrá terminarlo pronto en menos de una hora; al mismo tiempo aclara que la intención era recrear la diversión y el poder de desarrollar apps GUI con estética de los 90, pero sin la incomodidad, quedándose solo con la sensación de asombro; por eso decidió llamarlo 90s.dev
Comenta que quizá todavía no esté implementado; si haces clic en el botón “hash” en la esquina superior izquierda de la ventana y eliges “View Source”, se puede ver que la UI está solo simulada, y en el área con scroll solo aparece código dibujado como simple adorno
A esa persona tampoco le funciona
No entiende del todo el proyecto en sí, pero quedó muy enamorado de la estética; le sorprende cómo cierto ambiente emocional y ciertos elementos visuales pueden influir tanto en las emociones de una persona y despertar más interés
Reflexiona personalmente sobre cómo explicarlo; quería hacer un pico8 más cómodo de usar, así que creó un diseño y prototipo de 320x180; al mismo tiempo quería conservar todas las comodidades de VS Code y el soporte de TypeScript, así que al final lo planteó como una plataforma donde se pudiera crear y distribuir lo que normalmente va dentro de las pestañas de pico8; y ahora que lo piensa, siente que eso también lo lanzó demasiado pronto
Le gusta la estética en sí, pero opina que la combinación de formato 16:9 con una PC noventera no encaja; prefiere más la sensibilidad particular de los monitores CRT, que eran más cercanos a un formato cuadrado
Da las gracias y comenta que explicar este tipo de cosas es muy difícil; confiesa que incluso esta publicación fue un intento de describir lo más brevemente posible qué fue lo que hizo, pero siente con honestidad que aunque la versión sea corta, el contenido inevitablemente sigue siendo ambiguo y que ya quiere rendirse con eso
Cree que el proyecto es muy genial, pero que empezar se siente un poco difícil; sugiere que sería bueno contar con un walkthrough breve sobre cómo hacer un mini juego
Agradece el comentario y explica que actualmente la forma de construir juegos es la misma que la del tutorial de creación de apps, pero creando una vista personalizada y sobrescribiendo el método
draw; para rendimiento, también conviene crear y usar unOffscreenCanvas, y todavía no ofrece una API que envuelva WebGL2 de forma más cómoda; promete que más adelante hará sin falta un tutorial para principiantes donde se construya un juego completo desde cero; por ahora, como el enfoque actual está más en apps, primero se está concentrando en desarrollar las herramientas de creación de juegos, como sprites y mapas, y comparte el enlace del tutorial Hello WorldConsidera el proyecto sumamente interesante; le da una sensación inmediata de volver a la infancia; también le gusta pico8, pero siente que él creció más con escritorio y GUI, así que pico8 le parece de una generación un poco anterior; este proyecto le despierta una nostalgia parecida a volver a comprar CDs
Presenta también Picotron, hecho por el desarrollador de Pico8; lo describe como un sistema operativo de escritorio parecido a Pico8, pero con un poco menos de restricciones; no lo ha usado personalmente y solo ha visto GIFs, pero siente que el paradigma del proyecto es similar, en el sentido de apuntar a una “plataforma” dentro de la cual se puede crear pico8; le parece que ambos persiguen el mismo ideal de maneras diferentes
Se queda atorado en el primer paso de la guía Getting Started; descargó
helloworld.ziplocalmente, abriófiler.app.jsen la web y presionó el botón mount conhelloworld/appcomo drive name, pero no pasó nada; le confunde cómo se supone que debe subirse el archivo zip a la instancia de 90s.devAgradece la retroalimentación y dice que probablemente está usando Firefox; esa función depende de
showDirectoryPicker, que Firefox no soporta, así que recomienda usar Chrome; además, aclara que en drive name solo debe escribirse el nombre, sin ruta (por ejemplo,foo), y promete corregir la guía pronto; luego explica quefoo/helloworld.app.jsquedará conectado a la ruta local realDice que la estética noventera le encanta de verdad, especialmente la tipografía; se da cuenta de que le atrae mucho más el diseño de los 90 que el pixel art estilo 80s
Critica la landing page: siente que es confuso llamar al proyecto un ‘game maker’ y al mismo tiempo decir que ‘no es un game maker’; señala que la terminología no es consistente
Recuerda que poner nombres siempre ha sido un problema difícil; lo considera una de las tareas más complicadas de la informática, junto con la invalidación de caché