Hacker News new | past | comments | ask | show | jobs | submit login
QuakeJS – A Quake Port to JavaScript with Emscripten (quakejs.com)
357 points by zaiste on April 6, 2020 | hide | past | favorite | 158 comments



EDIT: This appears to have died, now that the content servers for quakejs have died. My servers are no longer starting anymore :(. For those reading on later, there was peak of 10 on both servers just before it went down

  ioq3 1.36_GIT_4f7d7bf-2014-02-01 emscripten- Feb 23 2014
  ----- FS_Startup -----
  Error: Failed to download and parse manifest, Couldn't load 
  http://content.quakejs.com/assets/manifest.json. Status: 500
---

Giving that at the time of viewing, the multiplayer servers are down, have some of mine:

http://www.quakejs.com/play?connect%20185.230.223.84:27967

http://www.quakejs.com/play?connect%20185.230.223.84:27966

You will want to:

Go into settings via esc and set your name, and maybe also turn the game down, it's quite loud by default. Maybe also mouse sensitivity too.


https://openarena.live/

Here's a link to the open source version of Quake called Open Arena, compiled to WASM and using WebRTC for matchmaking.


The use of https://kosmi.io/ here is what I found more interesting. I've never heard of this service before but it's a great idea. Reminds me of some much less...polished chat services I've used in the past to group-watch videos. It's nice to see the concept fleshed out more with a public lobby and a Discord-like client.


Kosmi launched a bit ago, I first heard about it around a week ago on HN.


The models in OA seem unintentionally hilarious, alternating between stiff and low poly for some, and meticulously sculpted breasts for the others.


Adjusting the FOV and resolution is also worthwhile if you have a widescreen monitor.

Open the console with ~ and enter:

  r_mode -1
  r_customheight 1080
  r_customwidth 1920
  cg_fov 100
Simply replace the height/width and FOV with your desired values, and enjoy the game in native resolution and wider field of view.


Trying to connect now and all I get is the "AWAITING CHALLENGE... (n)" counter.

Am I doing something wrong?


Still works for me.


How do you run a server?


There is a doom 3 port to wasm too

https://wasm.continuation-labs.com/d3demo/


The last "real" Doom imho. Although both Doom 2016 and the new Doom Eternal look and run amazingly well, the thing with weapon alternate firing modes and weapon mods are just not my cup of tea. I don't want a shotgun that fires grenades and has full auto modes and whatever the hell the other mods do. They lost a bit of the nostalgia with all those extras, or maybe I'm just getting too old (?).

This browser port runs really great, when the game came out it was one of those that made people have to completely migrate to the next generation of hardware.


I'm a huge DooM fan and have been playing since I downloaded the original off of a BBS back in the day and I have to, respectfully, disagree.

With DooM Eternal, there's actually a fully running port of DooM and DooM II inside the game and jumping into that after playing the main game for a while feels incredibly seamless. DooM (2016) and DooM Eternal feel like they took the scary shotgun ballet of the originals and added verticality and modern game mechanics to it. The only thing I think they missed an opportunity on are the dark levels that were in the originals. Not every level in the original games was a full speed dance with demons.


Of course, agree to disagree. But in particular, having to constantly perform glory kills and chainsaw attacks to get more than 5 bullets or having to snipe coordinates XY on enemy Z with alternate firing mode N to weaken him and only then succeed in taking them down is, in my opinion, not that "Doomy". But I get what you're saying, they can't just make the same game again of course. Also, these days expectations from new games are way bigger than they were back then. Still all great games.


I don't think that's a fair assessment. You don't have to constantly perform glory kills or chainsaw attacks and there's not a single instance in the game where you have to kill an enemy with an alternate firing mode to a specific region. I think you're exaggerating for effect, and that's fine, but I don't feel like you'd need to do that if your argument had any meat to it. You're right that it's not the same game (because that would be boring) but to say that it's not "Doomy" because of reasons that aren't even accurate makes your whole argument fall apart.

Case in point, there's already a pistol-only playthrough of DooM (2016) and I know people are already working on shotgun-only playthroughs of Eternal.


Ok, I was exaggerating a bit but as far as I remember, the game specifically breaks the flow to pause and show you a little instructional clip [0] [1] on how to better kill each enemy, so there's that. But hey, your point is made, I was just throwing my opinion out there, I don't think we need to continue nitpicking since tastes are tastes.

0 - https://youtu.be/5Zp_RMO19aM?t=633

1 - https://youtu.be/x9pL9X9V4iU?t=1536


Ok. I just feel like "breaking the flow" is a lot different than having to use a specific secondary fire mode of a weapon at a specific location on an enemy and stuck out to me because, if that was an actual thing in the game, it would make the game unplayable and annoying to me.


Huh, I don’t think Doom 2016 has those. Or at least I didn’t get them when I played it through just recently.


DooM 2016 does not but Eternal shows you a codex entry the first time you encounter an enemy that highlights their weaknesses. None of them have to do with an alternate fire mode or anything else, so it's still an exaggeration, but it does tell you which weapons are particularly effective. Shields, for example, blow up if you use the plasma rifle.


Sure, you don't have to do any of those things, but you'll be seriously disadvantaged if you don't because the games are designed around these mechanics. Maybe it's exaggerated, but on the other hand, as a fan of both Doom and Doom 2016 it seems your response downplays the difference these mechanics and using them to your advantage makes, and I agree with GP that these are substantial differences that fundamentally make the games play differently.

Not in a bad way (well, mostly. I still loathe the weapon/armor/character upgrade part of the game). There's no real mowing or herding like in the more intense levels of Doom and Doom II, but instead we get really intense fights that are cool in a different sense.


> Sure, you don't have to do any of those things, but you'll be seriously disadvantaged if you don't because the games are designed around these mechanics.

That's not the case, though. You might be somewhat disadvantaged, but not seriously.

On my first playthrough on normal difficulty I essentially only used the Super Shotgun. I can't remember using the Chainsaw for ammo, but I did use the BFG a handful of times.

The developers have even said that a goal of theirs was to make this "playstyle" (using only the SS) less viable in Doom Eternal, because it was too simple and powerful. It might have been on a NoClip podcast, I can't remember OTOH.

I've not played Eternal yet, I'm waiting for updated nvidia drivers to hit my distributions repositories.


> That's not the case, though. You might be somewhat disadvantaged, but not seriously.

Well, that's not my experience. I initially hated the concept of glory kills, and especially the blinking effect on staggered monsters. Even just turning the blinking effect off made the game much harder in my experience. I had to learn how to appreciate the mechanic instead. Maybe you are just a much better player than I am and could cope better with the disadvantage.


I share similar feelings. I feel like Doom 2016 (and Eternal) are more of a sequel to Brutal Doom (a popular mod for original Doom games adding finishing moves, over the top weapons and over the top gore/violence effects).

I've always viewed original Doom as more of a survival horror. People laugh now, but Doom was a genuinely scary game back when it released. Gamers nowadays obviously won't be scared by it. They also might play on lower difficulty levels or with cheatcodes. So rather than "you are stuck here with the demons", most gamers will play it as "the demons are stuck here with you", and this is what Doom 2016 reflects.


I have to disagree. Anyone who played DooM and DooM II more than just a single time through the campaign is more likely to view the originals as bullet ballets rather than as survival horror. DooM levels that seemed "scary" were only scary because demons could jump out at you and give you a jump scare. Once you know where the monster closets are, it's not that scary anymore.

If you played the original's multiplayer at all, then you'll remember how quick and frenetic it was and how that changed the play style for the single player levels. The new games reflect that much better than Doom 3, imo.


Totally agree, the thing about Doom is the movement and the speed. I watched a few hours of Doom eternal and within 2 minutes of watching the physics, my only thought was "this is Quake".


Even on higher difficulty levels - I think except for the highest - the classics aren't hard. Modern games have more timing mechanics, more verticality, more methods of movement or control to master. I'd gather most middle of the road FPS players these days could breeze through the hardest modes of Doom and Doom 2.

I think they were difficult at the time because they were so novel. Modern games are novel in different ways and challenging in that novelty. Doom feels somewhat more "solved".


Essentially mouse aiming (meaning just rotating left-right in Doom) coupled with strafing breaks Doom 1 and 2. The enemies simply aren't designed to deal with a player that can seamlessly sidestep and precisely aim at the same time. If you were to play with keyboard only you might find the OG Doom quite a bit more challenging.


that's impressively smooth. I was expecting it to be yet still impressed.


Quake's source code is very hackable. I forked ioquake3 for a personal project and it was surprisingly easy to add WebRTC support to the C codebase, so you could play it in your browser over WebRTC :)


That is really impressive! Are you still doing stuff with WebRTC? It is quite a niche area, but lets you do lots of interesting things.

If you are ever interested in getting back into the space you should come join us working on Pion (A Pure Go implementation of WebRTC). I would love to hear about what else you did! [0] I am just really trying to build a intellectually curious/supportive community of RTC. Right now everything is so anemic community wise.

[0] https://pion.ly/slack


What was your experience with WebRTC?

I read some people tried to use it for multiplayer, but the performance suffered with more than 10 players.


Only played it with my friends, don't think a map ever exceeded 10 players. So I can't say much about scaling - although it was a client-server model over UDP and not peer to peer networking.


Ah, so you had a WebRTC datachannel between the clients and the server?


Basically yes, a custom datachannel implementation. Haven't updated it lately, but it's up at https://github.com/seemk/WebUDP


Pretty cool.

You don't happen to have some ping comparisons betwen WebRTC and WebSockets?


Sadly no, but I don't think there's much of a ping difference on a good network. With WebRTC (datachannels in UDP mode) you just get the benefits of UDP (or lack thereof :)).


I see.

I had the impression UDP would lower the average ping, because you wouldn't have to wait on lost packages like with TCP.


It looks like the multiplayer here does similar, no?


If I remember right, this one is over WebSockets and the server is compiled to js as well. My version had a native server and browser clients.


This is great. Does anyone remember quakelive? Around 2010 it was playable in the browser via a browser plugin. Loved playing it on my macbook. I don't recall if the plugin was flash or a java applet but when support stopped for those quakelive moved to steam as a desktop app.

Edit: Per wikipedia it used NAPI https://en.wikipedia.org/wiki/Quake_Live


I remember playing QuakeWorld (Quake 1) back in the day. I was about 8 years old, I think? My memory may not serve me perfectly on this, but I remember ending pretty high in the rankings at the end of each match at one point.

Then I got some serious nightmares from it (well, yeah, I was 8) and had to delete it. (by deleting the icon from my desktop... I was so innocent back then)


Not sure the specifics, but I don’t think it was flash or java because you had to install a native extension.


Ah it looks like you are correct. It used the NAPI. Per wikipedia:

> In November 2013, citing the planned deprecation of NPAPI browser plug-ins by major browsers, Quake Live began to phase out its browser version and began migrating to a standalone client. However, this change necessitated the removal of OS X and Linux support from the game.

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

Now I remember why I stopped playing as I only had a macbook at the time.


If it required a custom plugin, what was significant about playing it in a browser?

To me, the appeal of a browser game is that it is contained and you don't have to worry about malware.

(Notwithstanding the occasional vulnerability, but those get fixed.)


Yes! It was essentially Quake3 but in the browser. Not sure when they transitioned away from the free browser-based version, but it's still available on Steam.


This prompted me to take a look at quakelive again. It's been years since I last played but I was hooked for a while. This might get me back into it.


If you're interested on a more modern game with similar gameplay, Diabotical is in open beta soon https://www.diabotical.com/

I was in the closed beta - it really satisfies the quake style deathmatching itch I've had lately.


I liked Reflex Arena the most out of the post-Quake Live arena FPS'. It's a huge pity that it didn't really take off. I feel like they made a terrible mistake hedging their bets with catering to the CPM community. From what I saw it alienated the VQL players by using CPM mechanics, and the CPM players shunned it in the end because it wasn't an exact clone of CPM. This was a poor decision, in my opinion. One that ended up dooming what could have been an amazing game.


I remember that! Perfect LAN game


I did a few game jams with my flat mate years ago, and I was really impressed what is possible with the web in terms of game development.

Because of game pad support and fullscreen the browser worked superb for couch-coop/local multiplayer games, but the high latency network support of browsers made it kinda hard to do online multiplayer games.

Which is kinda ironic, because the browser is made for online interactions.


Disappointed to find out this is not Quake 1



Why? Quake III was the best Quake.


Hugely contentious statement. People still play the original Quake competitively. It's still one of the most thrilling and intense multiplayer FPS experiences. There aren't many games that are as fast or have a physics engine that can be so impressively manipulated.


Quake 1 & 2 were story-driven.

Quake III was just arena combat. Looked great, but not the adventure of the first two.


It depends on when you discovered the game and what you played most. Quake I was the first "true" 3D game (with levels that could stack rooms vertically), and many people remember it very fondly. Personally, I really enjoyed Quake II. I did play Quake III when it came out, but the lack of a single player mode meant the game had no backstory at all.


When Q3 came out everyone was bored of single player. It looked like the whole industry was going that way and that single player FPS was pretty much dead. Then Half-Life was released and blew everyone's minds. I don't think anyone has been able to craft an experience like HL to this day, it's like they just "get" how interactive fiction should feel rather than being a shoot-em-up interspersed with cutscenes.


This is wrong, Half Life was released in 1998, quake 3 arena in 1999.


And then came Unreal - the most advanced single-player shooter of that time.


Not exactly, Unreal the single player game is also from 1998.

If you meant Unreal Tournament, it was released November 22nd 1999, just a few days before Quake 3 Arena that was released on December 2nd 1999. UT was also mostly a multiplayer arena type game like q3a. It was a really hyped up battle of giants back then between those two. Good times.

EDIT: corrected release dates after checking wikipedia


Descent came out in 95. Quake was 96.


I should have said the first true 3D FPS. Descent is in a different genre that is a little more niche.


Terminator Future Shock predates it, had 2D guns but the world and enemies were polygons and it even had driveable vehicles.


Interesting. I just went and had a look at that. So this game had true 3D levels where you could have multiple floors sitting one above the other? If that's the case, interesting that it's so unknown.


In terms of the gameplay, Quake III has nothing in common with Quake 1 or 2.


My understanding is that action-oriented multiplayer games in browsers have always suffered because they can't use UDP. How does this achieve multiplayer from a networking perspective?


Lots of people use WebRTC DataChannels for this! The real tech here is SCTP, and it is pretty amazing. It runs over UDP, and allows you to send messages larger than MTU. You can also choose ordered/unordered and lossy/non-lossy depending on what you are trying to do.

We worked on a Pure Go implementation[0]. If you are interested in learning more. Most people (all browsers) use libusrsctp the C implementation.

[0] https://github.com/pion/sctp


HTTP/2 with stream prioritization and server push kinda replaces the need for UDP.

We can't allow UDP to be sent directly from browsers because that would enable any random bit of JavaScript you load to launch a DDoS attack.


HTTP/2 doesn’t replace the need for UDP at all, not in the slightest. For latency-sensitive applications, it provides no advantages over HTTP that I can tell.

The problem is with TCP, and the problem with TCP is that it prioritizes in-order delivery, and missed packets cause head of line blocking. HTTP/2 is designed to solve head of line blocking, but since it’s built on top of TCP, it can’t solve the issue in this case.


UDP was never "needed". It's been used in real-time applications because there are latency benefits to datagram protocols.

And browsers can indeed use UDP. WebRTC data channels are SCTP over DTLS, which is UDP based.




All I get is Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://content.quakejs.com/assets/manifest.json. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).


If I wanted to learn to write browser-based games what would be a good place to start? I know some JavaScript but am not particularly enamoured with the language. Should I learn TypeScript plus some framework? (React?) Or how about something functional like Elm?


Frameworks aren't very relevant for games. I'd go with Typescript (because it will tell you about some errors earlier and provide code completion support if properly set up) and WebGL. Then do everything in the canvas and essentially ignore the fact that you have a browser with a DOM etc.

An option is to target WASM and write the game in Rust or C++, using Emscripten WebGL bindings. This is harder but allows you to write high performance games that would run too slow in Javascript.


Impressive port. I still remember back in the day, when setting a background image in Windows resulted in a big performance hit.


PSA: The game broke my laptop's speakers in 10 seconds.

I'm grateful that my laptop speakers are easily serviceable.


Wasn't quake ported to JS via the Java version like 10 years ago?

https://code.google.com/archive/p/quake2-gwt-port/

Still, it's cool to see it ported via other means.


Yup, it was done with Google Web Toolkit, mostly By Stephen Haustein and Joel Webber (I contributed the OpenAL emulation and some other bits of code)

Here’s a deep dive we did at Google I/O on it https://youtu.be/aW--Wlf9EFs


Wow this really runs like crap on Android!

Is there no way to control it without a mouse? After dropping in, I could hear sounds in the level room, with occasional odd crackle distortion.

Pretty cool.

https://i.imgur.com/1LvPTWh.jpg


This reminds me of my port of Quake 1 to Rockbox (for MP3 players): https://news.ycombinator.com/item?id=22162834


Completely off topic: do you have a Rockbox-compatible, dumb, tiny, cheap music player to recommend for running? I burned through three or four Sansa Clips and Sansa Clip Pluses over the years, but those lines are now discontinued (and I refuse to participate in the scalping refurbished market), and my last one just died.


The AGPTek Rocker is one of our last targets still in production and can be acquired for around $50. I haven't used one myself, but from what I hear it's fairly decent but not perfect.


Yep, that's really awesome. Quick question: If one implemented the whole thing again, using three.js or even raw webgl, would it be more performant that the compiled javascript version?


Controls don't work on FF74 / Webrender / Wayland.

The browser reports the mouse as captured, but mouse movement and movement keys have no effect. Click to shoot does work though.

(Chrome works fine)


FF74 on Windows works great, so it sounds like it's something specific to that setup. Can't use Wayland on my Linux laptop, but I should at least try this on that config to see if it works on X.


Works under FF74/Win10


Wow! Q3F! That was my absolute favorite game back in the day, and I was always sad how it fell off. I couldn't get a game loaded here yet, but looking forward to it.


There goes my week -- this runs wicked smoothly in my browser.


Even on my Thinkpad W510 from 2010(!) it runs very smoothly – incredible. If only it were as good security-wise… (no TLS?!)


What are the threats from not having TLS? There's no information to protect here is there?


There is always something to protect – in this case, your browser and your system. How about zero-days in WebAssembly that a man in the middle might exploit?


I get a "A mutation operation was attempted on a database that did not allow mutations." when I try to start any match.


If you are using Firefox, I think this is the related issue (IndexedDB not working in private mode): https://bugzilla.mozilla.org/show_bug.cgi?id=781982


Yup, FF in a private window. Thanks!


I've picked up working on this if anyone needs any help configuring.


I wish Quake Live had never been killed off.


check out https://openarena.live :)

it allows playing quake3 in-browser and even allows hosting your own server over webrtc


The fact that this can now be run in a browser on a laptop rather than a high end gaming rig is indeed amazing.


This is a 20 year old game.


is it ? quake 3 is a 1999 game. It's closer in time to MS-DOS 6.22 (1993) than to Windows 10 (2015)... and it's not even reaching 60fps on my 1080...


I hits 60 fps steadily on safari & chrome on my macbook.



... the issues with Adobe Flash are quite a bit more varied than “politics.” At best, it was always a drag on mobile platforms, reducing battery life and hogging resources, and at worst it’s pretty much best known now for its security issues that ultimately helped further its demise. If you want to go a step further, in 2011 you could also have probably delivered your game as an NPAPI extension and got pure native code instead. You could deliver these via extensions, even in Chrome.[1]

Native Client also came to fruition in 2011, and Firefox chose not to support it. I doubt many would chalk that up to just politics, either, but I think it’s fair to compare.

[1]: https://developer.chrome.com/apps/npapi


The first part of this isn't quite correct if I am remembering correctly. Flash (or at least the engine behind it) is still on both Android and iPhone platforms through its app equivelant called Air. There's a lot of things that use Air... to give you an idea, Angry Birds was first written and deployed to Air. So though Apple complained about performance issues, they were not the biggest deal. If I was to take a guess, it was mainly to prevent the web from competing with the app store. So I think his comment is at least somewhat right. Apple didn't want an app store competitor (think Kongregate or Newgrounds competing with the games part of the app store)


Flash on Android existed, and I actually used it, and I can pretty much guarantee you it was never going to be competitive with the way it ran on contemporary smart phones. I don’t get how Flash applets on a website were ever at risk of competing with the app store. HTML and PWA is a more compelling option today than I think Flash ever was, and Apple contributed greatly to that fact with Webkit...


I tried it too and it wasn't the best. But I have a general feeling it was because those particular games weren't really well optimized for the phone. Then again, they were a it more complex than the other games on the phone at the time... but alas.

I'm not sure if it would have grown into a competitor either way. But some people definitely tried to - Kongregate at one point built an app specifically for mobile flash games. Naturally google took it down (you aren't allowed to host 'app stores' on the 'app store'). But it had quite a few downloads. That's just for something on the app store, not directly on a website, but I think the point is that maybe if things had gone a bit differently it might have been more competitive.

For PWAs, yeah, today, they definitely are, but it's taken a long time for them to come that way.

Hope your having a good day.


Of course, though, you can distribute your own app stores on Android via sideloading a la F-Droid and Epic Games. Perhaps in 2011, it just didn’t seem as doable, or maybe sideloading was disabled by more vendors... not sure.


Apple speech I guess.

It was perfectly fine on any Symbian and Android device I got to play with, and much better than J2ME ever was.


One time I accidentally left SpinControl.app on for a week and went about my business (SpinControl, RIP, was an app that logged stack traces any time an app didn't flush its event queue for more than a few seconds -- i.e. caused a beachball). A week later I came back and checked it to find something truly astounding: with hundreds of logged spins, 100% of them were due to flash. Usually in Safari, but sometimes in other embedded webkit contexts. You would expect a few spins to creep into that list from other causes, and indeed I triggered one with a mail index rebuild just to be make sure it was watching more than the browser process, but no, SpinControl was working fine. 100% of the beachballs in the last week were due to flash's suckiness, to say nothing of power usage or security.

Flash's performance issues, at least on the mac, were very real. Good riddance.

> much better than J2ME ever was.

If you lower the bar to the ground anyone can jump over it.


iPhone never had Flash I don’t believe. I was an Android user at the time and the only way Flash on my device could be described is in terms of locomotive incidents. Flash games and applications almost worked, although virtually none of them were responsively designed, and they mostly worked pretty poorly with touch controls, and unlike HTML there was no way to reasonably work around or improve this at the browser level, because it was just a big proprietary black box.

Worse than this was sites that used Flash in non-essential ways like ads. If you had Flash enabled on a blog or other site that just happened to pop up a flash ad, it would make the whole page janky, greatly hurting pan and zoom functionality and killing your battery life for no benefit.

Worst of all, Flash frequently crashed my browser and sometimes even caused the entire phone to reboot.

Phones now have better CPUs and GPUs and I am relieved beyond words that Flash is totally dead now. It was never ideal for what it was most popular for (videos, streams) which only became apparent after the alternatives stabilized. But even for games and other software, I just don’t think the NPAPI browser plugin model was worth keeping. Would the problems with touch usability and accessibility be resolved at some point? Maybe I don’t know - I presume Adobe Air was able to do it for native apps, although my experience with Adobe Air apps was also not very good.

J2ME may have been not the most thrilling platform, but I’d not be surprised if it had a better security track record at the end of the day. I disabled Flash before most people, and was using a userscript to use the then-new and buggy <video> tag for YouTube. I still, before that point, had been personally hit by a Flash 0day, and a couple of my friends got hit later by a malicious Mediafire Flash payload. There was a period of time where it felt like there was a new use-after-free in Flash every month. And when you look at all of the functionality stacked into this unsandboxed blackbox to keep it competitive and alive, I don’t feel it’s terribly surprising.

I don’t enjoy everything about the bloated platform that is the modern web, but the design of it is a lot more sound. It’s designed more as a platform than a product. You get a lot of totally brand new functionality, like WebRTC, that just wasn’t really going to happen with Flash.

Flash had to die. It wasn’t a part of the web platform, it was part of an Adobe product that was shoehorned into web browsers. If it has a good legacy, I reckon it will mostly be from nostalgia fueled denial.


Then you had a much much better experience than I did, across Symbian (UIQ3), Windows Mobile and Android.


It's intellectually dishonest to imply de-adoption of flash was just "politics". Flash had all sorts of problems, we should be happy we managed to get rid of it. Back in the day I was too cynical to think one day we can do so.


Not at all, it remains to be proven that WebAssembly is any better.

I eagerly wait for the first batch of CVEs.


Html5 and modern javascript already replaces flash as a target. I don't know if the tools are the same. Webasm isn't necessary for that, its use is accelerating cpu intensive parts of a web page.



I don't know what point you are making here. These projects could have been done by compiling to asm.js - webasm isn't what makes them technically possible, it just makes them faster, smaller and parsed faster. You have been told all of this before.


Just like you have been told before that WebAssembly is nothing new beyond politics, all the way back to 1961.


Above you linked projects that you said happened specifically because of webasm. Here you are saying it is nothing new 'since 1961' (what does that mean exactly)?

How have you made CPU workloads run at native speeds across all major browsers before we webasm?

Many people have corrected you on your extreme and bizarre vendetta against webasm. You are the only one saying it is both nothing new and somehow enables new projects that you don't like.


As shown at the start of the thread, with Flash Alchemy, already in 2011.

Those people are the ones with an agenda to spread WebAssembly as above anything else in regards to safety, and the very first attempt to have a bytecode format for C and C++ code, when IBM and Unisys mainframes, CLR, Brew, Tendra, PNaCL, Alchemy have been there first.

My agenda, is only to prove a point that, it isn't that much safer than PNaCL, and the only thing we got from its adoption is a 10 year delay having a general purpose VM in the browser.

Ironically, Chrome is anyway who calls the shots in WebAssembly, as per browser market share.


You think all the people in this thread talking about quake 3 and doom 3 running smoothly are part of an agenda against ancient bytecode formats for IBM mainframes?


Only those pushing for WebAssembly as if it was the best thing since the Web came to be.


Flash had more issues than "politics."


Yeah lets see how many security issues we get to see in WebAssembly sandboxes once researchers set their sights on them, given that they already found a couple on JS engines.


Wasm has been here for years already. There's no flood of issues waiting for some cue to be released. It's no worse than any other part of the browser; probably better than some. Besides, modern browsers don't rely solely on one sandbox anymore. There are many levels of protection now.


CPUs were deemed unexploitable, until researchers had a better look into them.

The only thing that makes WebAssembly safer than its predecessors, is that most security researchers haven't yet bothered with it.


Which is already true for any type of software.

Bugs exist everywhere. Of course you finde some if you put in the effort. That is not something that marks the quality of the code.


Not all ideas were created equal. Parent's contention (one I agree with) seems to be that the contemporary browser-as-app-deployment-platform paradigm is a bad idea.


I didn't say Wasm is unexploitable. You're attacking a straw man.

Wasm vulnerabilities are worth real money. Bug bounties are tens of thousands of dollars to hundreds of thousands as part of exploit chains. If people aren't finding many, your explanation will have to be a little bit better than "they haven't yet bothered".


Currently there are better rivers for panning, but rest assured they will come.

https://i.blackhat.com/us-18/Thu-August-9/us-18-Lukasiewicz-...


You bring this nonsense up in every webasm thread and every time it is explained to you that webasm does no IO and is contained in the same environment as javascript. Every time you either bring up details that have nothing to actually do with webasm or you say something vague about possible security problems in the future.

If you have real criticism based on real information, let's see it.


You mean the same JS engines that already have several entries on the CVE database? Yeah, really safe.


It has a looooong way to go before it's as bad as flash.


Not really, I already posted a couple of initial steps in a sibling comment.


It would have to run a marathon to catch up. Initial steps are hardly an indication that it will.


Can you link one that has to do with webasm? Are you saying that you think javascript is less secure than flash?



All of these are speculation about the future. Most have nothing to do with webasm at all.

The first is about webgl (that has nothing to do with webasm)

The second is about using javascript with intel speculative execution exploits.

The third is grasping at straws, saying that call center scams would be more obsfuscated, even though javascript or asm.js can be just as obsfuscated, if not more.

The fourth is about crashes in the webasm JIT

The last is about -theoretically- executing arbitrary javascript. Heavens no.

What is the real reason you have some crazy crusade against webasm? You go to great lengths to grasp at any straws you can. It isn't that big of a deal. It is a more direct way to JIT cpu intensive parts of a web page. Get over it. Incredibly, the alternative is to run actual native instructions by downloading a binary.


Survivor of the anti-PNaCL, Java and Flash crusade I guess.


To be clear, because you have seen other VMs, you are desperate to spread complete misinformation and lies about webasm?

Funneling your own frustrations into lying and spreading false information on the internet is not something a reasonable, emotionally healthy person does. Think about all the other people that do that in other areas of discussion. Those are your peers when you do this.


I am not desperate at all, it is no different than WebAssembly advocates spreading false information about its "safety" or novelty.

In fact I rejoice that WebAssembly, despite all the attempts to be presented as safe and novel, is becoming the mechanism to bring back to life all the plugins that where killed in name of WebAssembly.

I will give 5 years time for WebGL/WebGPU + WebAssembly to rule the majority of multimedia driven websites, with a new generation of Flash like tooling.

Then you call tell the world how much safer and novel WebAssembly is.


What about 2010 without flash?

We ported the Java version of Quake2 using GWT in 2010

https://youtu.be/aW--Wlf9EFs


Even better.


Amazed that this runs on mobile too (but no controls). Wow!


while this is neat, the mouse input is complete garbage, but its a zero friction way to show someone the mods I guess


very cool. may have to add instagib mode to this


Please, somebody port Quake 1 to iOS.


Now go win some $$ on

nanoquakejs.com


Oh. My. God.

This is amazing.


Best thing: You can play at work! I did that for some time when I was bored


Another interesting implementation of Quake in the browser is this: https://openarena.live/


This is how news site will look like in 5 years (tech wise not appearance wise). Good luck running adblock on it.


Good point, actually. How do you disable a poster on a wall which is rendered as part of a texture inside a 3D game?


There have been plenty of ways to inject textures into games to replace the ones that are built into it. In online games, like this one, all it takes is a host file that redirects the texture addresses with something else.


I guess this is cool. Not a big fan of "port everything to the browser" though. I really don't want gaming to go any more in the direction of SaaS than it already is. There is already too much rent-seeking.


This train has left the station already. It's more and more difficult to actually buy software these days, and million ways to rent it. And even if you manage to buy it, you often need an online component.


Where is the rent-seeking involved in this decision?


In the future, where every stupid little software program runs in the cloud, and private ownership of bits is history. My wallet dies by death from a thousand cuts and I have no ability to peek at game internals or tinker with data files


Sounds like just about every "cosmetic" premium currency microtransaction "live service" "episodic" triple A video game that's come out in awhile and they didn't even need the browser to do it!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: