Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Unreal Tournament 99 running on WASM (2017) (icculus.org)
212 points by klaussilveira on Oct 26, 2022 | hide | past | favorite | 111 comments


Once a few years ago I was working on some internal web-based dev tools at a company. Some of the users requested a "quake console" in the browser UI (a slide-down console)

I took it a step further and made an iframe-embedded version of Quake deathmatch pop up when you typed the konami code. It was a hit :)


You are the reason people dream of becoming computer programmers.


Worth mentioning this was first published in 2017

EDIT ...and now the title has been updated, so I look like an idiot!



WASM wasn't cool then? :)


UT GOTY edition is still my favourite FPS. Fortnite is still good, but feels more childlike than I prefer


UT99 GOTY always amazed me with how well it runs and plays on abysmal hardware, can lan party it on pretty much any PC


So when are we going to see modern Unity and Unreal games running on the web? Games seems like one of the last areas that is a holdout on desktop. We've seen terminals/IDE, productivity software, and even design software like Figma run in the browser, but not 3D games which is a multi-hundred billion dollar industry in it's own right.

Correct me if I'm wrong, but it seems like a massive opportunity for both game engine providers and portals, especially with the arrival of WebGPU on the horizon.


You already can, Unity has their own section of Unity on the web games you can play. They aren't graphically impressive usually but comes down to lack of development resources.

Then there's examples like Townscraper (https://oskarstalberg.com/Townscaper/) which are graphically nice and already playable on the browser. There are also many games on itch.io of varying quality, but IMO Townscraper is the nicest.

The problem of storage is also quite important, it's hard to push a high quality game on the browser when a lot of people won't stick around for the 10GB+ download needed, not like they would if they're downloading from the Xbox store or something like that. So it's a bit of a cultural issue as well on that front.


I don't think it's a cultural issue. The difference is you only have to download a game once from the store compared to downloading 10GB+ every time you load the webpage.


Quite a lot of cache storage can be used and can be expanded on as well if there was a serious demand for it. Browser games don't technically have to redownload the entire game every load. The reason I claimed it as "cultural" is because of how we view browsers and interactive media within them. We are totally fine with opening a games store app, clicking download, and waiting and playing. The same is technically possible within the browser, but people are far less likely to wait for it.

It's like sound. People are OK with video games with clicky sounds going through menus with background music playing, but find it very obnoxious if a website does the same. Not a technical problem, but one of culture and how we view the mediums.


No it can't, for security reasons.

Browser games have no idea how long their data is around and how big the cache actually is.


You need to design a web game around the download bandwidth, and only stream data right when it's needed instead of preloading everything upfront. Porting existing games with a different streaming model usually doesn't make much sense. And once you build a web game from the ground up anyway, there's little reason to use one of the humongous game engines like Unity or Unreal which have been designed for a very different data streaming approach.


Well, you don't need to download the whole world data-file to play the game. All you need is to stream whatever you can possibly interact in the next couple seconds.


You can also load low-res textures and models for users who just showed up, and then, as they have been playing for hours/days, upgrade to better higher quality models.


I still like that physical discs can be played, maybe just in campaign mode, without network/subscription.

Browser based games will go to GaaS subscription or even "Insert $.25 to Continue" very quickly.


And when whoever controls the server pulls the plug, it's game over.

Definitely interesting technically-wise, but considering the implications, no thanks.


I still like churning butter by hand but I don't really expect the local hardware store to carry a wide selection of butter churns you know?


So go out to the woodshop and make your own! Churning your own butter in a store bought churn is mailing it in.


This has already been possible for years - Unity and Unreal have had ports for a long time. The problem is that the web is a horrible platform to release AAA or AA games on. No way to pre-install, arbitrarily small local cache for your assets, long load times (due to slow I/O and code compiling every time), graphics API feature set from a decade ago, limited support for multithreading, SIMD not really widely usable yet (but close!), etc. On Android your game won't start because phones don't have enough RAM to run 64-bit Chrome and 32-bit Chrome doesn't have enough address space for your game. Don't get me started on how bad some of the other APIs are - for example, wanna stay fullscreen on iOS? You can't unless you're using a <video> element, it will constantly boot you out if it even lets you in at all.

WebGPU will help with the 'graphics API feature set from a decade ago' problem but you may have to wait like 2 years extra for it to show up in Safari and ordinary Android phones since Apple delays new features and Android phones don't get updates. Android phones also have horrible video drivers, so it may not work on many handsets ever. Plus you have to rewrite all your shaders in their special snowflake shader language and wait for them to compile on every page load.

Ultimately, Apple doesn't want you shipping browser games because they would rather get 30% of your revenue via the App Store. The Chrome team probably does want you shipping browser games but they're in a difficult situation with the state of the mobile market, they probably need to do painful stuff like implement compressed pointers if they haven't already.


Yea I was working on a Unity game that originally had a WebGL build. At one point I implemented a 3rd party plugin that required multi-threading for real-time rope simulation (Obi Rope), and at that point WebGL basically became impossible for the game.


Exactly my point of view, 3D Web APIs are only good for 3D models in e-commerce, shadertoy like playgrounds, retrogaming and casual games with PS3 like capabilities.

And even the PS3 at least had a proper graphics debugger.


Unreal4 at least has been able to do it for quite a long time[1].

https://docs.unrealengine.com/4.26/en-US/SharingAndReleasing...

That said, nobody really releases games that way and nobody plays them that way. Not everything needs to be a web app.


No, Unreal can't export to the web using newer versions of engine actually.

And UE5 does not have support for it out of the box at all.


The header on the previously linked docs page brings us to the GitHub repo where Epic OpenSourced it as a plugin. The missing support can be confirmed in the issues. Seems like web support was quietly removed after all.

https://github.com/UnrealEngineHTML5/Documentation/issues/10...


It was, because no one was using it and it isn't as if 3D Web is capable of stuff like Nanite.


> So when are we going to see modern Unity and Unreal games running on the web?

What, in your mind, would be the killer advantage?

Anything besides easy distribution?


Isn't easy distribution the killer advantage of the web, period? It ain't a small thing.


I suppose.

But it seems to me that, esp. in the case of gaming, it isn't just distribution that win, but the ability to discover, and pay, for games easily in a single place. So App Stores seem to have won the distribution game and have added several other capabilities that are all together make for a more compelling story than easy distribution alone.

If that weren't the case, why aren't we seeing more games distributed this way (web)?


From the consumer point of view, web-based distribution isn't really any easier than the status quo anyway.


Why hamstring the game by running it in a VM?


Easy portability would be one benefit


Middleware engines have been offering that for at least two decades with better tooling.


Oh brilliant, I'll go an start to play latest CoD on my mac then. Oh, wait.


You also won't get it with WebGL 2.0 anyway.


Never, I hope. Browsers are an awful platform for software


I'm not sure what the benefit is. Slightly easier to release between windows mac and linux, meanwhile taking a 20% perf hit from native?


We're trying to build this with bash.gg!


One of the earliest memories I have of being alive is playing UT99 on my grandfather's computer (I was born in '97).

He was an electrical engineer and very DIY/handy, so had gadgets and new tech about the house constantly.


UT99 is still being maintained by the community if you want to give it a try!

https://www.oldunreal.com/

You can find the latest patches on GitHub.

https://github.com/OldUnreal/UnrealTournamentPatches


There's something about the pace of older FPSes that the new ones don't match. Plus, turns out realism isn't something I ever wanted in an FPS.

I still fire UT99 up and play a few bot matches once in a while.

Now I can do it in my browser?


It's crazy to me how unpopular arena FPS is these days. To me it's pure joy, bunnyhopping around a map in Q3 dueling rail vs rocket in the air. I've had fun moments in modern FPSs but nothing comes close to Q3 or UT2k4/UT99 except games like Reflex Arena which are basically Q3CPMA with a modern engine (amazingly well done engine too). It's not nostalgia goggles, I still get the same response every time I play.


There are loads of modern FPSes that match the pace of old, but only in the indie space, not AAA. I recommend Ultrakill (whose second act just released last month), which is very much worth taking a look if you reminisce for Serious Sam and the like: https://www.youtube.com/watch?v=Pw63IVgYLDc


Those looking for this sort of experience should also take a look at Xonotic. It's an open source arena FPS with a decent number of servers online.


singleplayer fps, there's no arena fps with a particularly vibrant community, and if i'm wrong about that please please tell me which game i should be playing


You are right that multiplayer arena FPS with a vibrant community is a rarity now. I think the most popular one is Splitgate (sitting at ~600 players ingame on steam right now)[1]. Xonotic seems to be semi popular too but not on Steam if that matters to you.

Part of the problem is many of the modern FPS games have adapted arena FPS features (even Halo now is much faster than it used to be) making it difficult for people to go back to them unless they were deep fans of arena FPS games in the first place.

Ultrakill is a great one for singleplayer though!

[1] https://steamdb.info/graph/?tagid=5547


QuakeWorld (the "Internet" version of quake 1) is still very active. The source code was open-sourced by Carmack many years ago and the community has been evolving the clients ever since. Today the most popular one - ezquake [0] - features many improvements in performance, networking and teamplay features.

Anybody can download a version of this client along with a mostly playable version of quake [1] (that includes only the first chapter of the original maps like the shareware version but many or most popular multiplayer maps. And if you have the original you just need to place the pak1.pak inside the id1 directory and have access to everything)

There are many ongoing tournaments and QHLAN is about to be held in Sweden on November 17-20. You can find all about these in the quakeworld wiki [2]

To find the servers and games you can use one of two websites [3][4] or the in-game browser. The quakeworld EU and US communities are found on Discord. [5][6]

There is also an automated Twitch channel built by a community member that streams quakeworld 24/7 [7]

[0] https://github.com/QW-Group/ezquake-source

[1] https://www.nquake.com/

[2] https://www.quakeworld.nu/wiki/Overview

[3] https://badplace.eu/

[4] https://hub.quakeworld.nu/

[5] http://discord.quake.world (invite link for QuakeWorld EU Discord)

[6] http://discord.usquake.world (invite link for QuakeWorld US Discord)

[7] https://www.twitch.tv/QuakeWorld


Xonotic's got a decent number of servers online and active at any given moment.


Assaultcube


Self hosted communities. I can still play on ~5 CS 1.6 servers where the same people hang out since 20 years.


>Self hosted communities.

if that were the only catch then people like myself and parent wouldn't return to these games simply to fight a bot match.


Some of it is because I am terrible, to be honest.

I have a hunch that most the people still hosting servers for games 20+ years later are very good at it. The noobs and casuals like myself moved on ages ago.

Being blown to bits before the whole spawn animation plays repeatedly is amusing for a while, but the charm wears off fast. I don’t have the time to dedicate to get good.

This was my Quake experience a couple years ago, at least.




Check out Prodeus on Steam or Xbox Gamepass if you are trying to scratch that itch with a modern take.


Agree, nothing modern satisfies alike to the feel and pace of UT & Quake of that era


Open Arena, Xonotic, Red Eclipse...


Cool cool cool ... though these kinds of browser proof-of-concepts have been around for a decade (more than a decade if you include Flash+alchemy running Quake).

Is the browser coming back as a gaming platform yet?


Ugh I hope not. Battlefield 4 took a thousand steps back when they tried to make all the UI a web app

If this shit becomes mainstream say goodbye to ever owning your data ever again


That started with BF3, and worked pretty OK there.


It worked horribly! It worked so poorly that BF4 had to switch back to an in-game server browser


>If this shit becomes mainstream say goodbye to ever owning your data ever again

1. We're in that world now. You think you 'own' those mobile games you bought? You think games couldn't be pulled from your digital Steam library?

2. In the era of Flash and before mobile, browser gaming used to be a much much bigger thing.


I don't want to "own" a 50GB platform-specific root-accessing game.


Then don't buy it?

I don't want to rent something that doesn't recognize platform conventions or take full advantage of my hardware and storage, when it can and should have

Neither do I want to have to pay some rent-seeking wanterpreneurial fuck a monthly fee to access content that runs better locally


Then don't rent it.


One complaint about Flash was inefficiency, but are the alternatives faster? Complex Flash media could run on early 2000s PCs. Modern webpages cannot.


Sick burn!


With WebAssembly and WebGPU, absolutely we are going to see resurgence in games, this time with near native performance and modern fidelity visuals that are closer to what can be done on PC, mobile, and consoles.

Web will be huge for increasing accessibility, especially for casuals who have never downloaded Steam before. Imagine the Cambrian explosion that will take places when playing becomes as simple as clicking a link?


>Imagine the Cambrian explosion that will take places when playing becomes as simple as clicking a link?

We've had Canvas/WebGPL since 2011. Emscripten came out 10 years ago. WebAssembly 5 years ago. I've seen countless of these kinds of demos over the last decade. Literally no difference between this one and what was demoed years ago.

So for years a plugin-free browser was good enough for 'modern fidelity' gaming - but it never happened.

There is no 'Cambrian explosion' coming. Casual mobile killed casual browser gaming.


Keep dreaming, WebGPU is a MVP of where next generation APIs were in their 1.0 version, almost 7 years ago.

It has taken a decade, it will arrive without proper tooling, and require everyone to rewrite their shaders as well.


Like Newgrounds and Minijuegos at the Hispanic/Spanish speaker world? I mean, 15 years ago people already did that.


I see MMO's relying on browsers, because the web model and the subscription model align nicely. We had browser based (probably still do) text based "MMO's" that relied on the browser, and there's no reason that something like World of Warcraft or Second Life couldn't run in the browser fairly easily today.


Not really because the development experience sucks, no wonder the industry is turning into streaming instead.


Very cool, even though the only thing that works is the opening. Anything past that crashes the game (player setup, starting a new game or training session).


Note that it's just the intro, for bandwidth/copyright reasons:

> This is just the intro flyby to show it works. The whole game is not included because it's a big download and not mine to give out.


> Note that it's just the intro

So 100 to 200 MB of PRECACHING /s


Technically a DLC


The joke was that the very first screen in the game is blue text "PRECACHING..." on the black screen which stayed for minutes on 99' hardware, so it could also be an intro of sorts.


A year or so back I got back into UT99, and was pleasantly surprised that on ~2021 era hardware PRECACHING flashes for a couple miliseconds or so :D


Yeah, it's always there for at least one frame.


DLC at least are kept around for the next time.


This should be stated in bigger letters. I started a match and waited A WHILE for it to load.



I spent many hours in Unreal GOTYE honing my reflexes for Counter Strike Source. Put the bots on godlike, increase the gameplay speed to 200% and then die more often than not. It is brutal and makes other FPSs feel like they're molasses.


Quake III Arena, UT on speedup, and Wipeout were the only games I hit flow state in reliably.


Playing instagib did more for my FPS aim and reflexes than anything else


I'm still sad Epic abandoned UT4 for Fortnite. UT is such a better game.


I had no idea about this until my friend - who's still active at the top level in UT99 in a couple of game modes - gave me the lowdown a year or so ago. For anyone who doesn't know what we're talking about - a sequel to Unreal Tournament was announced in the mid-2010s. But it was to be developed relatively openly and in collaboration with the existing UT community. There are builds available that are very playable (including source code[0]) and as far as I know it was shaping up to be a great arena shooter. Then Fortnite exploded in popularity - and UT4 (or just "UT"?) was quietly de-prioritized, and has set in limbo ever since.

It's a shame. I still have some hope that it'll get dusted off, polished and given the attention it deserves at some point. A few people in the community feel quite hostile towards Epic, though, so they may have to work extra hard to regain that following.

Edit: ALSO I figured I'd add something interesting. The UT99 unrealscript source was semi-officially released and Epic did permit the community to release patches ... on the condition that they didn't break compatibility with the released version. That is, if I went back to my parents' house, dug out my old CD copy from 23 years ago, installed it and tried to play on one of the community servers, it would still work. Which is a shame since there are a handful of updates and quality-of-life improvements (for example, net code is supposed to be a bit janky) they would like to do but simply can't. Another missed opportunity :-/


Could that source code, in theory, be ported to UE5? So basically, it looks and feels like UT99 but maybe with upscaled assets and better rendering quality?


I think that would require a pretty substantial overhaul - the models + textures for players and items are accessible and in a relatively readable format, I'm not an expert but I guess they could be ported. Maybe some conversion is possible for the UI, levels, music, sounds too. However a lot of the game logic is implemented in UnrealScript, and it'd need to be entirely rewritten in (I think) C++ for UT5. I suspect that would be a fairly in-depth task, and at the end of it all you'd have a slightly shinier version that nobody plays because they're happy enough with UT99 despite its faults.

Might be fun as a technical exercise if you're bored, though :D The UT99 UnrealScript sources are here if you ever want to play around - text editor support for UnrealScript files isn't great but if you can move past that, it's really quite moddable and extensible, I really wish I made the effort to dig into it earlier when the game was more current: https://github.com/Slipyx/UT99


Not really.

UE4 (and thus UT4) abandoned UnrealScript entirely in favor of Blueprints and C++. The majority of code from the previous games (including base engine code) is all UnrealScript. It would be more feasible to take UT4 source and add features of the old games.

One of the main benefits of the older games is the mod community, but without UnrealScript it's not really doable in the new engine. Mods would have to be DLLs which are not really safe to distribute.

It really needs Epic's support to either add back unrealscript or host a distribution hub where the game can download the DLL mods.

I have a tiny glimmer of hope that the yet to be released versescript will allow a new UT with scripting support, but I'm not holding my breath.


What I'm curious about is how this has been done. I don't think that the source for UT99 has been released, so does icculus have access to the source and has then ported it to emscripten, or has it been decompiled from x86 and then recompiled for WASM, or is it running on an x86 emulation layer programmed in WASM? I presume it was from source, given that everything else is prohibitively hard just for a demo like this.


Some members of the UT99 community have access to the sources


play-cs.com allows you to play the OG Counter Strike with people through your browser


awesome! UT is probably my favorite PC shooter - have so many memories of running a LAN version of UT2003 back in high school and playing with a few friends during open hours.

Don't know why, but the UT series has, for me, been more enjoyable than modern FPS games like CoD. I'd take UT99 or UT2003/4 or the more recent UT over any crap that EA puts out every year.


I like AssaultCube even more. Unreal/Quake were always too fast and cartoonish for me. New-style shooters are too slow and realistic. AC is in between, both in terms of speed and realism, though more on the old side.


Xonotic may be of interest to you, it's a go-to for some of my friends and I.


You ever see something that is relatively minor, but because it hooks something in your subconscious it inspires a great emotion? It's not a sadness, but some form of eustress. This does that for me. Thanks to the devs who put in the time to do this, both the game and the wasm port.


There has also been a fully playable version of Quake that runs in the browser for many years. Super cool, was great for slacking off at work back in the day haha

Edit: Quake Live it was called. Unclear if it's still offered in the browser as it seems to have made it's way to Steam.


Quake Live was a plugin, the game itself was running nativity not using the browser. Though the have also been several WASM ports of quake.


One of my first startup experiences was working on the multiplayer platform that supported Quake Live. We eventually licensed it to Riot Games for what became League of Legends but both games were significantly delayed and we ran out of funding.


Quake Live was a plugin IIRC (remember plugins?). This is using WebGL and WASM, no plugins.


I get

Uncaught 72428808 - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch

when starting a game, anyone have an idea why? On both chrome and edge.


I ran into this too. The documentation says:

> This is just the intro flyby to show it works. The whole game is not included because it's a big download and not mine to give out.

> Since there are files missing, the main menu crashes if you try to start a game. This is known.


Note: loud.


It always was.


icculus' ports are legendary, had many hours of fun with the u42004 linux port. nice to see this!


Wonder why it doesn't work in MobileSafari.


Runs perfectly on my pixel 6! Great job!


js exception on ipad firefox

Localization: No localization: Core.Progress.Loading (int)


The github page states that this project doesn't work with mobile safari. Therefore all browsers based on the safari engine on ios including firefox will not work.




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

Search: