Comment by bsimpson

13 hours ago

I recently happened into Balatro through a Game Pass trial. I fell deep down the rabbit hole of trying to get it to run on SteamOS.

It's fascinating to see a commercial game whose source is easily read inside the application bundle, and all the modding opportunities it opens up. (It's written in Lua with LÖVE.) Balatro was one of the biggest games of last year, and I'm sure the tinkerability was a big catalyst to that - people porting it to obscure platforms and making mods to extend the game.

It's also really cool to see how the game handles all the different ecosystems it exists in (Steam, Game Pass, Apple, Android, Nintendo Switch…).

I've got a Nix derivation that ought to be able to run any version of the game in Linux. Now I just need to figure out why it crashes when opened in game mode.

All this is way more effort than just spending the $10 to get it to run in Steam natively, but it's more interesting this way.

> Balatro was one of the biggest games of last year, and I'm sure the tinkerability was a big catalyst to that

Not sure I agree on that point. Balatro is a great game and the mainstream success is warranted, but my gut tells me that the technical implementation was not the catalyst for that. Sure, Lua’s portability could have led to the cross-platform popularity, but a mainstream gamer does not tinker with and mod Balatro at all.

  • Yeah it is just a really easy to grasp game that pushes the right addiction buttons in our brain (see also the enormous success of megabonk)

Reminds me of WhatsApp that was on all devices early on to maximize their network effect.

> get it to run on SteamOS

Huh? I had to do zero extra work to run it on the steam deck.

  • The version sold in the Steam store runs the Windows build via Proton. (Valve's whole philosophy is you should build one version of your game, and their compatibility layers should be so bulletproof that it runs flawlessly everywhere.)

    In this case, I had the Game Pass version. It depends on a custom shared object `love.platform` that talks to Microsoft's cloud APIs to save/load your game and achievements. I used Gemini to write a bridge that implements all the `love.platform` calls in pure Lua, and then use the Linux build of LÖVE to run the game natively.

    Works great in KDE. Crashes when launched from Steam. Haven't gotten to why yet.