• 11 Posts
  • 239 Comments
Joined 1 year ago
cake
Cake day: June 10th, 2023

help-circle





  • There’s a host app that runs on the host machine alongside Sunshine that reads your Steam library, and the Deck plugin adds an icon on each game’s banner on your Deck. When you click the icon, the plugin communicates with the host app and then automatically starts a Moonlight/Sunshine session that then starts up the game you were on. You only have to add one “app” to Sunshine and set up the MoonDeckBuddy app on the host, and then you have streaming for your entire library available.









  • I could go in-depth, but really, the best way I can describe my docker usage is as a simple and agnostic service manager. Let me explain.

    Docker is a container system. A container is essentially an operating system installation in a box. It’s not really a full installation, but it’s close enough that understanding it like that is fine.

    So what the service devs do is build a container (operating system image) with their service and all the required dependencies - and essentially nothing else (in order to keep the image as small as possible). A user can then use Docker to run this image on their system and have a running service in just a few terminal commands. It works the same across all distributions. So I can install whatever distro I need on the server for whatever purpose and not have to worry that it won’t run my Docker services. This also means I can test services locally on my desktop without messing with my server environment. If it works on my local Docker, it will work on my server Docker.

    There are a lot of other uses for it, like isolated development environments and testing applications using other Linux distro libraries, to name a couple, but again, I personally mostly just use it as a simple service manager.

    tldr + eli5 - App devs said “works on my machine”, so Docker lets them ship their machine.



  • Aspyr’s KotOR port was considered pretty good, I believe. I was disappointed in their Civilization series ports for Linux because their netcode was incompatible with the Windows versions, which is baffling to me, considering Linux users are already siloed so much in other ways. But the games ran okay, so it wasn’t all bad.

    But yeah, I haven’t really heard any good updates or news come out of Aspyr for a while. If I recall correctly, they were the original devs for the KotOR remake, which was going to be their first game from the ground up from a technical perspective. But they had that taken away from them after working on it for a year or two, which is crazy. It must’ve truly been awful.


  • Aspyr has a history of laziness and incompetence, unfortunately. I really want to like the company because they were one of the few companies bringing my favorite games to Linux (KotOR and the Civ series) before Steam and Proton got so damn good. But their Civ ports were always plagued with weird bugs not in the original games, not to mention they didn’t have cross-platform multiplayer, preventing me from playing online with my Windows-using friends unless I dual-booted or tried to fight Wine. And somehow their Civ save file format is different, so you couldn’t even switch between Windows and Linux and continue the same game. It was baffling.




  • The reason this works well for certain applications and not others comes down to programming language / framework and compilation optimization.

    If the application was compiled directly into an executable binary and optimized, it can be decompiled, but it won’t be human-readable. Programmers would have to delve in and manually trace the code paths to figure out how it works. Fun fact, this is how a lot of the retro game decompilation projects are happening. Teams of volunteers are going through the unreadable decompilations and working together to figure them out.

    Dotnet and Java based applications are easier, because they don’t usually get directly compiled into machine-executable binaries, and even when they do, it’s still easy to decompile them. This is because they’re both compiled to an intermediate language that’s more optimized than the original, then that IL is run by a runtime. Dotnet’s IL is called Common Intermediate Language and Java’s is called bytecode. This sounds weird, but it’s kinda cool, because it lets people write different languages without having to have a full compiler. They just have to be able to get it compiled to an intermediate language, and then the existing runtime can take it from there.