10 ms·
Porting Zelda Classic to the web
- stuckkeys 4y agoDo you want Nintendo to have a bad day? Because this is going to stress them out now.
- als0 4y agoThis is an awesome explanation about how to port a real (and tricky) native project to WASM/Emscripten. Sadly, the game itself seems to crash in Safari after walking around for a bit.
- simion314 4y ago>the game itself seems to crash in Safari after walking around for a bit. Apple users need to ask Apple to use a tiny bit of their fortune to make it possible for developers to test Safari and Safari Beta on their preferred OS/device, otherwise small projects can't support it.
- als0 4y agoI wholeheartedly agree
- 1970-01-01 4y agoThis is as awesome as it is illegal :) God speed to OP. https://torrentfreak.com/images/storman-judgment.pdf https://torrentfreak.com/images/storman-judgment.pdf https://www.documentcloud.org/documents/4615448-Nintendo-Loveroms.html https://www.documentcloud.org/documents/4615448-Nintendo-Lov...
- throwmeariver1 4y agoI don’t believe you read the article there… he ported zquest an engine remake which you can play with your original ie. self ripped Zelda rom.
- deleted 4y ago[deleted]
- 1970-01-01 4y ago"I ported Zelda Classic to the web. You can play it here–grab a gamepad if you have one!"
- crtasm 4y agoYep, I thought they'd just include some user made quests/content to showcase the web port but it defaults to loading a replica of NES Zelda.
- hoten 4y agoI'm wondering if it could be prudent to at least make the default quest be one of the custom quests. And maybe remove the remakes of the original games (1st, 2nd, and BS Zelda). For the classic quests that remake original games, they are made in the ZQuest engine so I'm not distributing any ROMs. However, there are some videogame music files which may be ripped from the ROMs (not sure on their origination). And the graphics are obviously taken from the games too. Although, pretty much every quest uses some sort of copyrighted material (these are fan games after all). Not sure if any of this falls under fair-use.
- hoten 4y agoI just did the bare minimum and set something other than the original Zelda as the default quest.
- deleted 4y ago[deleted]
- roastedpeacock 4y agoNintendo have had a conflicted stance about community projects over the years. From threatening UltraHLE (early Nintendo 64 emulator) developers back in the late 90s to largely ignoring the Wii exploits and homebrew scene in the mid-to-late 2000s to attempting to hire private investigators to identify and implicate 3DS homebrew developers in 'illegal' activities. A similar case is when the PS3 Slim was released without OtherOS support and later removed from existing consoles with a firmware-update that really incited research and development into the PS3 console security, which led to a full break around late 2010 and Sony attempting to retaliate with smear-campaign and prosecution(s) for copyright infringement across the USA and Europe. Some of those were more successful than others. There have been public emulators for recent consoles from Nintendo and Sony and they've managed to stay up without any cease-and-desist or lawsuits so one would imagine they are doing something correctly to protect themselves (such as not being associated with piracy and some of the shady monetisation involved with that).
- marginalia_nu 4y agoI remember about 20 years ago there was a (IIRC) Java Applet-based multiplayer clone of Zelda: A Link to the Past that was sort of a forerunner the to MMORPGs we see today. It changed names to Graal Online because of the lawyers. Thinking back to it, it was really ahead of its time, not only because it was massively multiplayer, but it had a great level editor and was doing user-created content in the late '90s. --edit-- Oldest I could find on the wayback machine is from 1999, but that's a later version that was a standalone exe. http://web.archive.org/web/19991012175711/http://graalonline.com/index.htm http://web.archive.org/web/19991012175711/http://graalonline... --edit 2-- Here's a nice writeup: https://graal.in/t/graal-zelda-online-historical-thread/14203 https://graal.in/t/graal-zelda-online-historical-thread/1420...
- airstrike 4y agoSounds like that story is worth a submission of its own!
- marginalia_nu 4y agoThere's probably enough material to write a whole article about it. I just thought it was funny how history repeats itself.
- w-ll 4y agoThere were MUDs and Roguelikes way back. I personally consider Ultima Online is the genesis of modern MMO's
- marginalia_nu 4y agoUO is actually roughly the same generation as Graal. There were several of these fairly creative stabs at the problem before WoW came along and really defined what a MMO is. I think in many way Neverwinter Nights' persistent worlds is another noteworthy entry. They weren't massively multiplayer, but I think more like a cross between Baldur's Gate and a MUD.
- popmatrix 4y agoVery neat to see this isn't just a re-implementation but provides some modernization by providing extra menus, and persistent storage. Great work. Helps make me feel a little less bad to download multiple MBs for what would otherwise be a small emulator + 64KB ROM :) edit: typo
- BoorishBears 4y agoI don't know if you're familiar with Zelda Classic, but it wouldn't be comparable to the 64KB ROM either way Zelda Classic is a very open ended game engine that happens to have Zelda 1 assets baked in I recall people making entire Metroidvanias with it
- hoten 4y agoYeah, I thought it was really important to make it a usable as possible. Quest makers can just share a link directly to their quest, and they can get people playing their stuff with zero effort. No driver issues, no downloading and trusting random executables.
- lelandfe 4y agoThe site's theme makes code unreadable when the OS color scheme is Light: https://i.imgur.com/2Sduvye.png https://i.imgur.com/2Sduvye.png This is happening because the CSS uses `prefers-color-scheme` media queries – you can't use those and also have a site theme switcher.
- xahrepap 4y agoZelda Classic holds a special place in my heart. My older brother downloaded it thinking it was just a Zelda 1 clone. I discovered it had a quest editor. And it was a very magical moment for me. I spent hundreds of hours never completing any of my projects. It was the first online community I ever joined and actively participated in. Eventually I yearned for for power and discovered Dark Basic. Now I’m a software dev. Zelda Classic was a major spark in my life. And it’s a really cool piece of software. 100% original code, (obviously the default assets are lifted… from another project). It’s got to be a 20 year old project at this point.
- BoorishBears 4y agoI followed a very similar path: never getting very far in many many different projects I started with it as a kid, but having it serve as a motivator to work with other tools like Dark Basic, GameMaker, RPG Maker, etc. Almost as instrumental as my dad's Ti 83 Plus in my eventual career path
- xahrepap 4y agoGameMaker and RPG Maker just never quite stuck with me the way Zelda Classic did. But my kids are getting to that age where they want to "make games". So I'm hoping something like that would be fun for them. I remember getting the Ti83+ in High School and trying to make a Snake game. I followed a tutorial, and I barely knew what I was doing. But man, was it fun!
- k__ 4y agoHaha, cool! My developer career also started with gaming. The StarCraft map/script editor was my entry drug.
- markus_zhang 4y agoBack then I spent a hell lot of time trying to figure out how Blizzard managed to order corsairs to cast spells on certain area. Years later figured out there was an internal functionality not exposed to outsiders.
- birdyrooster 4y agoDoesn't load, but its the thought that counts
- zamadatix 4y agoTIL about Zelda Classic which has apparently been around a long time https://www.zeldaclassic.com/development-history/ https://www.zeldaclassic.com/development-history/ Very cool port, I like that it tries to integrate it into the browser features instead of calling it a day after compiling. The lack of D-pad support is a bit jarring considering gamepads are supported but it was still very playable.
- hoten 4y agoYou should be able to reconfigure the controls to use the dpad instead of the joystick. The menu is behind the settings dropdown (click to see): https://imgur.com/a/hQEEVTt https://imgur.com/a/hQEEVTt Might make sense to have dpad be the default.
- kin 4y agoI'm ashamed I haven't heard of Zelda Classic. As a Nintendo fanboy (my github handle is kintendo), I thank you! Also thank you for this work! When WASM was first announced this is the kind of project that I envisioned we'd see more of. Instead, everything has been mobile-centric and app-centric but you give me hope.
- CyborgCabbage 4y agoThere is also https://www.neilb.net/n64wasm/ https://www.neilb.net/n64wasm/ , but you have to bring your own rom.
- bilekas 4y agoThis is amazing work.. And infact this is the first "Chrome APP" I have allowed to be installed! >WebGL does not support that, so the entire shader needed to be redesigned I'm blown away how WebGL has come along. But then theres people like this. Great job!
- kbenson 4y agoWow, the link[1] to the custom games ("Quests") made using the engine shows a lot of things that look fun to play. 1: https://www.purezc.net/index.php?page=quests&sort=rating https://www.purezc.net/index.php?page=quests&sort=rating
- deleted 4y ago[deleted]
- hoten 4y agoIt's really amazing what some people have made in this thing.
- HanClinto 4y agoThank you! I had never heard of Zelda Classic before, but I'm also not much of a Windows gamer. Porting it to WASM indeed lets me play this when I wouldn't otherwise -- thank you! Awesome work!!
- swayvil 4y agoI assume there will be a world-editor and multiplayer
- joe__f 4y agoOh this is super exciting! I used to be on the dev team for ZC as Joe123 back when I was a teenager, I mostly worked on the scripting language. I left the community about 10 years ago and I haven't seen anything about it since then. It'll be great to have a play on this sometime
- gwbas1c 4y agoAwesome! One very minor suggestion: Can you tell me what keys to use (in the UI)? I figured out the arrow keys, but I just don't know what keys map to A & B.
- axutio 4y agoIt seems like Z, X, A, and S are mapped to A, B, L, and R respectively! There's some other information as well in the about panel in the top left.
- hoten 4y agoI'm pretty limited in what I can change in the game's actual UI (those "A" and "B" prompts in the game are literally graphics, not text I can just change), so I shoehorned all that info in the About menu up top.
- tadbit 4y agoThis reminds me of The Mana World https://www.themanaworld.org/ https://www.themanaworld.org/ An MMORPG based on the game Secret of Mana, started around 2003-2004.
- ilaksh 4y agoIs there any work to unbundle web assembly applications from the browser? And further, break apart the monolithic web platform API bundle into something like device drivers? Because let's say you just wanted a 2d game engine using SDL without shaders and using the mouse. Why do we need to drag the entire browser with 1000 APIs and features into it? Just add something like a framebuffer and mouse input to web assembly. Distribute via IPFS or something.
- hoten 4y agoWell, you need some sort of underlying platform to run primitives on. Wasm just isn't enough, and isn't meant to be. But yes, Wasm is not just for the browser, you can run it in Node. Or a custom runtime: https://wasmer.io/ https://wasmer.io/
- ilaksh 4y agoI am very aware of all of that. The idea that web assembly is not meant to be the platform to run primitives on stems from the political and technical approach initially used to get web assembly inserted into browsers. The basic concept is that it was much easier for people to accept if it was "only the compute part" and also practically speaking only made sense to leverage the extensive UI and other functionality of the browser. Which made it very easy to say it's just for compute. It's amazing that people are still stuck on that. That just goes to the power of PR and poor adaptability of the average brain. Even Brendan Eich was in a web assembly issue wondering when they were going to add some kind of minimal UI functionality. Look at for example the web assembly shell and WASI to see how input / out has reluctantly been added to make it so these systems can have some utility on the server. The only real reason that there hasn't been something like a serious extension to WASI for UI things is because people accept the status quo. We will forever ship a large monolithic overlay operating system controlled by a single megacorp and everyone will use that. Except for one "competitor" which actually is also mostly controlled by the same megacorp.
- soylentgraham 4y agoSo, your complaint about wasm is that to make it useful we have to bundle it with a browser full of 1000's of APIs. And your solution is... start bundling Other APIs (mouse, keyboard, presumbly touch, a frame buffer) into wasm runtimes? Then I guess later people will also want, midi, serial/pipes, audio, simple GUI, shaders, opengl, accessibility, screen readers, sockets, account sign in, webcam acess, notifications ... All in a nice cross platform bundle
- MasterScrat 4y agoIt reminds me: a decade ago, I had the idea of porting Baldur's Gate 2 to the web: http://lumakey.net/labs/battleground/demo1/ http://lumakey.net/labs/battleground/demo1/ I initially played with EMSCRIPTEN as well, starting from GemRB, an open-source reimplementation of the engine. But that was boring, as I wasn't really getting any sense of how things were working under the hood. So I started reverse-engineering the various file formats (a website called IESDP had most things figured out already) and converting them to PNG, JSON and other web formats. At that point I only knew PHP which made it a pain to work with binary data. Then, I started rebuilding the game from scratch: pathfinding, streaming huge maps using small tiles, animations... 10 years later, there's still that one single room and single character that were implemented, but it was still fun times.
- hoten 4y agoThat was literally how I first approached this problem of getting Zelda Classic quests to work in the browser. I had initially failed to port it with Emscripten, so I reverse engineered the quest binary format and started painstakingly recreating the engine in JavaScript [1]. I got pretty far but there would have been years and years of tweaks to get it just right, so I gave up. [1] https://hoten.cc/quest-maker/play/ https://hoten.cc/quest-maker/play/
- astlouis44 4y agoBaldur's Gate 2 (demo) in WebAssembly. You're welcome! https://personal-1094.web.app/gemrb.html https://personal-1094.web.app/gemrb.html
- MasterScrat 4y agoAmazing! did you make this? any more details anywhere? what is the license?
- anthk 4y agoOn sprites, the Fanwor project has some which are lookalike to the ones of the Zelda for the NES. https://git.tuxfamily.org/fanwor/fanwor.git https://git.tuxfamily.org/fanwor/fanwor.git
- causality0 4y agoConsidering how DMCA-happy Nintendo is I'm surprised this is till up.
- evouga 4y agoI was the main developer and webmaster of Zelda Classic for several years in the mid-2000s. Nintendo knew about us because disgruntled users reported us in retaliation for forum drama, but they never came after us. Probably because we were never prominent enough for them you care, but we liked to imagine we were protected by someone high up at Nintendo.
- causality0 4y agoI wonder if you'd just been around since before Nintendo got so extreme and were grandfathered in. If Nintendo will take down the likes of AM2R and the Unreal Engine remake of Bob-omb Battlefield they'd certainly take down a straight copy of Legend of Zelda.
- hoten 4y agoHave you made your way to the ZC developer discord yet? By the way, clearly I'm a fan of your work, thanks for helping make ZC!
- ubermonkey 4y agoNo word of it a lie, one reason I bought a Switch was to have access to Zelda again. I am 52 years old.
- fijiaarone 4y agoAnd I have trouble compiling Apache from source.
- toastal 4y agoI absolutely remember printing off a guide in color to work with Zelda Classic as a kid so I didn't tie up the phone lines with the internet
- googlag878 4y agoJust today I ended up giving up on HTML5 gamedev because of the Chrome extra frame of lag issue: https://www.vsynctester.com/ https://www.vsynctester.com/ If you have Godot or Unity or some other game engine that does web exports, try playing the native and web versions back-to-back of any game that draws a software mouse cursor, and don't hide the native hardware cursor so you can compare how much the software cursor lags the hardware cursor. The cynic in me says Google deliberately adds lag to browser games to guard the multi-billions of Play Store game revenues. Web audio has 300ish millisecond latency on many (not all) Android devices.
- vanderZwan 4y agoOh thank goodness, so it's not just me who is driven insane by the mouse lag in browser input. And while I understand your cynicism, I don't think it's deliberate as much as it's complacency, given that it's latency issues all the way down when it comes to modern user interfaces. A literal decade ago Microsoft Research uploaded a video highlighting how much of an effect minimizing latency for touchscreens had on the user experience[0]. The vast majority of tablets still utterly suck in this regard a decade later, and I wonder if any manage to get below the 10ms barrier. And of course there is Dan Luu's famous 2017 article on computer latency in general[1]. [0] https://www.youtube.com/watch?v=vOvQCPLkPt4 https://www.youtube.com/watch?v=vOvQCPLkPt4 [1] https://danluu.com/input-lag/ https://danluu.com/input-lag/
- 3np 4y agoGreat writeup! Trying it out, it does not load in Firefox 81 (potentially due to some restrictive security setting here?) but runs great in Chromium after an update.
- giorgioz 4y agoPURE GENIUS the photo at the very end showing the gadget connecting a smartphone with an Xbox controller: https://hoten.cc/images/zc/gamepad.jpg https://hoten.cc/images/zc/gamepad.jpg
- poulpy123 4y agoNot on the web but there is a game engine dedicated to zelda-like game https://www.solarus-games.org/en/games https://www.solarus-games.org/en/games