27 pontos por GN⁺ 2025-05-22 | 2 comentários | Compartilhar no WhatsApp
  • O 90s.dev é uma nova API de game maker que funciona na web, oferecendo uma experiência de criação de apps com GUI no estilo dos anos 90
  • A plataforma não é diretamente um engine de jogos ou um game maker, mas fornece APIs para criar jogos, engines de jogos e ferramentas de criação de jogos
  • Tem como características ser baseado em HTML Canvas, tela de 320x180, suporte a WebGL2 e garantia de segurança e desempenho por meio de web workers
  • Com um SDK TypeScript-first e suporte à importação de módulos wasm de várias linguagens, permite prototipagem rápida e escalável
  • Os usuários podem criar seus próprios apps e compartilhá-los ou carregá-los via GitHub ou NPM, com o objetivo de promover colaboração na comunidade de desenvolvimento e escalabilidade

O significado do lançamento do 90s.dev

  • O 90s.dev é uma plataforma de API de game maker de um novo tipo que funciona na web
  • Oferece um ambiente de criação de apps com GUI no estilo dos anos 90 e se destaca por suas APIs para criar jogos, engines de jogos e ferramentas de game maker
  • O objetivo é formar um ecossistema em que qualquer pessoa possa criar e compartilhar facilmente pixel art, sprites, mapas e outras ferramentas e assets para jogos em HTML Canvas

Principais recursos e visão

Introdução básica à plataforma

  • O 90s.dev roda no navegador e tem uma tela em resolução 320x180 (16:9) que preenche a janela web
  • Todos os apps são executados em um ambiente de web worker, garantindo melhor segurança e desempenho
  • Com canvas offscreen em WebGL2, é possível rodar jogos a até 60fps
  • É possível carregar e publicar livremente módulos de apps hospedados no GitHub e no NPM
  • O SDK TypeScript amigável ao VSCode oferece suporte a prototipagem rápida
  • Também possui compatibilidade com módulos de diversas linguagens compilados para WebAssembly (wasm)

Apps fornecidos por padrão

  • Por padrão, oferece apps básicos para criação de assets de jogos, como pixel art, ferramenta de criação de sprites e editor de mapas
  • Ferramentas de edição de áudio e música ainda não são fornecidas, mas qualquer pessoa pode desenvolvê-las e publicá-las/compartilhá-las diretamente
  • Os apps e ferramentas criados podem ser compartilhados com qualquer usuário por iframe ou link

Inspirações e diferenciais

Ferramentas de desenvolvimento de jogos que serviram de referência

  • pico8: voltado ao minimalismo, com suporte a uma única linguagem
  • tic80: remove várias limitações do pico8
  • love2d: exige uma IDE externa
  • picotron: introduz uma arquitetura de sistema operacional
  • O 90s.dev é um pico8 metalinguístico e se aproxima mais de um love2d com TypeScript ou de um tic80 focado em expansão vertical

Inovação na GUI e detalhes técnicos

Sistema de layout

  • Para reduzir o incômodo do posicionamento manual e redimensionamento, foi implementado um sistema de layout automático simples, porém poderoso
  • A view (API) desenha a tela diretamente e usa uma estrutura em árvore de views filhas

Sistema de Ref

  • As propriedades da view (tamanho, filhos, cor de fundo etc.) são gerenciadas por meio de um watchable pointer (ref)
  • Todos os atributos recebem um objeto de referência (ref), permitindo detectar e refletir automaticamente alterações nas propriedades
  • Foi projetado de forma totalmente separada dos refs tradicionais de React/Vue

Composites (conceito de views compostas)

  • No JSX, a plataforma inverte tags de string (minúsculas) e tags de valor (maiúsculas), reforçando a separação entre implementação e uso
  • Views abstratas são registradas em uma tabela global e podem ser usadas livremente em outras partes do sistema
  • Exemplo: a view colorpicker fornece uma implementação padrão, mas pode ser substituída pelo estilo desejado pelo desenvolvedor
  • Isso oferece alta flexibilidade e extensibilidade no desenvolvimento de apps com GUI

Distribuição de apps e colaboração da comunidade

Mudança na forma de distribuir apps

  • Antes, era usado um drive de compartilhamento net/ baseado em banco de dados próprio
  • Recentemente, passou a suportar hospedagem e importação direta de módulos a partir de NPM/GitHub via CDN
    • Exemplo: /os/fs/ghb/someuser/project@1.0.0/some/file.js
  • Com o uso de service workers, foi concluído um mecanismo de carregamento a partir de várias fontes

Participação e colaboração

  • Com um design inspirado em sistema operacional, incentiva o desenvolvimento de apps da comunidade além dos apps essenciais (apps básicos)
  • Dá suporte à comunicação e colaboração por meio de issue tracker, fórum e wiki (todos em repositórios GitHub)
    • Issues: solicitações de recursos e reporte de bugs
    • Fórum: anúncios de projetos e discussões
    • Wiki: coleção e curadoria de projetos

Compartilhamento de apps

  • O compartilhamento de apps é possível por links no formato /os/#app
  • Busca promover, com foco na comunidade, a criação e disseminação livre de apps, bibliotecas e assets

Conclusão e direção

  • O 90s.dev é uma plataforma de API que projeta e define o próprio ecossistema de game makers
  • Busca um ambiente expansível de criação de jogos na web em que qualquer pessoa possa criar, publicar e usar apps com facilidade
  • É uma ferramenta de desenvolvimento de jogos voltada para o futuro, baseada em colaboração comunitária e na filosofia de plataforma aberta

2 comentários

 
lazyhack 2025-05-23

Fico curioso para saber como é o próprio motor do jogo.

 
GN⁺ 2025-05-22
Comentários no Hacker News
  • Compartilhando a experiência de ter acordado às 2 da manhã em um dia de fevereiro e simplesmente começado a programar, numa situação em que já estava cansado de esperar; seguiu escrevendo código e acabou criando uma ferramenta de criação de jogos baseada em API, uma engine de jogos e jogos em si, percebendo que sua verdadeira paixão está no design de APIs; também compartilha como acha incrível ver pessoas encontrando uma paixão desse jeito e se dedicando a ela

  • Agradece o elogio e lamenta não ter conseguido explicar bem a essência do projeto; na prática, a API é a parte mais interessante, mas isso não fica aparente por fora, o que é frustrante; acha que deveria ter esperado até ter mais exemplos mostrando a usabilidade inovadora da API e se arrepende de ter lançado cedo demais

  • Dizendo que é o autor deste projeto, agradece pelo feedback; sente claramente que o lançamento foi antecipado e afirma a intenção de melhorar os vários pontos levantados e voltar em alguns meses

  • Acha que não foi cedo demais, elogia o projeto como algo muito legal e extremamente superprojetado; considera o melhor uso possível da famosa metáfora do bike shed e fica impressionado por terem implementado até um sistema reativo próprio

  • Considera que o timing foi perfeito para o Show HN; ao procurar o tour Hello World, conseguiu entender intuitivamente que tipo de projeto era; se a pessoa já tem experiência com PICO-8 e React, fica ainda mais interessante; também considera sábia a escolha da proporção 16:9, opinando que a proporção quadrada do PICO-8 é estranha

  • Agradece por ter lançado cedo e recomenda fortemente a estratégia de lançar com frequência, mencionando que 10.000 repetições são o caminho para o sucesso e enfatizando que uma tentativa só é apenas o começo

  • Mensagem de incentivo dizendo que não foi um lançamento cedo demais e que o autor está indo muito bem

  • Embora não tenha aprofundado muito, confessa que está sendo secretamente ainda mais atraído por essa sensibilidade retrô; talvez o conforto sentido ao lembrar tempos antigos, mais simples e tranquilos, reapareça quando vê projetos assim

  • Pergunta se o app de paint funciona; tentou no Firefox e no Chrome, mas mesmo após escolher uma cor e clicar, nada é desenhado, e também não há nenhum erro no console; em outro ponto, elogia a forma como a estética dos anos 90 foi recriada com sucesso: no começo pareceu algo mais terminal dos anos 70 ou 80, mas olhando melhor percebeu que os anos 90 realmente eram exatamente assim, e demonstra expectativa pelo desenvolvimento futuro

  • Menciona que lamenta a confusão; só desenvolveu até o seletor de cores e o resto ainda não foi implementado, mas acha que conseguirá terminar em menos de uma hora; ao mesmo tempo, explica que a intenção de desenvolvimento era justamente recriar, com estética dos anos 90, a diversão e o poder de desenvolver apps GUI; quis manter só o encantamento, sem os incômodos, e por isso escolheu o nome 90s.dev

  • Menciona a possibilidade de ainda não estar implementado; se clicar no botão “hash” no canto superior esquerdo da janela e selecionar “View Source”, dá para ver que só a UI está mockada, e na área de rolagem só aparece código com um padrão decorativo

  • Também não funciona para mim

  • Não entende completamente o projeto em si, mas ficou muito encantado com a estética; acha curioso como uma certa atmosfera emocional e elementos visuais, por si só, podem impactar fortemente os sentimentos das pessoas e despertar mais interesse

  • Pensa em como explicaria a ideia: queria fazer um pico8 mais conveniente de usar, então criou o design e o protótipo em 320x180; ao mesmo tempo, queria todas as conveniências do VS Code e suporte a TypeScript, então acabou planejando uma plataforma na qual se pode criar e distribuir o que normalmente estaria contido nas abas do pico8; olhando agora, sente que isso também foi lançado cedo demais

  • Gosta da estética em si, mas acha que a proporção 16:9 não combina com PCs dos anos 90; prefere a sensibilidade única dos monitores CRT, que eram mais próximos do formato quadrado

  • Agradece e desabafa que explicar é algo muito difícil; confessa que este texto também foi uma tentativa de explicar da forma mais curta possível o que criou; mesmo numa versão curta, sente que o conteúdo continua inevitavelmente vago, então diz honestamente que vai desistir

  • Acha o projeto muito legal, mas sente que começar é um pouco difícil; sugere que seria bom ter um walkthrough simples sobre como criar um minijogo

  • Agradece e explica que, no momento, a forma de criar jogos é igual ao tutorial de criação de apps, mas pode ser feita criando uma custom view e sobrescrevendo o método draw; para desempenho, é ainda melhor criar e usar um OffscreenCanvas, e ainda não há uma API que encapsule WebGL2 de forma mais conveniente; promete que no futuro certamente fará um tutorial em que até iniciantes possam criar um jogo completo por conta própria; explica que, por enquanto, como o foco atual está mais em apps, está priorizando o desenvolvimento das ferramentas de criação de jogos (sprites, mapas etc.); compartilha o link do tutorial Hello World

  • Considera o projeto extremamente interessante e diz que se sentiu imediatamente de volta à infância; também gosta de pico8, mas pertence mais a uma geração que cresceu com desktop e GUI, então pico8 parece uma geração cedo demais; este projeto desperta uma nostalgia parecida com comprar CDs de novo

  • Apresenta também o Picotron, feito pelo desenvolvedor do Pico8; explica que é um sistema operacional desktop semelhante ao Pico8, mas com um pouco menos de restrições; não tem experiência prática, só viu GIFs, mas sente que o paradigma do projeto é parecido, no sentido de ser orientado a uma “plataforma” dentro da qual se pode construir um pico8; acha que, por caminhos diferentes, ambos perseguem o mesmo ideal

  • Travou no primeiro passo do guia Getting Started: baixou helloworld.zip localmente, abriu filer.app.js na web e clicou no botão mount com helloworld/app como drive name, mas nada aconteceu; ficou confuso sobre como enviar o arquivo zip para a instância do 90s.dev

  • Agradece pelo feedback e diz que provavelmente a pessoa está usando Firefox; essa função depende de showDirectoryPicker, que o Firefox não suporta, então recomenda usar o Chrome; além disso, no drive name deve ser inserido apenas o nome, sem caminho algum (por exemplo, “foo”), e promete corrigir o guia em breve; depois disso, foo/helloworld.app.js ficará ligado ao caminho local real

  • Diz que gostou muito da estética dos anos 90, especialmente da fonte; percebeu que se sente muito mais atraído por design dos anos 90 do que por pixel art no estilo dos anos 80

  • Faz uma crítica à landing page: chama o projeto de “game maker” e ao mesmo tempo diz que “não é um game maker”, o que soa contraditório e confuso; aponta falta de consistência na terminologia

  • Lembra que naming é um problema notoriamente difícil e o considera uma das tarefas mais difíceis da ciência da computação, junto com invalidação de cache