8 ms·
Show HN: 90s.dev – Game maker that runs on the web
- duxup 1y agoI 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.
- fidotron 1y agoI 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 1y agoI 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/ 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 1y agoThanks! 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.
- dflock 1y agoShow examples of things built with it?
- 90s_dev 1y agoSo 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 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 https://90s.dev/os/helloworld.zip (found on https://90s.dev/getting-started/download-sdk.html https://90s.dev/getting-started/download-sdk.html)
- danielvaughn 1y agoIt 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 1y agoYep, 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.
- dr_kiszonka 1y agoI 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 1y agoThanks, I'll definitely consider using that in the next launch.
- 90s_dev 1y agoI 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/ 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.
- deleted 1y ago[deleted]
- makapuf 1y agoNice, does it work on Firefox?
- 90s_dev 1y agoI 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/showDirectoryPicker https://developer.mozilla.org/en-US/docs/Web/API/Window/show...
- Narishma 1y agoIt doesn't on Firefox ESR.
- wonger_ 1y agoCongrats on shipping! Based on https://90s.dev/getting-started/hello-world.html https://90s.dev/getting-started/hello-world.html, it seems like JSX meets pico8. Is that a decent description?
- 90s_dev 1y agoThanks! 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.
- nico 1y agoLooks 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 1y agoThanks. 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 https://90s.dev/getting-started/hello-world.html
- danielvaughn 1y agoLove the idea. Ever since I played Dreams on PS4, I’ve been curious about collaborative game development interfaces.
- 90s_dev 1y agoCollaboration 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.
- Sayyidalijufri 1y agoI think it little bit hard to start getting started
- 90s_dev 1y agoYou're right. I definitely need to put more work into making very full tutorials for this.
- eranation 1y agoLove 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 1y agoI 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.
- eranation 1y agoKeep shipping early and getting feedback. It's much better to get feedback early than to wait until everything is finished, so I don't think you should have changed a thing. My point is just in the title of the post, if you had a title talking about a framework (and saying you are planning to make it into a fully fledged game engine) that would probably get some people signing up for a waitlist etc. Looking forward for your next update!
- 90s_dev 1y agoI agree. I actually named my submission "Finally releasing 90s.dev" but the HN mods changed it to the current "Show HN: ..." title. They based it on the second section of my blog, which I changed to "New game making platform that runs on the web" and added a tl;dr section essentially clarifying that the HN title is not accurate (without blaming the HN mods; it was my fault). But yes I agree with the rest of what you said. What I should have done is added some kind of waitlist. Oh well. I'll keep that in mind for the next release I guess.
- rubabu 1y agoDo you have a video walkthrough of how this works?
- 90s_dev 1y agoI 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 https://90s.dev/getting-started/hello-world.html
- 90s_dev 1y agoHi, 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.
- dapperdrake 1y agoThank you for launching early. Definitely launch often. 10,000 iterations. One down. 9,999 more to go.
- 90s_dev 1y agoThanks! That's an encouraging way to look at it, as it allows me to ship something that's not 100% perfect yet. But I guess no matter how hard we try, it never really is, is it?
- johnisgood 1y agoUsually it never really is perfect, unless it does its job 100% without any bugs (which we may not be able to tell, but it is possible). I have projects that are completely finished, so I think. :D
- 90s_dev 1y agoThere is a difference though between showing off cool stuff and having the potential to show off cool stuff. I released my app in the latter phase, not the former, which is what I wanted to do. To be honest, I was just having a really bad day yesterday and was feeling really burnt out, so I just sort of gave up and released it, knowing full well I hadn't written the stuff to show off how cool this is just yet. I knew I should have waited. Oh well, lesson learned.
- johnisgood 1y agoI do not think it was premature to show it off, and you could always post a new submission a month or two from now. :)
- sneak 1y agoWhy limit it to Microsoft services (github and npm)? Why not let it import things from a URL? Looking forward to your WC2 clone!
- bpshaver 1y agoNot that you're asking, but https://www.littlewargame.com/ https://www.littlewargame.com/ is a good WC1/WC2 clone with a lot of good QoL features included.
- 90s_dev 1y agoMan I wish I was as good at pixel art as those people apparently are! That's part of why I made my app into a platform where you can build apps but also share apps, libraries, and game assets. I can't make a game all on my own! I'm hoping people make and share spritesheets with this, after someone makes a spritemaker app of course. I'll keep working on my basic one.
- 90s_dev 1y agoThanks! Actually I am planning on shifting it towards importing 'https:// https://' URLs directly. Honestly, the main difficulty I have is keeping full TypeScript support of remote modules. It's actually easier to do this if I import https:// https:// modules directly, though it's not as convenient as it could be[1]. But I'm also trying to figure out whether I should continue to compile TSX to JS in the service worker[2], which requires no special dev-time setup and allows publishing raw .tsx files anywhere on the net such as github, or require users to compile TSX -> JS ahead of time, which would require a build step. On top of that, I'm considering going further and making it so packages can import bare-specifiers like `import "somelib"` and publish a plugin to compile this into an https:// https:// import specifier. [1] https://stackoverflow.com/questions/79628025/is-there-a-way-to-alias-an-external-module-without-an-extra-file https://stackoverflow.com/questions/79628025/is-there-a-way-... [2] I currently use a service worker to map imports like `/os/fs/{ghb,npm}/...` to `jsdelivr.net/{gh,npm}/...` and compile them and return with the right content-type.
- winslow 1y agoDoes the paint app work for anyone? https://90s.dev/os/#sys/apps/paint.app.js 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.
- jszymborski 1y agoNot working for me either.
- 90s_dev 1y agoHow about now?
- jszymborski 1y agoWorks great!
- electroly 1y agoI'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.
- 90s_dev 1y agoYou were right, it wasn't at the time. It works now, except for undo/redo.
- 90s_dev 1y agoOh, 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
- Thoreandan 1y agoMentioning the licensing up front would be nice.
- 90s_dev 1y agoIt's basically MIT. I used to have it injected at the top of the source files. I forgot why I took it out. [edit] Just added MIT licenses to the top of all the files.
- roskelld 1y agoTrying 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 1y agoThanks 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 1y agoIt should be fixed now! Can you try it again?
- roskelld 1y agoTested and it works now!
- gtoast 1y agoI'm stuck on the first step of the "Getting Started" guide. 1. I've downloaded helloworld.zip to my local computer, I think. 2. I open the filer.app.js by clicking the link on the webpage. This open a 90s.dev instance right on the page. 3. Then i'm supposed to mount helloworld/app as app and click it, so i click the mount button, it asks for the drive name, hi put in helloworld/app and click mount but nothing happens. I must be missing how you're supposed to get helloworld.zip into the 90s.dev instance... how do you upload it into the instance?
- 90s_dev 1y agoThanks for the feedback. You're likely using Firefox, right? This feature relies on showDirectoryPicker which Firefox doesn't support. You'd have to use Chrome for the getting started guide. Also, the drive name shouldn't have a path. Name it something like "foo". I'll udpate the guide to reflect this. Then foo/helloworld.app.js will point to /some/local/path/helloworld.app.js, as long as you mounted "foo" to point to the directory at "/some/local/path"
- kleiba 1y agoBoo for "Chrome only"! Could you find a work-around to support firefox as well?
- 90s_dev 1y agoI took great pains to support Firefox, mostly in my service worker. Unfortunately when it comes to mounting drives for faster local development, there's nothing I can do until FF supports `showDirectoryPicker` However, you could just load up a local file server in your local directory (python -m http.server 8080) and import your file directly: import 'http://localhost:8080/index.js' Then put that one line of code inside usr/myapp.app.js and click it in filer[1] You'll have to use filer to create the file and edit it by right-clicking, then type it in and ctrl-s to save or use the top-left menu button. I'll add all of this to the website under some "Using Firefox" page or something, for people who can't stand Chrome. [1] https://90s.dev/os/#sys/apps/filer.app.js@usr/ https://90s.dev/os/#sys/apps/filer.app.js@usr/
- MrGilbert 1y agoI love what you did there! It's an awesome project. I directly traveled back to my childhood. While I love pico8, I think it's a decade too early for me. I grew up with desktop and gui. This feels like buying a CD again.
- 90s_dev 1y agoYou might also be interested in Picotron[1], made by the same guy who made Pico8. It's basically a desktop OS with the same basic design as Pico8 but with slightly looser restrictions. I've never really tried it, only looked at his gifs once a long time ago, but I think he and I had the same basic idea: make a platform that you could make pico8 in. We just went different routes. [1] https://www.lexaloffle.com/picotron.php https://www.lexaloffle.com/picotron.php
- 90s_dev 1y agoIt just occurred to me: Pico8 is to Picotron, as Tic80 is to 90s.dev or Pico8 is to Tic80, as Picotron is to 90s.dev
- sam1r 1y agoWhoa
- MrGilbert 1y agoThank you! Yes, I'm aware of picotron, I tried the very first version of it. I think it's also a great environment. I first bought Voxatron years ago, because I really liked the tech behind it, and got kinda sad that it didn't evolve. Anyways, thanks for pointing me to picotron! Think I'll have to keep an eye on both projects.^^
- 90s_dev 1y agoThanks. Oh man I remember buying Voxatron and thinking it was such a cool idea, but not knowing how to use it at all or what to do with it beyond the demos. I guess the guy behind it probably ran into the same issue. Still a cool idea.
- habedi0 1y agoThis is pretty cool!
- _zaidahmad 1y agoI'm not even from 90s but this is so cool!!
- 90s_dev 1y agoThanks! Hopefully it'll give you an idea of how fun it was to make GUI apps in the 90s!
- elxx 1y agoI terminated the shell process and immediately got hit with Windows 95 nostalgia. This is great.
- 90s_dev 1y agoHa, yeah. I intentionally avoided any ctx.clear() calls just so we could have mouse trails again when things crash :D
- glxxyz 1y agoWouldn't 320x180 resolution be more like the early to mid '80s?
- 90s_dev 1y agoIn the immortal words of Pitch Meeting's Screen Writer Guy, I'm gonna need you to get allll the way off my back about the name being innacurate.
- glxxyz 1y agoHaha, sorry if it's been an obvious thing to point out. You should see how upset I get at 'retro' games with inconsistent pixel sizes or pixel rotation. I like the idea of designing sprites etc. right on the system, reminds me of messing about on SEUCK when we were kids: https://en.wikipedia.org/wiki/Shoot-%27Em-Up_Construction_Kit https://en.wikipedia.org/wiki/Shoot-%27Em-Up_Construction_Ki... my brother found and uploaded one of his experiments years later: https://www.youtube.com/watch?v=1i8UhseK260 https://www.youtube.com/watch?v=1i8UhseK260
- bitwize 1y agoFor games, 320x200 (non-square pixels) or 320x240 were pretty standard resolutions up through the mid-90s or so.
- foobarchu 1y agoA critique on the landing (I have not played with anything else at all): it's very confusing to post this calling it a game maker, then have a list of things it's not include "a game maker", then in the following paragraph call it a game maker. The terminology is kind of all over the place.
- 90s_dev 1y agoI agree. To be fair, naming things is one of the three hardest problems in computing (the other one being cache invalidation).
- ojo-rojo 1y ago>One day this February, I just got up at 2am and started writing code. I was tired of waiting. So I wrote and wrote and wrote. That's cool. It makes me feel happy reading this, kind of inspiring :) >I found myself making an API for making game maker tools and a game engine and a game. It turns out I’m an API designer at heart. I guess I always kinda knew this. I like hearing when someone finds their passion and goes for it full throttle.
- 90s_dev 1y agoThanks. I failed to capture the essenence of what my project is. The APIs are really what's exciting. But you can't see APIs, they're like the wind, you have to see them in action, through their side effects. I should have waited until I had made more things that show off how innovative these APIs are. I released it too soon.
- ridruejo 1y agoNope. Sooner is better than the alternative in nearly every case! Also take HN feedback with a grain of salt …
- Bjartr 1y agoA rule of thumb is that if you're not embarrassed, you released too late. Human tendency is to want to dot every i and cross every t, but too often that leads to never releasing. I appreciate that you released when you did. It's looks great!
- stevage 1y agoOh boy, I love this aesthetic. That font, amazing. Apparently I'm much more into the 90s look than the 80s pixel art.
- pizzuh 1y agoI didn't dig into this deeply, but I miss this aesthetic more than I'd like to admit. I'm sure it reflects on simpler times, but there's some comfort in seeing projects like this for me.
- fjm2u 1y agoLooks good!