NHacker Next
  • new
  • past
  • show
  • ask
  • show
  • jobs
  • submit
Clean-room implementation of Half-Life 2 on the Quake 1 engine (code.idtech.space)
bni 4 hours ago [-]
If you want to play Half-Life today I highly recommend Xash3D FWGS (yes its a super awkward name)

https://github.com/FWGS/xash3d-fwgs

Easy to use Mac build here: https://www.macsourceports.com/game/halflife

nomel 1 hours ago [-]
Or, can still be purchased on Steam for $0.99, during sales. Windows only though.
BlitzGeology91 36 minutes ago [-]
Eh, I don’t really think that this is an “or” situation. I think that this is an “and” situation. The last time that I set up Xash3D FWGS, I had to copy files from the version of Half-Life that I own on Steam into a different folder so that those files could be loaded by Xash 3D FWGS. I haven’t tried Xash 3D FWGS in a while, but it looks like you still have to do that [1]. Also, are you sure that the Steam version of Half-Life is Windows only?

[1]: <https://github.com/FWGS/xash3d-fwgs/blob/f0342763547d9bcf486...>

nomel 28 minutes ago [-]
> Also, are you sure that the Steam version of Half-Life is Windows only?

You're right! It looks like Linux has a native build too. Apparently the Windows version, through Proton, runs better though (not that it matters).

32 minutes ago [-]
SXX 35 minutes ago [-]
Its ported to Linux just like cs 1.6. Not sure how good Mac build is though.
nomel 18 minutes ago [-]
Steam version: This product is not compatible with macOS 10.15 Catalina or above.
sho_hn 7 hours ago [-]
Super interesting! I'm curious what the purpose is, though?

Edit to answer myself: Looks like this is more of an offshoot of the FreeHL projects by the same author, which rewrite GoldSrc game logic to QuakeC to get those games to run on open source engine stacks, where the utility is more obvious. I guess it was just fun to see how hard it'd be to get HL2 content running.

A bit similar to the OpenMW project working on Oblivion and Skyrim content loading on the side, though perhaps that's a more obvious future vector for that project.

4 hours ago [-]
its_magic 6 hours ago [-]
[dead]
jjordan 6 hours ago [-]
Someone did something interesting to them and shared it with the world. That you feel is a waste of time does not add to the conversation and more broadly acts as a chilling effect on others who might want to share their interests.

When it comes to something like this, mom's advice is golden: "If you don't have anything nice to say, don't say anything."

its_magic 6 hours ago [-]
It's a waste of time made necessary ONLY because of copyright law. As I explained.

As is THIS ENTIRE COMMENT THREAD.

And 10,000x other comment threads exactly like it, with you fools arguing back and forth for 300 pages about the subject.

What a complete waste of time and energy. Thanks, copyright law.

sho_hn 4 hours ago [-]
Nonsense. People reimplementing stuff to see if they can is unrelated to copyright. See the many implementations of vi.
bottlepalm 6 hours ago [-]
I'm also wonder why, but who cares, it's cool and fun. If someone wants to spend their time doing it, great. It's a lot more valuable than the time you spent writing that disparaging comment.
aeturnum 6 hours ago [-]
Tho I also disagree with you, I just want to point out the many HN guidelines[1] you are violating:

> When disagreeing, please reply to the argument instead of calling names. "That is idiotic; 1 + 1 is 2, not 3" can be shortened to "1 + 1 is 2, not 3."

> Don't be curmudgeonly. Thoughtful criticism is fine, but please don't be rigidly or generically negative.

> Please don't fulminate. Please don't sneer, including at the rest of the community.

> Please don't comment about the voting on comments. It never does any good, and it makes boring reading.

I don't think downvoting your comment is super useful either but there are elements of how you are interacting that are not related to your argument that you could change to be less likely to be downvoted.

[1] https://news.ycombinator.com/newsguidelines.html

__alexs 6 hours ago [-]
Why not just install it from Steam?
Der_Einzige 5 hours ago [-]
Everything you said is 1000% true. The butt hurt from people downvoting and flagging you are crabs in a bucket and people who are ontologically wrong about everything. Unironically.

The rules here suck. Dang is a bad admin. YC is rotten to the core.

wholinator2 5 hours ago [-]
I'm curious, what value do you actually derive from the website? Why stay?
its_magic 3 hours ago [-]
[flagged]
Sabinus 1 hours ago [-]
Are you invited into polite company in real life or do you restrict your egotistical and paranoid rants to online only?
its_magic 43 minutes ago [-]
Another great question, and another good opportunity to supply you with true facts and deep knowledge of reality. Here we go.

(This is turning into a real educational opportunity, unexpectedly.)

I have never--not once in my entire life--been so mistreated in person as I have been online, here or elsewhere. It simply does not happen, for some reason. At all. Ever.

This is not to say I haven't ever met any of you online abusers in real life; no, statistically speaking, I'm sure you're out there in the crowd somewhere, presumably within earshot when I speak truth. It's just that (for whatever reason) you simply never, ever think to approach me in the same manner as you do here.

(Maybe you can think of one or two good reasons why this is so. I'm sure whatever explanation you reach will be completely self-centered and self-serving, just like your other justifications and rationalizations about everything, which always reach the same conclusion: that I'm wrong, and terrible, and that you're a Good Person, and it's OK for you to just shit all over me.)

Since there is no such thing as downvotes or flags in real life--and since you don't have any actual rebuttal to offer to what I say, in 95% of cases--therefore your only choice (other than listening and, you know, learning) must be to sit quietly and fume in the corner, were you to suffer the indignity of hearing my horrible and unacceptable opinions spoken in the vicinity. So I guess that's what you do.

If you run into me in real life, feel free to speak up and make yourself known next time. Be sure to froth at the mouth as you call me a lunatic and a maniac and so on. Really, the more hatred you launch in my direction, the more success you will surely have. Everyone who hears will be thoroughly impressed at how right you are and how terrible I am.

bigyabai 2 minutes ago [-]
> It simply does not happen, for some reason. At all. Ever.

Do you speak the same in-person as you do online? Most people probably could not parse any of what you posted, even with context. The most they'll pull from it is the Nazi correlations, and they probably won't extrapolate nice things from there.

I have thick skin, I dislike copyright and keep the company of all sorts of malcontents. If you lashed out against me for refusing to use your copyrighted code in real life, then yeah I would hold you very deeply in contempt. Or assume that you're an undercover agent of some sort trying to peer-pressure me into crime.

sdwr 4 hours ago [-]
What does clean room mean in this context? They built it from the assets with the game as a reference , but didn't look at the engine source code?
brynnbee 4 hours ago [-]
It means they didn't reference any existing or decompiled code from the original client. None of it is directly infringing on any copyright, though it may be doing so indirectly since there have been plenty of lawsuits for tools that contain no copyrighted information can but can used to facilitate infringement (e.g. a tool that decompiles a game ROM)
alpb 3 hours ago [-]
How about the assets?
giancarlostoro 26 minutes ago [-]
As long as the assets dont contain code, they're kind of fair game. The rule of thumb is you cannot redistribute them, but if the person owns a legal copy you can point to them on their local system. It is not up to you to figure out if they're pointing to a pirated copy or a legitimate copy mind you.
blell 2 hours ago [-]
I assume you, the player, have to provide the assets yourself, and the game won't run without them. Since the code does not contain the assets, there is no copyright infringement.
squarefoot 1 hours ago [-]
Interesting, I loved both HL1 and 2. Some games never die, brought to mind the Black Mesa remake of HL1 with the HL2 engine that gave it new life. https://www.youtube.com/watch?v=sKutLsub-80
arifmeticus 7 hours ago [-]
Not related to the engine, but it reminded me of a demake of Half-Life 2 in Quake https://www.youtube.com/watch?v=FhuXHGb_4vU
fp64 9 hours ago [-]
>The game is not playable from start to finish. You can play deathmatch and other odd modes.
shellwizard 10 hours ago [-]
Impressive, given how old Q1 engine is. It brings back memories of Paranoid Doom mod: https://www.doomworld.com/idgames/levels/doom2/Ports/p-r/par...
lloeki 9 hours ago [-]
Interesing, there's more here including HL1 (a.k.a "valve")

Funnily enough the looks of this HL2 through this engine makes it flow more with HL1 than I could expect; an interesting reverse Half Life: Source / Black Mesa / demake of sorts.

homebrewer 8 hours ago [-]
Even simple Half-Life 1 mods built on textures and models from Half-Life 2 look much closer to 2 than one would expect. For example this mod, but not only:

https://moddb.com/mods/half-life-dark-future

You won't confuse it with modern Half-Life 2, but the original HL2 engine had far worse graphics than the latest version. Makes you realize how much of the difference between HL2 and HL1 is due to different textures and level design.

amlib 8 hours ago [-]
And Viktor Antonov (rip) art style.

edit: there is also the fact that map compilers for gold source games have advanced far beyond what they could do back in 1999. The lightmaps and light sources alone can be far more intricate nowadays than what you would get from the official valve ones in 1999.

homebrewer 7 hours ago [-]
I used to do a bit of mapping back then (nothing that survived to this day, thankfully); as I recall, practically nobody used official map compilers. As it often happens, the community wrote replacements that were much faster for debug "-O0" builds, and generated lightmaps of a significantly higher quality for the release "-O2" builds.

It was either ZHLT or VLHT, or something like that; looks like more alternatives have been written since then.

https://gamebanana.com/tools/5391

https://github.com/seedee/SDHLT

trashb 6 hours ago [-]
The lighting is one of the main area's that really improved a lot.

For standard Q1 mapping ericw tools [0] is great (the page has some nice previews).

This project seems to use Nuclide for building which by default uses vmap compiler [1][2]. Which is really Q3 but I think FTE handles that well internally as the newer format has some more modern features.

> Powerful BSP compiler. Use VMAP to bake levels like you're used to from similar engine technology, with high quality lightmaps, cubemap-based environment mapping and adjustable vertex colors on spline-based meshes.

[0] https://ericwa.github.io/ericw-tools/

[1] https://developer.vera-visions.com/d4/d50/radiant.html#autot...

[2] https://github.com/VeraVisions/vmap

keyringlight 5 hours ago [-]
There was a similar path with Unreal3. The early games (2006) lighting looks quite harsh by modern standards, one of the highlights of Mirror's Edge (2008) was DICE using third party Illuminate's "beast" lighting, then Epic moved to "lightmass" around 2009 with the public UDK toolset.
l-p 3 hours ago [-]
While lighting is important, not using halflife.wad and going above the original budget of 500 polys per "scene" is what makes modern works look much better.

Most of the original textures are under 128×96 px and some suffer from awful palletisation artefacts with purple and orange halos. We still cannot use more than 8 bpp but we can use 512×512 textures and do a better job at reducing to 256 colours. I use pngquant for that.

In GoldSrc lightmaps cannot get more intricate though, they're tied to the texture scale so you cannot get a finer lightmap unless you also make larger textures and scale them down, and these two combined will wreck your "AllocBlock" budget in which all your textures and lightmaps must fit.

ericw-tools and its dirtmapping are still welcome improvements over the "traditional" *HLT compilers.

giobox 1 hours ago [-]
A shame to only now learn of Victor Antonov's passing. His work on HL2 and Dishonored remain some of my favorite examples of video game world building of all time. These places felt real and lived in, in a way few other video games have matched for me.
ErroneousBosh 7 hours ago [-]
The other thing though is that Original Quake Back In The Day ran on a Pentium 75 (needed the maths co-processor) with a dumb framebuffer. All the rasterising of polygons was pure software, as was all the geometry processing. Running GLQuake was a huge improvement but it required an expensive add-in card that piggybacked onto your VGA card, and a whole different binary.

Now you can just kind of pile it into a block of RAM, aim a chunky ASIC at it, and pull the trigger every frame.

In the late 90s a mate of mine did a phenomenal video of a Quake demo (you could record all player movements and camera positions as a "dem file") that he'd rendered out, raytraced in POVRay. I printed it to VHS for him as part of a showreel, and never thought to keep a copy myself.

8 hours ago [-]
unixhero 5 hours ago [-]
Is this the way we can have HL3 also?
user____name 10 hours ago [-]
FTE barely qualifies as a pure Quake engine at this point though, it does tons of stuff.
vkazanov 9 hours ago [-]
It does a lot, yes, but also is very much a continuation of the original codebase - i've spent quite some time tinkering with internals of it.
jsheard 9 hours ago [-]
Yeah, but Half Life 2's Source engine was itself a continuation of Goldsrc which was itself a continuation of the Quake 1 engine. The lineage is there but beyond a certain point it's not really Quake anymore.

GZDoom/UZDoom is a similar grey area, it is built on the original Doom codebase but they've added so many features that it's practically its own distinct engine now. Those forks can even render arbitrary 3D models, which OG idTech couldn't do until Quake.

vkazanov 9 hours ago [-]
We'd have to come up with definition of quake :-) FTE has a lot bolted on it but the focus us in Quake, quake mods, lifting some limitations and making mod dev convenient.

But it is the same overall code structure, the same game, etc.

All these oss quake engines, are they quake? Ironwail, quakespasm vkQuake?

hnlmorg 7 hours ago [-]
There already is a term: Quake Source Port

https://quake.fandom.com/wiki/Source_port

amlib 8 hours ago [-]
I think the litmus test is weather they are backwards compatible with old maps/campaigns from the original engine/game.

Half-Life 2 sure won't play quake maps nor will it play hl1 maps.

account42 6 hours ago [-]
> Half-Life 2 sure won't play quake maps nor will it play hl1 maps.

Not without modifications but Half-Life: Source is essentially a tech demo to show that they can be ported easily (if you are OK with dropping some pesky features like randomized wall textures).

amlib 5 hours ago [-]
AFAIK hl1 maps needs to be open in hammer, tweaked a bit and then recompiled to function in hl2. You also better have those originals .rmfs rather than a .map or a even worse, a .bsp :)
anthk 7 hours ago [-]
Qames/quake from 9front =). It can run LibreQuake with Malice as a MODs, and that's it. Quake, Quakeworld and everything for vanilla, no modern changes like QuakeSpasm or worse, DarkPlaces. If someone backported HL2 to the original Quake with reduced physics and still run under a Pentium III fast enough, it would be something astonishing.

I see impressive stuff with reimplementations such as Surreal Engine, but they will require far more powerful machines.

If Surreal had a software renderer (not requiring AVX or similar) running under an SSE2 machine, that would yield even more respect, because if your reimplemented engine runs in legacy machines the portability would explode. Just have a look on Scummvm on how many platforms and OSes can it run. Or the Super Mario port for PC, where some fork supports even 3DFX under DOS, and GL 1.2. Thus runnable under TinyGL with no 3D accelerators and even under Plan9/9front with custom tweaks.

hiprob 8 hours ago [-]
Half-Life 2 looks incredible in Quake 1, what gives?
Cthulhu_ 8 hours ago [-]
Quake's engine is open source and for example nvidia used it in some more recent tech demos, although this one's for Quake 2: https://www.nvidia.com/en-us/geforce/news/quake-ii-rtx-v1-2-...
8 hours ago [-]
koverstreet 7 hours ago [-]
Quake 2 was when they added multi-colored lighting - it's really aged well.
CodeCompost 10 hours ago [-]
SSL_ERROR_BAD_CERT_DOMAIN

Seems to be using a dnsft.cloud.zyxel.com certificate. Is this a home router?

opello 7 hours ago [-]
https://community.zyxel.com/en/discussion/23595/why-i-get-bl...

Seems like you or someone upstream of you uses a Zyxel brand device that has some kind of dns content filtering enabled. You should be able to get around this on a given machine by configuring an alternate dns provider (dns over https, cloudflare's 1.1.1.1, google's 8.8.8.8, quad9's 9.9.9.9, etc.) or doing something similar at your own router/dns resolver/dhcp server if it's not the thing doing this.

linuxguy2 8 hours ago [-]
I certainly don't get that cert. I'm seeing a LetsEncrypt cert for idtech.space with various SANs.

  # host code.idtech.space
  code.idtech.space is an alias for idtech.space.
  idtech.space has address 192.99.32.215
  idtech.space has IPv6 address 2607:5300:60:47d7::
notachatbot123 7 hours ago [-]
Maybe you are MITM`d?
CodeCompost 6 hours ago [-]
Ah. Looks like it is being blocked by my corporate software.

Thx for the replies.

tsunamifury 7 hours ago [-]
De-makes are interesting because they continuously seem to show what may have been possible long ago in ancient engines if teams pushed them even further.

Then again maybe that level of detail even in idtech1 would have required more computing than was available for many years.

plorkyeran 5 hours ago [-]
I do suspect this would not run well on a 75 Mhz Pentium 1. It would be very surprising if Quake 1 was actually the pinnacle of what as possible on the hardware of the time, though. id made exactly one game targeting that generation of hardware, and then their next game had meaningfully higher system requirements despite coming out only a year later. The hardware capabilities were changing so fast that there simply wasn't time to iterate on a specific target.
lucastytthhh 9 hours ago [-]
[flagged]
anthk 7 hours ago [-]
Would it work under vanilla quake 1? Ah, no. I can't check it out.

Good job keeping me away with Anubis, btw.

pantalaimon 7 hours ago [-]
Are you a LLM?
anthk 7 hours ago [-]
No, just a 9front user with a web browser, Netsurf. I shouldn't need JS to read an article you know.
Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact
Rendered at 22:20:26 GMT+0000 (Coordinated Universal Time) with Vercel.