cloudyluna / cdda-custom-experimental

My nix flake to install & run pre-built Cataclysm: Dark-Days-Ahead experimental from CDDA repo.
1 stars 0 forks source link

Add some clarification into the readme #3

Open Raikiri opened 1 month ago

Raikiri commented 1 month ago

The flake says that it downloads and runs "the experimental CDDA build", but which one? Do you have a version hardcoded? Is it the latest version that updates every run? Do I manually specify a revision somewhere? Is there a way to run without updating? What's the intended way to run cdda after installing this flake locally?

Another question that I have is maybe not exactly relevant to this project, but it definitely is relevant to running CDDA on Nix in general: does it make sense to create a flake for a launcher (like catapult) that would in turn do all the updating and management, or is this flake an alternative to having a launcher?

I think it's a very useful project, but for complete flake noobs like myself it would really help to do add some basic explanation into the readme :)

cloudyluna commented 1 month ago

The latest README.md in 0.3.0 should answer most of these questions, except for:

Do you mind elaborating this? I'm not sure if I get what you mean.

I elaborated this a bit in the README, but to be exact:

No. I prefer to hold on to the version that actually works and with all the things that comes in #extras. The experimental series is a quickly changing one..and it's a pretty fast moving target. Say, if I automate the version update through Github's CI, then it also means I need to test these on my own, which I certainly do not have time and mental energy to do. The update interval is about daily from what I can see. The game version I used before 0.1.0, which was about a month ago, already broke Tankmod_Revived compatibility, for example.

Umm, I'm not really confident to answer this with my still shallow nix knowledge. Sorry.

You could say that, yeah. It's not a traditional CDDA game launcher/manager for sure. I made this flake largely to edit things through the code and also to ensure the configuration remain reproducible as best as they can, as advertised by nix.

Raikiri commented 1 month ago

Is there a way to run without updating Do you mind elaborating this? I'm not sure if I get what you mean.

Ok I should have probably clarified this further, because it's kind of the most important point. Not sure how familiar you are with the way experimental CDDA launchers work, but the idea is that by the default when you run the launcher it allows you to run your currently installed version of CDDA experimental. However, you also have the option to see the changes that happened since you last update (from github changelog), check the reddit and if you feel safe you can bump your version to the most recent one. You also often have the ability to roll your version back if the update did not go well.

Usually that workflow results in you going to the CDDA reddit, making sure there's no catastrophic changes and updating the game via the launcher. If there are catastrophic changes (or you don't want to deal with the consequences), you just run your currently installed version of the game without updating it.

So the launcher (catapult, etc) is responsible for the process of fetching the latest version, rolling you back if needed and a bunch of other functions that are mostly extras (like backing up your saves).

While it's nice of you to test the stability of the CDDA experimental and updating the version in the script manually every now and then, ideally there should be a way for the user to update to the most recent experimental version or to run the game without updating it, using whatever is currently downloaded.

I wonder if the right way to do this would involve the .lock files of flakes that are designed to do basically that: to pin the exact versions of each dependency and to update them when needed. So in this workflow the flake itself would have a pinned version of cdda-experimental in the .lock file and the user would have the option to update the pinned version to the most recent one when they feel like it.

And maybe the alternative would be to create a flake that would only fetch the launcher (catapult) and then the launcher itself would allow the user to download whatever version of the game they want. I tried to modify your flake to fetch catapult instead, but unfortunately catapult has a bunch of annoying dependencies on xorg and I could not figure out how to resolve them yet.

I apologize if you think the catapult discussion is outside the scope of this project or it's not something you're interested in.