• 0 Posts
  • 458 Comments
Joined 2 years ago
cake
Cake day: June 10th, 2023

help-circle

  • There are a lot of moving parts, so let’s start from the ground up. Processors are glorified input-output machines, you put electricity in some pins, and it gives you back electricity in other pins. Some of those pins define which operation you want and others give the input, so for example sending 00000010 to the operation could mean addition, so the output pins will show the result of the addition of your inputs. Each binary number can be interpreted as a decimal or hexadecimal number, but people are bad at remembering numbers, so instead we can have a table of conversion that says for example that ADD means 00000010, so you write a program saying ADD 2 3 and that’s called assembly language.

    Each processor has their own table of which operations it can do, so writing assembly is tedious since you need to know and account for all of that. Instead you can write in a higher level language where a program called a compiler will translate your code into assembly taking all of the considerations for different processors.

    So far, so good, but there is some stuff which is recurrent and requires special care. For example a processor knows nothing of the disks or memory in the system, so you need a program to be running there to manage stuff. We call that program an Operating system.

    Different operating systems do things differently, one might store things in any order on the disk to save on write speed while others might choose to align data where suitable to save on read speed. And they provide different high level APIs for it, e.g. one OS might have the open_file(char* full_path) while other could have open(char* folder, char* file). So if a program tries to call open in an OS that uses open_file the program won’t know what to do.

    Then just like OS sometimes programs try to use libraries that they expect to be installed in your system, such as DirectX on Windows. These libraries also have their own functions that the program tries to call.

    So now we get to a game which is trying to call a function from DirectX which is trying to call something native to Windows. There’s no way Linux knows what to do with that.

    So a few people realized that if they reimplemented the functions from windows but calling the equivalent functions on Linux you could get the programs to run. They also realized that you can reimplement DirectX using OpenGL calls, or more recently Vulkan. Putting those stuff together almost every call a game is likely to make calls one of these reimplementation which in turn calls the Linux kernel, which in turn calls the corresponding set of instructions on the CPU to do stuff the Linux way. The end result is that most things work, however sometimes the game developer tries to be smart and makes assumptions about how the OS will do something, and then face some errors because Linux did something slightly different.

    But the VAST majority of times when a game doesn’t work is because the game developer is actively trying to ensure you’re not doing anything weird, such as running the game on a different OS.



  • Wow, that’s very unfortunate. If you installed docker through package manager and have added yourself to the group I believe this to be self-imposed, I don’t know which mechanism Docker uses to give access to users in the group to its service, but seems related to that since it looks like the service is running but just your user can’t access it. To confirm it’s just that run the compose command as root, i.e. sudo docker compose up, this is not ideal but if that works you know it’s a permission problem with your user.

    You seem to know your way around Linux, so it’s probably not something obvious. I’m almost sure it’s something stupid and self imposed, I’ve done my fair share of stupid shit like leaving a config file malformatted or deleting a library or installing something through manually copying files only for something else to break because I overwrote something important.


  • I know you probably heard this thousands of times, but really, if you’re into self-hosting docker is a blessing. People make it harder than it needs to be when explaining all of the ins and outs. I assume you have a Linux box where you run your stuff, just install docker and docker compose there (you might need to enable the docker service, add your user to the docker group and reboot, unless you’re using a user friendly distro like Ubuntu). Then just make a folder anywhere for Silverbullet, create a file named compose.yaml and put the following text there:

    # services means that everything inside is a service to be deployed 
    services:
      # this is the name of the service, you can put whatever you want
      silverbullet:
        # this is the docker image to use
        image: zefhemel/silverbullet
        # this is the rule to restart in case of crashes
        restart: unless-stopped
        # these are environment variables you want defined
        environment:
        # this is a specific variable for Silverbullet, it's essentially username:password change this accordingly 
        - SB_USER=admin:admin
        # volumes are local folders you want to be available
        volumes:
          # in this case we want that the folder ./space be mounted as /space inside the container
          - ./space:/space
        # these are the ports we want to expose
        ports:
          # This means expose port 3000 on port 3000, if you want to access Silverbullet on port 8080 this would be 8080:3000 (because internally the service is still listening to 3000)
          - 3000:3000
    

    Then run docker compose up and you should be able to access it on the port 3000.

    Ling story short docker compose looks for a file named compose.yaml in the local directory, and that file above has all of the information it needs to run the server. I’ve annotated each line there, feel free to remove the comments.


  • I can cite way more than 5 excellent games from this decade from the top of my head, We’re almost in 2025, so I’ll limit to games released in or after 2015:

    • Factorio
    • RimWorld
    • Stellaris
    • Fallout 4
    • Overcooked 2 (and all you can eat)
    • Life is Strange
    • Cyberpunk 2077
    • Before your eyes
    • Dead Cells
    • Shadow Tactics
    • Cities Skylines
    • The outer worlds
    • Two point hospital

    I can keep going, but this is just from the top of my head, there are always good games getting released, and very rarely they’re AAA.


  • I love the idea of the game, and started playing it. But realistically it needs you to commit to some continuous time otherwise you forget what you’ve learned, and I haven’t had the time yet. I played it for a few days, explored lots of places but didn’t learned anything, possibly I was looking on the wrong planets and trying to figure out how to do it right on that planet got frustrated because I didn’t have something that was needed, or something… But I do love the idea of the game, and I want to go in blind. But some of those puzzles can be really frustrating when you only have a few minutes per day and forgot all about them by the next time you try to solve them.


  • What issues? Who makes it out to be bad? As far as I remember everyone has always loved this game, it’s like saying “despite the issues with Fallout New Vegas, it’s not as bad as people make it out to be”, or Skyrim, or Red dead redemption 2, it’s the kind of game I don’t think I’ve ever heard someone complaining about it (except perhaps for the existencial dread caused by finishing such a good game and not knowing what to do next)


  • Depending on what you mean by casual, I consider Dead Cells a casual game, because whenever I’m bored I pick it up and play for a while, but it’s one of the hardest games I’ve played, however because it’s rogue like it doesn’t matter if you die a lot. Another similar example would be Factorio with enemies turned off, just go there, fix something, add something new and quit the game near the next thing you want to do so you remember it next time.

    If you’re looking for a more traditional definition of casual games I tend to play those in the phone, I really like mini metro and super hexagon (although again, this one might not fit your definition of casual)






  • Not what you’re asking, but in case it helps. I don’t use Obsidian, I use https://silverbullet.md/ it’s very similar, markdown files with the ``[[other note]]` syntax (as well as some querying mechanism that I believe Obsidian also has), in short it’s almost an open source version of obsidian but it has some advantages IMO:

    • It is open source
    • It provides a sync mode, where you download the text to your device and it’s accessible offline to get sync afterwards.
    • It’s hackable so you can write your own functions and styles

    I’m surprised almost no one has heard of it, the main developer is here on Lemmy, that’s how I found out about it. BTW I also use syncthing to keep backups of my data, and even specifically to not sync a work folder outside of the work computer even though the rest is synced, so I can access Silverbullet from localhost on the work computer and get everything there and any changes to non-work stuff get synced to my home server, and from my personal server get everything except work stuff.


  • It’s complicated, for me personally having one or two extra properties you’re providing a service, not everyone wants to buy a house at every moment, e.g. I recently moved to another city and wanted to live in a neighborhood for a while before buying something. The more you have, the more part of the problem you become, because when someone wants to buy somewhere they now can’t because people own it for renting. Also, again personally, if the value of rent is higher than the value of the mortgage, then you’re ripping people off, because you’re essentially buying the house with their money while they can’t buy a place of their own. As an example, I want to buy a place of my own, but every place here is so expensive because people buy them to rent, because the rent is higher than the mortgage so if you have the initial money buying a house is essentially free money, however rent is so high that getting the initial money is really hard and people are stuck with paying more to own nothing.


  • Steam also offers DRM-free games, and they don’t hide them behind a closed installer. I don’t like installers since they’re yet another moving part that can break, e.g. an installer built for windows 95 might not work even though if you were to extract the game binary from it it would work, so having an installer could make a game less compatible.

    The ideal form of distributing games is compressed folders, I recognize this is less user friendly, but it is the format that most preservation effort uses (e.g. zip of a ROM, instead of an installer that installs the emulator+ROM like what GOG is doing).

    I’m also not shitting on GOG, I believe they’re a good company, although I’m not their target audience since they refuse to sell me games I can play on my Linux machine. I’m all in favor of DRM-free and wished they would be more strict about it, that could convince me to buy some stuff from them. I did bought games from them in the past until I grew tired of almost no game having Linux compatibility and them not offering an official client, plus I noticed that some games had DRM and that was the last straw for me, because of I’m going to be buying maybe DRM-d games, might as well do it while giving money to a company that cares about my use-case.

    I think GOG should be praised for some of what they do, particularly by their anti-DRM stance (even though they’re not 100% behind it). But what annoys me is that people seem to praise them as if they were doing this amazing work that no one else is doing, when most of the stuff people get overly excited about is just a marketing move and Steam is usually doing much better work in that regard, but is usually cited as the bad guys by the people who drank the GOG Kool-aid.


  • preservation efforts that allow me to run the games I know on the hardware I am running will mean more to me.

    You mean software, your hardware is perfectly capable of running Linux+Wine. But again, this is a very personal response, my personal computer is Linux, therefore what GOG is doing means less to me by your own definition, which is why I don’t think it makes any sense to try to bring platform into the table. In fact, since apparently they’re responsible for the DOSBox version that a game uses, and there is a native version of DOSBox for Linux, this means that the decision of the game not being available on Linux is entirely on GOG.

    Imagine Valve was financing an emulator, and GOG was compromising themselves to keep a binary updated with the latest version of that emulator whenever problems appeared on the old version, which of them is doing more for the preservation of games? The only difference is that the “emulator” Valve is financing is not the same as the one that GOG is using.

    I’m not saying that there isn’t value in what GOG is doing just because it doesn’t affect me, but as is they can only help preserve DOS era games, so investing in DOSBox and hosting the ROMs would be a much more valuable approach (half of it they’re already doing, they do in fact host the ROMs, you just get 50 extra copies of DOSBox in the process). What I’m saying is that I don’t understand why everyone thinks they’re so great for doing what they’re doing, they could be investing in getting wine to run on windows which would be a much better effort for the preservation of games for your platform.


  • Proton is essentially just wine, but:

    Backward compatibility in Wine is generally superior to that of Windows, as newer versions of Windows can force users to upgrade legacy Windows applications, and may break unsupported software forever as there is nobody adjusting the program for the changes in the operating system

    Source: https://en.m.wikipedia.org/wiki/Wine_(software)

    Valve’s has been financing the development of Proton (and wine), so their efforts are to improve an open source tool that can be used and enhanced by anyone, which among other things provides excellent compatibility. That is a much better commitment to preserving games than choosing a handful of titles and updating their compatibility layer when the old one breaks. In other words, GOG is choosing a couple of games to update their emulator periodically, Valve is financing the development of an emulator for old games. The two things are not even in the same league for how much they help preservation of old games as a whole.

    As for the question of windows users, I don’t think wine runs on Windows natively, but I assume one could use WSL as a stepping stone. In any case GOG’s method also doesn’t address Linux or MacOS users, so I don’t see how bringing platform into the mix makes any difference.


  • Yes… But actually no. For these games, sure, they’re committed to update the dosbox, but for more modern games there’s nothing that can be done on GOG since if the binary breaks for windows lack of backwards compatibility, they’re done because they don’t have access to the code. This works for these games because they’re being emulated, so they can maintain them by extracting the ROM and updating the emulator.

    IMO what Valve is doing is leaps ahead, Proton can be used to maintain even broken binaries by providing compatibility with older versions of binaries from Windows. Not to mention the runtime library shipped with Steam for native titles.

    It’s always mind boggling to me how GOG does something which Steam is already doing (sometimes, like this, they do a worse job at it), yet they get all of the credit as if they’re revolutionizing the way the industry works. Allowing people to download a game they bought, even if delisted, is the standard, and Proton is a much better preservation tool than whatever GOG is doing behind the stages, because it’s open source and if Steam ever goes under it will continue to exist, whereas on GOG solution you depend on GOG for it to keep working.