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 3 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 37 minutes ago [-]
Or, can still be purchased on Steam for $0.99, during sales. Windows only though.
sho_hn 6 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.

3 hours ago [-]
its_magic 5 hours ago [-]
[dead]
jjordan 5 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 5 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 3 hours ago [-]
Nonsense. People reimplementing stuff to see if they can is unrelated to copyright. See the many implementations of vi.
bottlepalm 5 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 5 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 5 hours ago [-]
Why not just install it from Steam?
Der_Einzige 4 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 4 hours ago [-]
I'm curious, what value do you actually derive from the website? Why stay?
its_magic 2 hours ago [-]
Great question. I often wonder that myself. Clearly I'm not the only one.

Presumably it's the same reason people stay in your corrupt city, or nation, despite it likewise being such a toxic, authoritarian shithole (Nazi Germany 2.0) that any sane person would want to escape from. Maybe the instinct of people like us is not to run and hide from bullies who hide behind downvotes and flags, but instead punch you in the mouth.

Who am I? Just some loser who created his own entire Linux distro from scratch. The sort of guy who was posting on Slashdot long before HN was a wink in Hermann Goering's eye. Nobody special.

There's no use in keeping a miscreant like me around, I can assure you. Stop wasting time responding to my sound logical arguments and just fire up the bot army and downvote/flag me into oblivion, as you people have always done--starting from DAY ONE of the FIRST account I ever created here.

Yes, that's right--I HAVE NEVER ONCE BEEN ALLOWED to just post my thoughts on anything here. It ALWAYS ends the same way, IMMEDIATELY. This is the first time I have EVER had an account more than a few days. Holy shit, the green text is about to disappear, and I'm still posting! Incredible.

(And that's 100% my fault, of course. If there's one constant around here, it's that the angry, perpetually-offended, butthurt mob is never, ever considered wrong.)

I understand. Believe me, I do. The truth is, all this downvoting and flagging and lecturing and whining about Da Fukken Roolz that you creatures do is the ONE THING that gives you any power or control in the world. Otherwise, you are completely powerless under the weight of giant corporations and the government--and deep down inside, beneath all your bluster and denial and egotism, you know it well.

You are nothing more than a slave to a big machine--and that's all you will ever be, until they recycle you into Soylent Green. A mental block prevents you from becoming anything other.

It will no doubt amaze you to learn that there are in fact negative consequences that will manifest to you and your forum and "polite society" in general--not just to your victims, as you intend--from so many years of rudely slamming the door in the face of one valuable contributor after another.

Turns out people of worth don't want to be around losers and whiny pricks who do not value our contributions, or who insist on following us from post to post lecturing us about "da roolz", like we're naughty children who are in desperate need of your expert guidance and instruction. (Fact check: WRONG.)

As for why I'm here, personally, despite the arrogance and general uselessness of so many posters here: because there are in fact a few other people here who are worth associating with. So very few. So rare.

Hope this helps drag you kicking and screaming in the direction of the nearest clue.

TLDR: Why do you hate facts?

Sabinus 23 minutes ago [-]
Are you invited into polite company in real life or do you restrict your egotistical and paranoid rants to online only?
sdwr 3 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 3 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 2 hours ago [-]
How about the assets?
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 37 minutes 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 6 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 8 hours ago [-]
>The game is not playable from start to finish. You can play deathmatch and other odd modes.
shellwizard 9 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 8 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 7 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 7 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.

giobox 24 minutes 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.
homebrewer 6 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 2 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.

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

7 hours ago [-]
unixhero 4 hours ago [-]
Is this the way we can have HL3 also?
user____name 9 hours ago [-]
FTE barely qualifies as a pure Quake engine at this point though, it does tons of stuff.
vkazanov 8 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 8 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 8 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 6 hours ago [-]
There already is a term: Quake Source Port

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

amlib 7 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 5 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 4 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 6 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 7 hours ago [-]
Half-Life 2 looks incredible in Quake 1, what gives?
Cthulhu_ 7 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-...
7 hours ago [-]
koverstreet 6 hours ago [-]
Quake 2 was when they added multi-colored lighting - it's really aged well.
CodeCompost 9 hours ago [-]
SSL_ERROR_BAD_CERT_DOMAIN

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

opello 6 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 7 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 6 hours ago [-]
Maybe you are MITM`d?
CodeCompost 5 hours ago [-]
Ah. Looks like it is being blocked by my corporate software.

Thx for the replies.

tsunamifury 6 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 4 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 8 hours ago [-]
[flagged]
anthk 6 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 6 hours ago [-]
Are you a LLM?
anthk 6 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 21:27:42 GMT+0000 (Coordinated Universal Time) with Vercel.