16 ms·
QuakeJS – A Quake Port to JavaScript with Emscripten
- pgt 7y agoOh. My. God. This is amazing.
- tehlike 7y agoBest thing: You can play at work! I did that for some time when I was bored
- brobinson 7y agoI get a "A mutation operation was attempted on a database that did not allow mutations." when I try to start any match.
- astlouis44 7y agoAnother interesting implementation of Quake in the browser is this: https://openarena.live/ https://openarena.live/
- everdrive 7y agoDisappointed to find out this is not Quake 1
- kube-system 7y agoWhy? Quake III was the best Quake.
- tachyonbeam 7y agoIt 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.
- recursive 7y agoDescent came out in 95. Quake was 96.
- tachyonbeam 7y agoI should have said the first true 3D FPS. Descent is in a different genre that is a little more niche.
- whywhywhywhy 7y agoTerminator Future Shock predates it, had 2D guns but the world and enemies were polygons and it even had driveable vehicles.
- tachyonbeam 7y agoInteresting. 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.
- starpilot 7y agoWhen 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.
- lagerstedt 7y agoThe fact that this can now be run in a browser on a laptop rather than a high end gaming rig is indeed amazing.
- pjmlp 7y agoIt was already possible in 2011, but alas politics. https://www.youtube.com/watch?v=UQiUP2Hd60Y https://www.youtube.com/watch?v=UQiUP2Hd60Y https://adobe-flash.github.io/crossbridge/ https://adobe-flash.github.io/crossbridge/
- jjoonathan 7y agoFlash had more issues than "politics."
- pjmlp 7y agoYeah 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.
- modeless 7y agoWasm 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.
- pjmlp 7y agoCPUs 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.
- 7y ago
- AdrianEGraphene 7y agoNow go win some $$ on nanoquakejs.com
- deleted 7y ago[deleted]
- dvh 7y agoThis is how news site will look like in 5 years (tech wise not appearance wise). Good luck running adblock on it.
- Koshkin 7y agoGood point, actually. How do you disable a poster on a wall which is rendered as part of a texture inside a 3D game?
- dkonofalski 7y agoThere 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.
- the_duke 7y agoControls 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)
- kube-system 7y agoWorks under FF74/Win10
- Firehawke 7y agoFF74 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.
- mouldysammich 7y agoThere is a doom 3 port to wasm too https://wasm.continuation-labs.com/d3demo/ https://wasm.continuation-labs.com/d3demo/
- lgl 7y agoThe 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.
- skocznymroczny 7y agoI 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.
- AaronFriel 7y agoEven 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".
- dang 7y agoA thread from 2014: https://news.ycombinator.com/item?id=7247307 https://news.ycombinator.com/item?id=7247307 https://web.archive.org/web/20140301184841/http://www.inolen.com/articles/compiling-quake-3-virtual-machines-to-javascript/ https://web.archive.org/web/20140301184841/http://www.inolen...
- benjojo12 7y agoEDIT: 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:27967 http://www.quakejs.com/play?connect%20185.230.223.84:27966 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.
- cdbattags 7y agoTrying to connect now and all I get is the "AWAITING CHALLENGE... (n)" counter. Am I doing something wrong?
- starpilot 7y agoHow do you run a server?
- alouis44 7y agohttps://openarena.live/ 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.
- dmix 7y agoThe use of https://kosmi.io/ 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.
- 7y ago
- lxtx 7y agoQuake'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 :)
- cdbattags 7y agoIt looks like the multiplayer here does similar, no?
- lxtx 7y agoIf 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.
- k__ 7y agoWhat was your experience with WebRTC? I read some people tried to use it for multiplayer, but the performance suffered with more than 10 players.
- lxtx 7y agoOnly 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.
- tomc1985 7y agoI 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.
- tomcam 7y agoWhere is the rent-seeking involved in this decision?
- tomc1985 7y agoIn 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
- rezonant 7y agoSounds 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!
- dvfjsdhgfv 7y agoThis 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.
- gigatexal 7y agoThere goes my week -- this runs wicked smoothly in my browser.
- codethief 7y agoEven on my Thinkpad W510 from 2010(!) it runs very smoothly – incredible. If only it were as good security-wise… (no TLS?!)
- afro88 7y agoAmazed that this runs on mobile too (but no controls). Wow!
- k__ 7y agoI 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.
- ctdonath 7y agoPlease, somebody port Quake 1 to iOS.
- frompdx 7y agoThis 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 https://en.wikipedia.org/wiki/Quake_Live
- jjordan 7y agoYes! 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.
- frompdx 7y agoThis 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.
- debaserab2 7y agoIf you're interested on a more modern game with similar gameplay, Diabotical is in open beta soon https://www.diabotical.com/ https://www.diabotical.com/ I was in the closed beta - it really satisfies the quake style deathmatching itch I've had lately.
- ajxs 7y agoI 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.
- rjeli 7y ago
- airstrike 7y agoAll I get is Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://content.quakejs.com/assets/manifest.json http://content.quakejs.com/assets/manifest.json. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
- partiallypro 7y agoI wish Quake Live had never been killed off.
- hauxir 7y agocheck out https://openarena.live https://openarena.live :) it allows playing quake3 in-browser and even allows hosting your own server over webrtc
- lbj 7y agoImpressive port. I still remember back in the day, when setting a background image in Windows resulted in a big performance hit.
- athst 7y agoWow! 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.
- johnsolo1701 7y agoMy 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?
- leowoo91 7y agoafaik https://github.com/HumbleNet/HumbleNet https://github.com/HumbleNet/HumbleNet
- mike_d 7y agoHTTP/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.
- klodolph 7y agoHTTP/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.
- mypalmike 7y agoUDP 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.
- Sean-Der 7y agoLots 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 https://github.com/pion/sctp
- simlevesque 7y agoPSA: The game broke my laptop's speakers in 10 seconds. I'm grateful that my laptop speakers are easily serviceable.
- sitzkrieg 7y agowhile this is neat, the mouse input is complete garbage, but its a zero friction way to show someone the mods I guess
- protean 7y agovery cool. may have to add instagib mode to this
- deleted 7y ago[deleted]
- theunamedguy 7y agoThis reminds me of my port of Quake 1 to Rockbox (for MP3 players): https://news.ycombinator.com/item?id=22162834 https://news.ycombinator.com/item?id=22162834
- gspr 7y agoCompletely 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.
- theunamedguy 7y agoThe 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.
- atum47 7y agoYep, 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?
- jaytaylor 7y agoWow 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 https://i.imgur.com/1LvPTWh.jpg
- greggman3 7y agoWasn't quake ported to JS via the Java version like 10 years ago? https://code.google.com/archive/p/quake2-gwt-port/ https://code.google.com/archive/p/quake2-gwt-port/ Still, it's cool to see it ported via other means.
- cromwellian 7y agoYup, 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 https://youtu.be/aW--Wlf9EFs
- nomanlaghari123 7y agoHi To ALL This is noman here i am good writer and poet i have publish to many books but now i am getting start website you can check on below link https://bit.ly/2xRD80o https://bit.ly/2xRD80o
- cabalamat 7y agoIf 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?
- jonex 7y agoFrameworks 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.
- megamindbrian2 7y agoI've picked up working on this if anyone needs any help configuring.