Hacker News new | past | comments | ask | show | jobs | submit login
SurrealEngine: Open-source reimplementation of Unreal Engine with playable UT99 (github.com/dpjudas)
361 points by klaussilveira 3 months ago | hide | past | favorite | 138 comments



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...


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.


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.


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!


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.


Thanks for the reply. What is a "battle royale shooter?"


Unfortunately a fad that's been around since 2016/2017 or so. The largest one is probably Fortnite BR, they tend to have a few million monthly active users.. although whenever there's an event there's a lot more who just log in for the event. Typically a BR is one person (or one duo or one squad, etc) vs everyone else. No one respawns, except for specific exceptions, and the last person/squad/whatever standing wins. There's an official team deathmatch type mode as well but the children tend to scoff at it as if it's just training wheels for "the real mode" instead of realizing that it's more fun to have respawn than to not have it.


Generally a mass player "there can only be one" fight to the death last player standing wins game.

As opposed to, say, team orientated Capture the Flag scenario's.

See: https://en.wikipedia.org/wiki/Battle_Royale_(film)


Hm, OK. From my limited gaming experience, I find that I do enjoy CTF-style scenarios more.


>I'd especially like to have UT2k4.

Honorable mention to UT2k3's menu music:

https://www.youtube.com/watch?v=IberpcWz9mU#t=0m10s

The NFL themes had nothing on it.


It kinda makes me want to play WarCraft II haha, similar awesome vibes!!


Goosebumps


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


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.


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


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/


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.


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.


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


I don't think his Linux bit is backwards. I think he is just saying switching to FOSS software because a company is taking a freedom isn't a real solution, and we should fight to make it so companies can't do certain things, regardless of if Linux or anything else is an option.


Admittedly I lack context. It seems on the surface this is a very loaded topic. I didn't get the gist it was 'switching' -- things existed/were being taken away.

Absent anything else, I feel supporting the status quo does just that. Must break some eggs to make an omelet; quantities/plate count/portions matter.

When I say 'loaded', I truly mean it. One could argue this in a positive self-fulfilling direction or the other: fallacy, 'sunk cost'.

I feel as if this is capitulation, personally, but am clearly biased. Very idealistic, would prefer they be the change we want to see


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.


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?


Impressive! :)


This makes me so happy and brings back a lot of memories. I really appreciate all the effort that video game archivists put into keeping these old games playable.


You might get a kick out of: https://osgameclones.com/

Hopefully you find something from the past that can bring even more happy memories!


Yeah, when I saw the screenshot of Facing Worlds the song from that level immediately started playing in my head.


If anyone is willing to set up a server I’m down playing some UT99. I should still have a GOG copy. Such an awesome game.


Every year or so I have my fun with Quake 3 and UT99 with bots. They might not be as smart as a human opponent but playing on Nightmare and Godlike difficulty brings back that twitchy adrenaline infused moments I enjoy so much from those games :)


You should hang out at the https://www.oldunreal.com/phpBB3/index.php forums


A potential side project I keep coming back is reimplementing the dedicated server for an old game like this. Even years ago when the games were popular, I often found the DS challenging to run.


I used to play so much Bunny Tracks. It was like digital parkour, using physics glitches for acrobatics through crazy obstacle courses. Such a neat game format, but I never saw anything like it (besides Portal, kinda.)


It's so cool to watch it play in the tracker software https://www.youtube.com/watch?v=mCRibm4kOaE


My immediate thought was "this is like that project which hosts UE1 games inside UE5" and it turns out it's the same project, they've just rebranded from DXU24 to Surreal, and they now seem to have their own open-source frontend in addition to the license-encumbered UE5 frontend.

The developer has a bunch of WIP videos on YouTube: https://www.youtube.com/@dxu2424/videos


I think you are wrong. SurrealEngine was designed to reimplement the first UE1 as a standalone engine, not requiring UE5 at all.


Seems I jumped to conclusions, both UE1 reimplementation projects are using the name "Surreal" but indeed there doesn't seem to be a direct connection between them. The more the merrier in that case. To set the record straight then:

Surreal98 (formerly DXU24) hosts UE1 games inside UE5. Plans to release as a commercial product?

SurrealEngine (this post) is a standalone UE1 reimplementation. This one is open source.


Yup. SurrealEnegine should run fine at least on 64/128MB video card suppporting SDL2 and Open GL 2.1 (or GL 1.4 by hacking up the engine renderer like crazy).

There's no point on reimplementing a game needing either a propietary engine (cough, cough, OpenMafia's switch into Unity) and/or a modern one with crazy requeriments defying the original purpose of replaying a game when a low end machine can't run a 20-24 years old game.


By that logic there’s no point in reimplementing the game at all. You should replay the game with an appropriate emulator. Or play the modern sequels.


SDL2 it's multiplatform. With Unity, you are doomed with Risc-V, PowerPC or any non-released platform. Thus, the project it's already kaputt since the beginning.


Or buy an old pc and go with it haha


As far as I can tell from a quick look at the source, it only seems to support Vulkan as a rendering API.


These might be available soon. Is not like the community didn't mess with UT and Deus Ex renderers since forever. That's how GMDX works today on DX9/GL video cards (and even DX10 and 11).

Also, Deus Ex it's one of the most played games ever due to its cult status (and, well, people loves conspiracy theories on the 9/11 and the Covid and in-game terror attacks). Having a GL 2.1 renderer (even a software one) will be one of the first succesful tasks being done.

I'm pretty sure even PPC Amigans would love playing it on their machines.

DX might be like the old Nethack 3.4.3 which have been ported everywhere, even to more platforms than Doom.


Unreal Tournament 99 and Deus Ex are two of my happiest game memories. This is a really ambitious project and it’s lovely to see those old games getting some love! Still hoping for a Deus Ex remake…


I would love so much for the eventual state of this project to allow us to modernize the original DX. I don't need a remake, just modern quality of life. I know there's extensive mods.


Get GMDX installed on top of the original game.


Definitely don't do this for your first playthrough thoug, play the original instead with only simple fixpacks like Kentie's Deus Exe launcher [0]. Opinionated mods should not be recommended as the default experience.

https://kentie.net/article/dxguide/


Epic could open-source the original engine, like its former primary competitor id Software did with the old idTech engines.


There were some plans to do so a while back:

>We definitely can’t open source Unreal Engine 2 or 3, because of dependencies on a large number of external closed-source middleware packages with complex licensing requirements.

>Open sourcing Unreal Engine 1 might be possible, but getting the source and dependencies into a releasable state would take a lot of cleanup effort that we just haven’t been able to find time for. I hope we can do it someday. [0]

[0] https://forums.unrealengine.com/t/unreal-engine-1/14084/6


Epic has some agreement with the old unreal community where people have access to the source and release patches.

https://github.com/OldUnreal/UnrealTournamentPatches


This is proprietary closed source mindset. Nobody is asking for bug free cleanly compiling and running codebase. Releasing with dependencies removed is enough, community would patch around it in no time.


Exactly. Most open sourced game engines, including id ones, had the same "issue" anyway.


Man, I try to think longer term so "a while back" can be 3-4 years ago.

then I see that comment made almost 10 years ago. I feel a lot of that goodwill went out the door once Fortnite became a cash cow.


Fortnite killed UT 4 and I hate it for that


Yup. UT holds a special place in my heart, and the abandonment of UT4 cut deeper than it should have. It's not like they couldn't have afforded a small team to continue working on UT4. Not getting more Unreal Tournament, and not getting the original continuation of Prey[1] are my biggest frustrations when it comes to gaming.

[1] https://youtu.be/jfHCZAK7p-s


On a quick screengrab in response to yours and the above comments. It looks like Fortnite also killed Tim Sweeney's personal involvement with his own forums. They never seem to have the time to do anything on the engine. Too much money to be extracted.

Plot: https://imgur.com/a/fortnite-killed-unreal-engine-developmen...

From: https://forums.unrealengine.com/u/Tim_Sweeney/activity


My guess is that they are very busy and forgot about it. Maybe if someone reminds Tim he will do it eventually.


Honestly in an era when so many companies are re-releasing and re-mastering and re-making their back-catalog, I'm shocked that Epic seems to have forgotten their roots.

Where's an Epic Arcade bundle of their 2D masterpieces like OMF2097 and Epic Pinball and Solar Winds? Why isn't Jazz Jackrabbit appearing in half a dozen mascot-themed Super Smash Bros ripoff?

Compare vs Capcom's remakes of all their classic Resident Evil games (Unreal 1 and 2 could get this treatment) and rebundles of all their arcade fighters and beat-em-ups. Or Id's annual rebundling of Quake 1-3 for new generations.

And it's not just big companies like Capcom doing that. How many times has little Croteam re-released Serious Sam 1st and 2nd encounters?

Meanwhile can you even buy UT2004 anywhere anymore?


That would be absolutely great if it were to happen, especially if they'd choose more liberal license such as BSD.

I'm a sucker for software rendering and unreal engine 1 has even more advanced features in that department compared to the original Quake (1 and 2) engines.

Would love to port that to wasm if this ever happens.

There is https://github.com/RedPandaProjects/UnrealEngine but I don't know what are the legalities and such...


It'd be nice if they released the code to their old DOS game catalog. Probably piles of 16 bit assembly but it'd still be nice (assuming they still have it)


It took a very long time for the source code for e.g. ZZT to be published, precisely because they apparently lost the code. https://github.com/asiekierka/almost-of-zzt Even then that had some third party comments removed from it.


probably a good time to post this. I've dockerized unreal tournament 2004, it runs ok on linux x86_64:

    mkdir -p ~/.ut2004/; sudo docker run -it --rm -e DISPLAY=$DISPLAY -e XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR -e HOME=/ --network=host -v /tmp/.X11-unix/X0:/tmp/.X11-unix/X0 -v /run/user/$UID:/run/user/$UID -v ~/.ut2004/:/.ut2004/ --user $UID:$UID --privileged --name ut2004 ikuinen.earth:5000/ut2004


Recommended: Civvie 11's “Epic Unreal Megaspecial” https://www.youtube.com/watch?v=5PtU2stZK0M [01:15:46]


I still can’t believe epic hasn’t released a modern Unreal Tournament game.


They were working on it but then Fortnight made a trillion dollars.


Fortnite made a thrillion dollars because people who were making UT4 were tasked to make a little F2P mode for it called Battle Royale.


So hire people to finish it?


No reason to hire people at Fortnite Salaries to complete a game that won't even make a million dollars. Arena shooters are pretty much dead.


Yep. They can't get zoomers to spend $30/month on a "free" game's marketing skins if the skill floor is too high.


Any recommendations for the genre? Most games are just way too slow nowadays.


Unironically Splatoon 3. It's so fun once you master the motion-controlled aiming and Squid Rolls and all that. Clam Blitz especially is the most fun I've had in any multiplayer game in years and really scratches that old UT2004 Bombing Run / Tribes / TF2 itch: https://old.reddit.com/r/splatoon/comments/13eslyb/at_the_bu...


There isn't. It's a genre that's pretty much dead.


Tactical-Ops: Assault on Terror was very good. However, Urban Terror was good replacement, when it was alive.


Oh good times om Tactical Ops. I did enjoy Verdon a lot.


Is it slow, or truly dead?

Urban Terror's death has been exaggerated before =]


Urban Terror in Fedora cannot be ran, unless symlink from /usr/share/ to user /home/ is made. When I ran it anyway, I saw zero users at all servers and maps, including Eagle.


Quake Live, Quake Champions both have some activity. I don't think either has the numbers for big onslaught maps like the good old days.


Titanfall 2 is really good.


Quake Champions is the best I've found.


To make a game as complex as Unreal Tournament 3 you're looking at millions in dev salaries alone. Meanwhile UT3 is still available to play, if anyone wanted to.


Not being as complex as UT3 would be a good thing. I wanted to love UT3 but it's so graphically busy that it distracts from the game play. Even UT2004 — as great as it is — misses the *SOVL* of UT99's simple geometry and colored lighting.


Not really. You can't buy it, and it doesn't work online without community support.


You need to find a reason why it would be better than the original or UT2004.


New game means new players.


Maybe they can relapse a map pack like id did for Quake and Quake II, that would be a way to get in the news again.


They did, it failed. It was called Unreal Tournament 3.


There's a beta from like 5 years ago


I know, but maybe if they want the epic store to be popular maybe release new versions of your classic IP on it?


All games in the series before UT3 are co-developed by Digital Extremes so they aren't exactly theirs, also that's probably one of the reasons they were removed from everywhere.


There is one that is on their site since fortnite released but stalled i think


I miss UT99 so much. I never came to like modern FPS games as much.


UT99 sat in a place between Quake 3 and CS that was quite unique and interesting. It wasn't as fast paced as Q3, but not as slow as CS.


The art seems a lot cooler than many other games


Another developer is making surreal 98 that allows UE1 games like deus ex and UT playable under UE5 with vr + mods and other modern features https://www.youtube.com/watch?v=p2M0hrLoA5M


Wow, this is really cool.

I would love to also see some sort of diverged reimplementation of the Unreal Engine that worked on a fixed tilmestep instead of a variable one, but it seems like maybe this implementation is faithful to the original engine behavior as well.


This is incredible! I wonder how they reverse engineered it. Couldn't have been easy.

So many engines are getting the open source reimplementation treatment. I wish them all the success in the world and hope their numbers continue to grow.


There've been a couple mentions of Unreal recently, and they keep making me semi wistful over the time I had playing U2:XMP (eXtended Multi-Player).

A nice capture-the-flag game with deplorables & vehicles. Amazing set of 3rd party maps. It'd be amazing to see this brought to a modern engine, especially if the maps could be imported.


I've opened a PR to nixpkgs for this, includes full instructions to get it running. https://github.com/NixOS/nixpkgs/pull/337069


Does anyone have a good sense of how many dev hours it would take to write something like Quake/Unreal from scratch today? Not a port, but a full rewrite with a custom engine


Interesting, they've got a little GC in there.


In this time period, Tim Sweeney was talking in public about garbage collection, Java, etc. and it seems like the Unreal engine scripting and object architecture drew a lot of inspiration from bleeding-edge (at the time) tools and programming languages. The interview I remember reading at the time is no longer on the internet, but this touches on some of the same subjects: https://www.gamedeveloper.com/design/classic-tools-retrospec...


Deus Ex and GMDX on top of this: heaven.


How was it achieved? Is the original UE open source, or was it reverse-engineered?


now if somebody can open source reimplement Rune which was made on Unreal Engine during this period


Love the name lol


https://github.com/dpjudas/SurrealEngine/blob/efb4a196ccc856...

Look, I get it: they named their library "dumb" so they felt they just have to be cutesy with the license file, but please don't. If you hate licenses that much, https://spdx.org/licenses/WTFPL.html is probably for you

(the actual project seems to be BSD-3)


For people who want more cutesy licenses, find some here: https://github.com/benlk/misc-licenses?tab=readme-ov-file#ot...


You're complaining about a 3rd party library license that the project cannot change...


I know posting a top-level comment seems indistinguishable from wagging my finger at the project, but it was just a license rant. I hoped that by including the third-party link it would make it more obvious what was being commented upon but I guess not


No one should use packages with licensing of this sort. The way the project changes the license is by changing which library they use.


People should do what makes them happy


Licenses are legal documents. They aren't supposed to make people happy. If they do, you're probably doing it wrong.


Presuming that there are actually jurisdictions in which those typical clauses about disclaiming any implied warranty and so on are important (and I wouldn't want to do otherwise), that minimal license seems like a terrible idea. Not restricting use is all well and good, but you don't want to somehow end up legally on the hook for someone using your code to shoot themselves in the foot, however much it seems like the fundamental problem there would be with the jurisprudence.


Maybe it’s just me, but if you understand the history of audio libraries, it just sounds like a titular homage to LAME.


DUMB is essentially BSD, clause 8 says that clauses 4, 5, and 6 are null and void.


Use the jslint license. It has all the legal force of the 3-clause BSD license, but it also offends an awful lot of humorless people in a way that is funny to watch.




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

Search: