I just ported Quake III to the web with multiplayer and mobile support: https://thelongestyard.link/. I was hoping I could use this project to do Unreal Tournament as well, but it seems like it's not that playable yet.
I wish Epic had GPL'd their old releases the way id Software did. I'd especially like to have UT2k4. I played a lot of ONS-Torlan in college.
Instead of UT I may do Serious Sam next. Serious Engine was open sourced and there's already a web port (without multiplayer): https://www.wasm.builders/martinmullins/serious-sam-in-the-b...
I'm half-way porting another turn of the century game engine to emscripten but I'm a little stuck on the networking so it's pretty cool being able to have practical examples to reference.
Cool, which one? I've also done Cave Story https://thelongestyard.link/cave-story/ and I'd like to do a bunch of the old shareware classics as well.
Multiplayer on the web is tricky. For non-action games you can get away with WebSockets but for arena shooters or other action games I think UDP is important, and you can only get that with WebRTC and all the baggage that comes with it. I'm using a library called HumbleNet to handle WebRTC, but I had to make a lot of changes for it to be usable. https://github.com/jdarpinian/HumbleNet
Has there been any progress with using browsers' support for QUIC for latency-sensitive game networking?
There is WebTransport which is based on HTTP/3 (formerly QUIC), however it is not available in Safari (no surprise there) and also it does not support peer-to-peer connections.
WebRTC is available today in all browsers and supports peer-to-peer unreliable UDP.
Is there a reasonable networking library for just throwing data packets somewhere using WebRTC in browser, specifically with a client-server rather than P2P? I've probably started work on such a thing like 4 times now but I've never gotten very far because I always found that whole stack incredibly convoluted and onerous to work with if you're not using it for it's intended usecase, but I really would like to have a go-to library to make little multiplayer webgames that use UDP under the hood.
Yeah WebRTC is not a well-factored API. It's basically almost an entire end-to-end implementation of a video calling app Google acquired and bolted on the side of Chrome. If what you're making is not a straight video calling app then it's a very strange API to use. But it does work!
The problem with WebRTC for this kind of application is the need for a whole separate "signaling server" just for connection establishment, plus STUN/TURN, plus your actual application server makes three required servers. It puts a really high minimum on the complexity of any WebRTC app. For a client-server only application you might be able to combine all three servers into the same binary. I haven't seen a library that does that, but maybe it exists, I haven't looked extensively.
The HumbleNet library that I use provides an implementation of the signaling server for connection establishment, and for the client app it hides all the WebRTC complexity behind the BSD sockets API. So all you need to do is host the server.
In my case I'm porting an earlier variant of the Torque Game Engine, so making it work with WebRTC would really come in handy!
Nice! I thought about trying to port Tribes 2 but I never played it myself so it wasn't high on my list. My HumbleNet repo would be a good starting point but some changes may be required for it to work. It's not at the point where it can drop in and work on any game, although I think it would be possible to get there.
Oh, that is nice! Been a while since I saw anyone working with TGE. I miss the GG forums and the community around it.
I did Tomb Raider a while back:
https://eikehein.com/stuff/sabatu/
I'll upstream the work to tr1x (which I contribute to) at some point.
Wow, this is awesome! Is your fork public? I'd love to try adding some stuff like touch controls and save file syncing like I've done for Cave Story https://thelongestyard.link/cave-story/
Tim Sweeney is not quite as much of a bro of the people as John Carmack is. Sadly, as I like the guy otherwise.
His tweet on Linux a few years ago comes to mind: https://twitter.com/TimSweeneyEpic/status/964284402741149698
And Epic's removal of titles from stores: https://www.gamingonlinux.com/2022/12/epic-games-are-killing...
The Linux bit is so backwards. I realize I'm preaching to the choir.
His thinking perpetuates the problem, doing the more laborious thing of supporting Linux will net more freedom
It shows in their architecture for their respective engines, too. Unreal just isn't as nice compared to id Tech.
Do you develop professionally on current idtech code? Or are you comparing present-day, easily available Unreal Engine code to what id most recently made available under the GPL, which is essentially twenty year old code?
Given the easy terms of availability of cutting edge Unreal code vs. whatever id is doing nowadays, he's doing okay.
I think it was someone other than Carmack that was pushing for source releases and linux ports inside of Id. They stopped doing it a while before Carmack left even.
Ut2k4 is so fantastic, I still have a scar on my forehead from the first time I played the demo on a CRT sitting on a chair and my friend tackled me into it to "save me from a sniper". I would get up at 4am because I had a bedtime but no wakeup time and play 4 hours of CTF-Face instagib before school. Q3DM17 also holds a special place in my heart, I'm getting a tattoo of the "Impressive" emblem in a few weeks!
Not a day goes by that I don't pine for turn of the century FPS gameplay. (and maybe my turn of the century reflexes)
Instagib was the only way I'd ever play. And the bots in the game were actually (adjustingly) capable so I could play for hours just by myself.
UT's bots really helped at smaller LAN parties and get togethers. They weren't as competitive as professional players, yet could actually play the different modes and fill out the teams.
Before that point bots seemed only capable of team death match.
Haha this is incredible! I had a gap in my gaming years—I only enjoyed UT GOTY (a 2000 release?)—and sounds like the series carried the same kill streak sound bites over. Impressive is prob a safer tatt than HEAD SHOT!
If you have a copy of the game there's still playable servers using Openspy ( http://beta.openspy.net/en/server-list/ut2004 ).
I play regularly and the couple of servers I play on get full to the point nobody else can join...
I was pining for oldschool UT recently, and found that Xonotic (https://xonotic.org/) has done a decent job of filling that void.
The player base is small, and the skill ceiling is extremely high, but it's a shockingly solid piece of work for a free, open source game.
Nice. Did you use inolen/quakejs as a base, or new fork? Are you using WebRTC? Have you heard of HumbleNet? They also had a Q3 forked: https://hacks.mozilla.org/2017/06/introducing-humblenet-a-cr...
For the curious, FTEQW has an emscripten port as well, and FTEQW allows you to play Q1, Q2 and most Q3 maps: https://github.com/fte-team/fteqw/blob/1f9f3635f0aef3b2eed6b...
Also, the LvL LiveView is a great way to check Q3 maps in your browser: https://q3js.lvlworld.com/play/2043/media/633a9623b1b6458735...
What a time to be alive. :)
I did a new port of base ioquake3, and actually contributed changes back, so upstream ioquake3 now has decent Emscripten support. The multiplayer is using WebRTC DataChannel, based on HumbleNet but I had to make quite a few changes, as it was abandoned a long time ago.
Code is here: https://github.com/jdarpinian/ioq3 https://github.com/jdarpinian/HumbleNet
Ah, so you are the prestigious jdarpinian! Thank you for all that hard work, sir!
If they have a different username here, it feels wrong to out them. If they wanted, they could have said it themselves. You could have thanked them without tying the username together in a way that is Google-able.
the parent literally linked their own GitHub page...
and it is in their hn profile
UT2k4 deserves to live, but if we're being honest, there weren't a lot of people playing it during the last decade and a half. I wonder if being able to play it in a browser would actually improve that.
Even the latest UT on UE4 had like few hundreds of players at best.
Seems like the genre is just not popular.
With the genre being FPS, or what?
I'm not really a gamer. When I discovered original UT I'd play it at work because my home computers never had good enough graphics. I loved the atmosphere of many user-created maps.
Is there no similar experience that's popular today?
Arena FPS of the Quake/UT era have been supplanted by CoD-style tactical shooters, slower team-based FPS like Halo, hero shooters like Overwatch, and battle royale shooters like Apex Legends. I don’t think a popular pure arena shooter exists today. (Though Splitgate and, to a lesser extent, Halo Infinite scratch the same itch for me.)
I’m optimistic, though. Adventure games were dead for a while but eventually came back with a vengeance. I doubt the desire for quick, pure shooty fun will ever go away.
I had played UT2k4 almost exclusively for months before ever trying halo, since I didn't own a console. I eventually played at a get together at a friend's house and genuinely couldn't understand why Halo was so popular- the speed was so slow.
I eventually appreciated it a bit more, but UT will always have a special place in my heart.
Honorable mention to UT2k3's menu music:
https://www.youtube.com/watch?v=IberpcWz9mU#t=0m10s
The NFL themes had nothing on it.
Goosebumps
It kinda makes me want to play WarCraft II haha, similar awesome vibes!!
Impressive! :)
I managed to play some ONS-Torlan this past weekend with my friend on a pure LAN (no Internet), it was fantastic and just as much fun as I remember. I enjoy turning on lots of fun modifiers like low gravity, big head mode, berserk, etc.