Skip to content(if available)orjump to list(if available)

Show HN: 90s.dev - game maker that runs on the web

roskelld

Trying to load it on Firefox (Floorp Browser variant 11.26.0) and the examples get stuck on the `Loading` screen. Moving my mouse over it draws the cursor and leaves it imprinted on screen so you get that permanent trail effect.

In the console I see:

  Failed to load ‘https://90s.dev/os/fs/run?  code=H4sIAAAAAAAACk2QMW%2BDMBCFd%2F%2BKa4QEKAiiKlMVs1Rqlw4dmy0GjsSNsRE2TVKL%2F16DSYq3d3ef797jTas6A6zlCVgIEnhFabBL4L1TfbtP4IMVKGb5BQPUnWogzJTOHJN%2B65AQdmF8%2BiJtOxR9hfqNS65PWBFSKqkNlKqXBigE0SaeS1yWrhDFQHPfTn%2BY6HG9vjMtkyjcyP%2Fv%2BqbThp3xc%2BxEFiRr8AVWJxRCwUV1olrBkBCAnTcBmv8itXc0GOUABSvPR%2BdGVtRurtvp1fWQO86R3jYcWUvtdi668pQCGLwaGi72PYWQPWbmiCb0%2BYG6RtEboyRocxNIQ90XDTchsNJwJal1QQx5KXh5hgZ3mR9e0IvV1gfFKtaaSI7JHSYQKwisHMDwBvUhHhZHZf6q2Z1X%2B1HtMh9STmJCpqzTWpW99uHGfz0j7XEYAgAA’. A ServiceWorker passed a promise to FetchEvent.respondWith() that rejected with ‘TypeError: Array(...).keys().map is not a function’.

Seems to work fine in Chrome though.

90s_dev

Thanks for letting me know. Hmm, I don't know what Floorp is doing differently. I'd need more of a stacktrace. It works in regular Firefox though. Feel free to paste a stacktrace and/or stacktrace screenshot on the issues page and I'll take a look.

90s_dev

Hi, author here.

Thank you everyone for the feedback. It's clear that I launched this far too soon.

I'll work on the pain points you all noted, and come back in a few months.

electroly

It's just right for a Show HN. I was able to find the Hello World tour and grasp what's going on here, from previous PICO-8 and React experience. Looks pretty cool, and I think 16:9 is a good pick. PICO-8 being square is awkward.

90s_dev

Thank you to you and the other replies. You're very encouraging. I'll keep iterating, making it more usable and its usage more clear. Maybe I can at least finish at least a few tasks while it's on HN's front page(!!!) based on everyone's feedback. Going to work on finishing the paint app right now, hopefully done within an hour.

dapperdrake

Thank you for launching early.

Definitely launch often.

10,000 iterations. One down. 9,999 more to go.

worthless-trash

No sir, you didnt launch too soon. You're doing great.

winslow

Does the paint app work for anyone? https://90s.dev/os/#sys/apps/paint.app.js

I tried in both Firefox and Chrome on Linux and picking colors and clicking I can't draw anything. No logs in the console that alert something is wrong.

On a different note I think you've captured the 90s really well. I had a moment of realization that the 90s really were like this. On first look I was thinking this was more 70s/80s terminals. Looking forward to seeing where you take this.

90s_dev

Oh, no, sorry for the confusion. The color picker is as far as I got with that app, it's relatively new. I can probably get it fully working within an hour though.

Also thanks, that's exactly what I was going for! I wanted to capture the fun and excitement and raw power of creating GUI apps in the 90s (but without all the inconveniences). Hence the name 90s.dev

90s_dev

Working on paint app[1] now:

- [x] Add canvas with semi-transparent background

- [x] Make canvas resizable by dragging corner (min 1x1)

- [x] Show grid on canvas if grid button is checked

- [x] Make zoom adjustable by clicking and dragging zoom number up/down

- [x] Show selected color as square over canvas during mouse move

- [x] Allow click/drag to change square colors

- [ ] Support loading/saving bitmap

Hopefully I can finish it while this comment is editable! :D

As features are added, you will see them in the source code. Either:

1. Click the top-left button and click View Source

2. Download helloworld.zip from Downoad SDK and view /fs/sys/apps/paint.app.js

3. Open https://90s.dev/os/fs/sys/apps/paint.app.js in an incognito window

These all show the same live copy of the source for the paint app. The reason for the incognito window is because the service worker compiles TSX to JS at runtime.

[1] https://90s.dev/os/#sys/apps/paint.app.js

sureglymop

Hey don't stress yourself out okay :) This is so cool, cooler than 90% of stuff I see usually see in these posts.

electroly

I'm not sure it's implemented yet. If you click the "hash" button in the upper-left of the window, you can click "View Source". From there you can see it's just a mocked up UI, the scroll area just draws pinstripes.

jszymborski

Not working for me either.

duxup

I can't say I fully understand what this is / the capabilities, but man I love the aesthetic.

It's interesting how an aesthetic can make an emotional impact and draw a lot more interest.

90s_dev

I think I figured out how to explain it:

I basically wanted to make a much more usable pico8 for game prototyping. Hence the 320x180 design, and this prototype: https://90s.dev/v1/ But I also wanted the full convenience of VS Code, including full type checking and autocompletion support for TypeScript. So I designed it to be a platform that can be used to make and publish the things that pico8's tabs contain.

Now I see that I released this much too soon.

fidotron

I like the aesthetic, but 16:9 and 90s computing together is just wrong.

The back breaking not quite square trinitron monsters were the best.

90s_dev

I chose 320 x 180 because of Animal Well. In fact, the whole app was originally conceived as a way for me to make an Animal Well style game, but more conveniently than using Pico8 (Billy Basso implied once that he used Pico8 to prototype Animal Well before moving to C++). I still think 320 x 180 is the right size for both games and game makers.

For example, here's a very early (mostly broken) prototype of 90s.dev

https://90s.dev/v1/

Because of 320x180, it can fit the code editor and the mapmaker or spritemaker on the screen at once, and each tab is big enough to be usable.

90s_dev

Thanks!

Explaining stuff is so hard! In fact, this entire article is just me trying to explain what this is in the shortest way possible.

Maybe the shortest version is: 90s.dev is an API around a 320x180 web canvas, designed specifically for making games and game maker tools, with sharing capabilities built-in, and an innovative GUI for making game maker tools quickly and easily.

No, that's still too vague. I give up.

dr_kiszonka

I would put your text under "Welcome to 90s.dev." If possible, I would further simplify it. I took a stab at it below but I am no marketer (or a game maker),

90s.dev simplifies making games and tooling for game creators via:

- an expressive API around a 320×180 web canvas,

- built-in sharing capabilities,

- an innovative GUI.

Each bullet would link to a relevant part of the documentation. I think you also need a page with examples.

90s_dev

Thanks, I'll definitely consider using that in the next launch.

dflock

Show examples of things built with it?

90s_dev

So far, only the built-in apps are made with it.

You can click them on the desktop-thing when you open the app.

So far the only finished app is fontmaker: https://90s.dev/os/#sys/apps/fontmaker.app.js

Their source code for all built-in apps are in https://90s.dev/os/helloworld.zip (found on https://90s.dev/getting-started/download-sdk.html)

johnisgood

Is 320x180 generally enough for anything interesting?

90s_dev

Animal Well uses 320 x 180

https://en.wikipedia.org/wiki/Animal_Well

(In fact I partly made this app so I could make an Animal Well clone.)

danielvaughn

It really is. It’s almost harder than building the thing. Every time I try explaining my side project, I end up just saying “you know…it’s easier if I just show you”

90s_dev

Yep, that's why I decided to make the pages able to have interactive demos. Though only the hello world tour and the refs guide use it so far.

nico

Looks very cool, just kinda hard getting started

Maybe you could have a little walkthrough of how to build a mini game with it?

90s_dev

Thanks.

The current method of building a game is the same as the walkthrough for building an app[1], except you make a custom view and override its draw method. For higher performance, you can create an OffscreenCanvas and draw into it however you want. There's no API to wrap WebGL2 more conveniently than this yet.

I definitely should and will wirte a guide that takes you from nothing to a full fledged game. But right now, the guides are all geared towards making apps, since before we can make games, we need to make gamemaker tools, like spritemakers and mapmakers.

[1] https://90s.dev/getting-started/hello-world.html

danielvaughn

Love the idea. Ever since I played Dreams on PS4, I’ve been curious about collaborative game development interfaces.

90s_dev

Collaboration has always been one of my favorite things. Shortly after starting this project, the focus began to center around making sure users could create first-class apps and libraries and easily find and use them in their own creations. Much of the API evolved around supporting this idea.

eranation

Love it, and congrats on shipping! I might be missing something but your pitch would be a 10x better launch if I could find some basic demo games developed with the engine, unless I just didn't look in the right place. Looking forward to the next update!

90s_dev

I haven't made any games with it yet. I barely finished any of the game making tools. The platform itself is relatively stable, which is what I spent so much time on. And the hope was that the community would help make the game making tools and the games. But maybe you're right, maybe I have to finish some game maker tools, finish some games, and finish some tutorials to make game maker tools and games, and then relaunch in a few months.

wonger_

Congrats on shipping!

Based on https://90s.dev/getting-started/hello-world.html, it seems like JSX meets pico8. Is that a decent description?

90s_dev

Thanks! Well, kind of. The JSX is mostly for making the apps that comprise gamemaker components, like pico8's spritemaker and mapmaker tabs. Once those apps are made, you can use them to make game assets. But those apps run in the same canvas that games would run in. A mapmaker and a game would use the same GUI for drawing into the canvas. But a game would probably create a single View and override its draw method to draw most of the game, though it could use JSX to build up the views that comprise game panels like Minecraft's inventory views.

makapuf

Nice, does it work on Firefox?

90s_dev

I took great pains to make sure it does. The one thing that Firefox doesn't support is mounting a local drive so you can develop your app, library, or game more quickly, which needs https://developer.mozilla.org/en-US/docs/Web/API/Window/show...

Thoreandan

Mentioning the licensing up front would be nice.

90s_dev

It's basically MIT. I used to have it injected at the top of the source files. I forgot why I took it out.

rubabu

Do you have a video walkthrough of how this works?

90s_dev

I tried to make it even more interactive than that. If you click any of the links on this site that start with `/os/#` then it will open (or close) an iframe under it that actually launches the app you're linking to. There's also an interactive demo on the hello world page: https://90s.dev/getting-started/hello-world.html

Sayyidalijufri

I think it little bit hard to start getting started

90s_dev

You're right. I definitely need to put more work into making very full tutorials for this.