Half-Life 2 in a Browser

7 hours ago (hl2.slqnt.dev)

And Quake 3: https://thelongestyard.link/q3a-demo/

And Unreal Tournament: https://dos.zone/mp/?lobby=ut

There's also https://noclip.website/ which, while not playable, has hundreds of levels from dozens of older games that you can explore freely. Including Half-Life 2, with more accurate rendering than this web port (which seems to be missing many shaders including character eyes).

Platforms like geforce now are already the superior ways of playing on Mac, as so many games are never ported and old games stop working.

Interesting, I am not able to play HL2 on Steam because macOS no longer has 32-bit support and Valve never compiled if for 64-bit but here we are, it’s playable on the same OS in the browser.

BTW IIRC there was some method to convert the 32-bit game binaries to make them run on recent macs. I remember doing it.

  • How is that possible? 32 bits should be compatible with a 64 bit machine. You can always use less bits for your memory addresses.

    Are there any other architecture changes that are preventing 32 bits binaries from running? Does that also mean that old software no longer runs unless there is a 64 bit version?

    In windows you can run x32 and x64 executables in a 64 bits machine

    • Monsieur, on Windows this problem was solved with a large development effort, that's why it goes unnoticed on you. Note that CPU level instruction emulation is literally the easiest problem of emulation. (Why do you think you can't just go and execute Nintendo Switch binaries on your Mac M1? Both run ARM64.)

      On Windows, this was is implemented as SysWOW64. WOW64 means Windows on Windows 64. It makes the userland emulation and pretends towards the process that everything around him (incl. drivers) are the 32-bit ones.

      Source: Microsoft.

      https://devblogs.microsoft.com/oldnewthing/20081222-00/?p=19...

    • Only the very first few models of Intel Macs had strictly 32-bit processors (the 2006 iMac and Mac minis with Core Solo/Core Duo processors), and none of them were realistically capable of playing Half-Life 2. Apple is guilty of many sins, but this isn't one of them. Valve should never have shipped a 32-bit application in the first place. The binary was already obsolete before it even left Bellevue.

  • I admit that Valve’s approach to Steam on macOS has never made sense to me.

    • This was more Apple's doing rather than Valve's.

      Valve wanted steam to co-exist on the mac in the early days and John Sculley of Apple didn't want Apple to be seen as a gaming device or a "personal home computer". So they ceased contact with Valve and the rest is history. https://www.youtube.com/watch?v=lPTLPXNtb2I

      Apple refused to license joysticks so they could prevent customers from considering early mac's as game machines and deliberately refused to support games on the machine. Myst was only few that were exclusive to the Mac; that they then ported to PC.

      6 replies →

  • Disheartening. macOS seems to get less and less support in a way. For example some of the Blizzard remakes don't run on macOS but the originals do.

  • On paper qemu should be able to do this. The hard part is hardware acceleration for the GPU. Without Apple putting effort into supporting this with e.g. documentation, that's a bit hard. That's also holding back linux support on Apple hardware. But it's a fixable problem that will only get easier as hw gets better and faster over time.

    • > The hard part is hardware acceleration for the GPU

      Is it, though?

      How Hard Can It Possibly Be to just do a software GL renderer that emulates a mid-2000s Radeon, these days?

      1 reply →

  • MacOS removing 32bit support was a massive pain. A bunch of Ambrosia Software games no longer work too (e.g. Escape Velocity Nova, Apeiron).

Does anyone know some of the rebinded controls? The main menu doesn't show them and I can't figure out how to reopen the menu during gameplay or any using the bindings that are usually set to the function keys. The page doesn't seem to have any info included like that kind of thing.

Edit: crouch is bound to C according to the blog post, but that's the only one mentioned.

With WASM and WebGL being mature technologies, I'm not sure why there aren't more video games published this way. For really big games with lots of assets, having those assets in local storage makes sense. But I wouldn't mind if a game "installer" is just your browser asking "This game wants to use up to 20 GB of local disc space. Is that okay?"

  • I’ve always wondered a bit about the ssr side of these things a bit. Something like time crisis where the main video is pre-rendered and streamed but the interactive elements (enemies, explosions) are superimposed in front on the client. Feels like you could make a very low bandwidth experience (around the same cost as a YouTube video plus some assets?).

That's also the kind of Website, beside the impressive technical result, that reminds me nothing can be blocked.

It's not about bypassing VPN or deep pack inspection, rather it's about how once anything, including a very complex video game (like here) to an entire OS with a host machine (like QEMU on WASM, or a random InternetArchive link about emulation) is "just" a Web page that can be hosted... on anything (including a 10 bucks Rasperry Pi Zero which can also be an AP, a phone obviously, heck even a e-cig!) then it doesn't matter what is "blocked" as it can be brought to anyone with no installation.

  • Sounds like companies should start locking down browsers to disable WebGL, WASM and other similar APIs targeted at apps as opposed to web pages. I would welcome this if it got web developers to stop using more than they actually need.

    • Tricky to block WASM. A lot of useful Websites use for genuinely good usage. Can be for syntax highlighting, chess engine, etc and the same goes for WebGL or WebGPU, they are used for responsive UI in dashboard, for data visualization, for video rendering with effects e.g. blurring a background behind a person thus privacy, etc. Blocking either of those would break a lot of modern useful Websites.

As much as I dislike webdev stuff, I love the way you can distribute entire programs through WASM. Super cool stuff! For those who are interested, I recommend checking out Godot for exporting games on the web. It's really easy to do and you can host it on Itch.io

  • Isn't Godot kinda flawed for deploying to the web? For example, no C# as of now, although there have been plenty of efforts to make it work. Or AFAIU audio being forced to stay in the main thread which can cause glitches. I just mean that it's not all fun and games as soon as you want to make a more ambitious game and not just a quick demo or game jam thingy.

    • Godot 3.x supports C# on the web because it uses Mono.

      Godot 4.x migrated to CoreCLR since Mono is a dead end, but Microsoft insists on .NET being the entrypoint in a WASM build. MS initially promised support for .NET being invoked by something else but dropped the feature, leaving Godot stranded. The current proposal is to make Godot a library (libgodot) invoked by .NET.

    • I found GDScript to be quite powerful in terms of functionality. I don't have experience in professional game Dev to be aware of the benefits of C# beyond it being the industry standard for Unity.

      Single threaded audio is a big concern. I haven't implemented music in my game yet to know if it is a deal breaker.

      The main problem that I have run into is shader compilation stutters on the compatibility render. Makes the game basically unplayable. My work around was to spawn certain objects on the main menu out of sight to force compilation. I believe the forward renderer has some pre-compilation.

      1 reply →

I just wish Valve could add official macos-arm64 builds of the various hl2 games on Steam :-/

Input doesn’t work so well on my iPad (lol) but seeing that intro rendered in safari on said ipad, wild. So cool

  • A few years ago, before I bought a Nintendo for my kid, he was playing Minecraft on an iPad. I tried to pair a Bluetooth controller, and had no luck. I think the OS was too locked down. At the same time, I could connect a Bluetooth controller to my Android phone and play Minecraft with no problem.

    In fact, I've said for a long time that I wish I had a nice Android tablet with a Tegra chip that I could both use as regular tablet and as a game system.

First half life one in browser now we have half life 2! I guess it’s that time again Mr Freeman

The screens are missing and the lips don't move, but it's pretty close!

  • for me the eyes are also showing the unwrapped texture of character's own heads, which is extremely unnerving lol

  • The blog post mentions that the animation system was disabled, because it caused a lot of issues

What a time to be alive. My suggestion: progress bars instead of throbbers during loading data.

I remember saving up for a year to buy the ATI Radeon 9600 XT (I think it was $200 MSRP) so I could play the game on high settings. Now we can play it inside a virtual machine on a crappy laptop. What a journey

  • Same here - splashed out crazy money upgrading my PC to play HL2.

    After that moment I switched to consoles.

  • In a few years todays high end AI models will run on your watch

    Of course that assumes we maintain open access to compute that we've enjoyed for the last half century, and I doubt that very much.

    Stallman warned about the dangers of software being closed [0] 30 years ago, and the majority of modern IT industry just laugh a that sort of stuff because you can't make a billion dollar startup with that attitude, but I think the restrictions on owning the hardware at all will probably come first.

    [0] https://www.gnu.org/philosophy/right-to-read.en.html

    • > In a few years todays high end AI models will run on your watch

      Although possible with cpu power, I dont think you will ever get enough ram in a watch to run a decent local LLM.

      I also dont think the high ram requirements for running them will come down at all.

Very cool. The download progress bar is broken though, it receives values 0-1 but the max is set to 300.

What's the biggest bottleneck you hit - GPU compute, memory bandwidth, or network latency for asset streaming? Curious how it compares to native WebGPU.

How is it that this came to my Apple-Silicon Mac before Valve could do it natively? How could it possibly be easier to create a complete-enough virtual machine that runs in a browser and the compiler for it than it is to port the native application?

I wish we could spend as much time on native application development as we do on horribly crippled and slow browser application development.

Web technology is so non-sensical to me. "you can run an application without installing it!" Well, friend, installation is not required either, and we can deliver applications on demand, and we've done it before. "You just visit a page and you can program the macros on your keyboard!" Again, it's not like those applications are large; they could be delivered on demand if we wanted.

But we don't want that, do we? We want people to remain online under any circumstance, we desparately want their time, so we require that people be online if they want to program their microcontroller and they don't know how to do it without visiting the very convenient webpage.

If people spent 10% of the effort on native applications that they spent on web applications, we would be so much further advanced than we are now. If you're a developer, targeting the web is so seductive, so easy in comparison, that we all have to be online to do anything, now. We all have to run two dozen Electron apps because developers want to have an easy time at the expense of every user.

  • > I wish we could spend as much time on native application development as we do on horribly crippled and slow browser application development.

    But native to what?

    Windows is no longer the commonality between all users.

    The browser has that role, now.

    > We want people to remain online under any circumstance

    Webapps often have offline-first functionality,

    which is one of the biggest strengths of a progressive web app.

    • browsers aren't common either. Standards, formats, and interfaces are, which is exactly what WASM is and what this demonstrates. Native apps don't need a common operating system or even a common core like nix. They just need to support a common interface, like browsers do.

[flagged]

  • Valve already gave Half-Life 2 away for free, and released the source code of the HL1 engine.

    Is it technically illegal? Yeah, but Valve isn't losing out on any money, and there's no way they're going to risk the negative PR blowback they'd get for a takedown.

    Besides, IP law is dead. The rise of AI made it pretty clear that you can steal literally anything without consequences.

    • Giving things away for free (at one point) is not the same as making it public domain or relinquishing your (copy)rights. Source available is not the same as open source. Open source code does not mean open source assets/product. I find it weird that this needs to be explained in this community.

      1 reply →

    • >Besides, IP law is dead. The rise of AI made it pretty clear that you can steal literally anything without consequences.

      God, AI keeps making life better than I could've ever imagined!

      1 reply →

    • GoldSrc (HL1 engine) is very much not open source (or even source available). There's at least one open source remake (which is possibly illegal due to using the SDK) but no official release.

      2 replies →

    • > Yeah, but Valve isn't losing out on any money, and there's no way they're going to risk the negative PR blowback they'd get for a takedown.

      So that makes it okay to pirate and steal games developed by your fellow indie game developers as well?

      > Besides, IP law is dead. The rise of AI made it pretty clear that you can steal literally anything without consequences.

      Try doing the same thing to Nintendo.

      Even large companies like Anthropic were not going to risk going to trial and getting bankrupted of over $120B+ in damages in using pirated copyrighted eBooks for training. The best case was a settlement for $1.5B which that is a record settlement in copyright law.

  • This project seems perfectly congruent with current year industry standards regarding copyright, which are to move fast and lobby for permission later.

  • That is up for the copyright owner to enforce or not to enforce.

    Until they decide, we can't know if it's illegal or not - who knows, this site might have a license.

    • A crime is a crime even before a judge rules over it. Sure, innocent until proven guilty, but most people know when they're doing something wrong and then don't do it.

      Of course, this is a lot more grey area for copyright violations etc because it's a civil matter.

      2 replies →

    • It's quite dangerous to make unsubstantiated comments and assumptions on US copyright law without the proper research.

      Valve still owns the copyright to the game and just because they won't do anything now does not mean it is legal to redistribute it without their consent, especially when we know that the game is still being sold. [0]

      They (Valve) reserve the right to enforce that and this site clearly does not have such a "license" and haven't disclosed as such. Why would you expect Valve to be in discussions with a 15 year old to redistribute the game for free?

      So just say you do not know.

      [0] https://store.steampowered.com/app/220/HalfLife_2/

      5 replies →

What I find incredibly impressive is that it just loaded in and seems to work fine on my phone. So cool.

I've played this from the start until around Ravenholm probably close to a hundred times. It's so familiar to me. There's some funky stuff going on for me, though. The characters' eyes are all wrong. G-man had no eyes at all. And the giant screen with Breen on it was missing.

Can't believe it runs as well as it does on my non-gaming laptop without even seeming to struggle. It's funny when you leave a hobby for a while. I haven't played games since the HL2 era so for me this is still state of the art.

I did say a couple of years ago that if HL3 ever came out, and it was good, that it would make me buy another gaming PC. But with current prices I don't even think that would make me do it.

Tried it on my M4 iPad Pro and was surprised that it works - to a degree. NPCs (Gman and the citizens on the train) seem to be missing eyes and have no mouth animations. FPS was pretty poor too, and it was ass to use the camera on the trackpad.

[flagged]