Jump to content

Is there a standard for where to "root" the ZIP archive of a mod download?


Dunbaratu

Recommended Posts

I've installed some mods in which the ZIP archive has filename paths that are 'rooted' at the KSP base folder, such that the files in the archive all begin with "GameData" as the first path component of the filename. I've installed other mods where "GameData" doesn't exist in the filename paths because you're expected to unzip them INTO the GameData directory.

Which way is the standard? Which of these mods is doing it right and which is doing it wrong? Right now because there's no consistency I'm in the habit of unzipping to a temp dir first, looking at how it was archived, and then deciding to either unzip into KSP's base directory or into GameData, depending on what I saw it do in the temp directory.

Link to comment
Share on other sites

Which is sad, but there you go.

Eh, it's all personal preference on the mod author's part. Personally, I find it completely annoying to find a "GameData" folder inside the package because I know exactly where the damn thing's supposed to go and I generally want to inspect the contents anyway. What's really annoying is the <mod name>/GameData/<mod name> structure; I always figure those guys or their users must be mental.

Which brings me to another point: It also might be some indication of how smart the mod author expects you to be and if that author works on a very popular mod they might try to reduce the number of "HOW DO INSTALL???!?!" queries crapping up their threads and inboxes.

Link to comment
Share on other sites

Eh, it's all personal preference on the mod author's part. Personally, I find it completely annoying to find a "GameData" folder inside the package because I know exactly where the damn thing's supposed to go and I generally want to inspect the contents anyway. What's really annoying is the <mod name>/GameData/<mod name> structure; I always figure those guys or their users must be mental.

Which brings me to another point: It also might be some indication of how smart the mod author expects you to be and if that author works on a very popular mod they might try to reduce the number of "HOW DO INSTALL???!?!" queries crapping up their threads and inboxes.

The sad part for me is that there isn't a standard, not that mod authors don't follow one.

I don't much care if there's a GAMEDATA folder or not. I think it's cleaner that there is, especially because then the author can put non-mod stuff somewhere that won't then get installed on and clutter up my drive.


zipfilename\gamedata\mod_name\mod_stuff
\license.txt
\anything_else

is cleaner to me than


zipfilename\mod_name\mod_stuff
\license.txt
\anything_else

especially when "anything_else" may actually be needed by the mod but it's not clear without inspecting.

I won't speculate on the intelligence of people who can do something I can't. I also won't speculate on it for large groups of people in general. So, I'll refrain from the rest :)

Link to comment
Share on other sites

The sad part for me is that there isn't a standard, not that mod authors don't follow one.

Modders are generally wont to do as they please with their own code/assets; even if there was a standard, half of the people wouldn't follow it anyway.

Link to comment
Share on other sites

Plus what if you have GameData and Readme.txt in the root of the zip. Extract to /ksp/ and clobber the original readme: not good.

There are good arguments on either side of the coin, that's why there's no "standard". :)

Link to comment
Share on other sites

Eh, it's all personal preference on the mod author's part. Personally, I find it completely annoying to find a "GameData" folder inside the package because I know exactly where the damn thing's supposed to go and I generally want to inspect the contents anyway. What's really annoying is the <mod name>/GameData/<mod name> structure; I always figure those guys or their users must be mental.

Which brings me to another point: It also might be some indication of how smart the mod author expects you to be and if that author works on a very popular mod they might try to reduce the number of "HOW DO INSTALL???!?!" queries crapping up their threads and inboxes.

But you are not the user, right ? :)

As opposite to you, I think providing "GameData" inside the archive just make it very easy for anyone, you just have to take care what is inside ONLY.

Believe me or not, a tool like partCatalog is quite confusing the way it was released, with the old directory tree "skeletons" which are still there (Plugins, Plugin_data, ... on the root of KSP folder).

What really annoy me is the "garbages" modders put inside like source code, license, readme, readme_again, ... just waste of space and loading time (KSP will recursively go to all dirs to find what it needs like parts, tex, models) + it just shows some people have a poor release process and even don't check their things on a clean install and wrote in readme (if there is one !) nothing is required.

@Steven Mading: in addition to extract to temp folder, users should also try the thing on a test install first and for some time, just in case...

Link to comment
Share on other sites

But you are not the user, right ? :)

I'm a pretty heavy mod user myself, what are you trying to say here? Just because I'm a programmer doesn't mean I have special smarts or anything, I just spent a little time figuring out how my operating system works and when I download a mod I read the install instructions or readme, which in KSP are really only important in like 5% of cases (that I've seen, at least). If you consider a "readme" file to be "garbage", though, you're going to miss out on that 5% of cases and probably end up with a dim view of modders because you can't be bothered to read.

Link to comment
Share on other sites

Myself I have been a long time fan of naming the mod folder the same as the name of the mod.

000_Toolbar

Actiongroupmanager

Chatterer

CrewManifest

EditorExtensions

Engineer

Environmentalvisualenhancements

Kethane

RealChute

procedural fairings

Mechjeb2

Activetexturemanagement

and so forth.

It is really easy to look in your gamedata folder and see which mods do what.

Compare that to when mod makers name their folder after either themselves or their `space company`

Blizzy

BoulderCo

JSI

Keramzit

ThunderAerospace

TriggerTech

Now, if you don`t know already, what do these mods do? (apologies to the particular mod makers shown, these are just ones from my gamedata folder)

Looking at the names I would have no idea.

Sometimes I used to get fooled by a structure like MODNAME/gamedata/MODNAME within the zip but I always check for that now.

My preference is for the root of the zip to contain GAMEDATA but that`s just that, my preference.

EDIT :

Eh, it's all personal preference on the mod author's part. Personally, I find it completely annoying to find a "GameData" folder inside the package because I know exactly where the damn thing's supposed to go and I generally want to inspect the contents anyway. What's really annoying is the <mod name>/GameData/<mod name> structure; I always figure those guys or their users must be mental.

Which brings me to another point: It also might be some indication of how smart the mod author expects you to be and if that author works on a very popular mod they might try to reduce the number of "HOW DO INSTALL???!?!" queries crapping up their threads and inboxes.

hehe, didn`t see your railing against this particular horrible habit

I can see how having a `gamedata` folder in root would be annoying. Overwriting the standard readme is also like that although the times of that have reduced recently.

If there were a standard way of organising the zips folder structure then, as you say, it would greatly reduce the incidents of "I installed this the wrong way and now it does not work"

Edited by John FX
Link to comment
Share on other sites

Putting a GameData folder in the root is the only "standard" I've seen advocated. Some mods do need to place files elsewhere, so this reduces ambiguity, but it also helps users who aren't intimate with mod installation. We take a lot of steps to make sure users don't make mistakes during the installation process. (In the case of Kethane, these steps have all been reactive, not preventative. Users are alarmingly good at screwing things up.)

Overwriting readme files is a separate issue. That's obviously a bad thing, and it's also not a consequence of including a GameData folder.

While I agree with John FX's sentiment that folders in GameData should represent mods and not authors, I must point out that you should not rename a mod's folder unless you really, really know what you're doing. Many mods depend on their file locations being unchanged, and violating this can have weird and unexpected results.

Link to comment
Share on other sites

I'm a pretty heavy mod user myself, what are you trying to say here? Just because I'm a programmer doesn't mean I have special smarts or anything, I just spent a little time figuring out how my operating system works and when I download a mod I read the install instructions or readme, which in KSP are really only important in like 5% of cases (that I've seen, at least). If you consider a "readme" file to be "garbage", though, you're going to miss out on that 5% of cases and probably end up with a dim view of modders because you can't be bothered to read.

:) there was no offence in what I wrote, sorry if you feel that's way, it's just we are not the final user of our thing and we can't assume anything really cause there will be the people who barely know how to use a computer to the crazy geek who barely live far from his/her keyboard.

The "garbage" IMHO are everything that have no business where they are like the example I gave. By the way, my words didn't target you or your mods, it was just generally speaking regarding a lot's of contents I have downloaded so far. Just some people should care a bit more than they do, at least if they want people use their mods more than 5 mins.

What is in GameData in the archive should be as clean as possible to be drop as is inside the game folder.

Link to comment
Share on other sites

The "garbage" IMHO are everything that have no business where they are like the example I gave. By the way, my words didn't target you or your mods, it was just generally speaking regarding a lot's of contents I have downloaded so far. Just some people should care a bit more than they do, at least if they want people use their mods more than 5 mins.

The problem is that you're talking about enthusiasts. Enthusiasts are wonderful and terrible at the same time; they do whatever they want out of a love for the project. Many have no professional background, or no professional background interacting with users (in one way or another), which means you will get a diversity of thoughts on how things should be done along with an aversion to change ("I'd rather be programming/modelling instead of organizing files and writing readmes.") As I've said, you could make a standard but you'd probably only have about half of modders actually adopt it, if that many. Then again, if you could get wide adoption you'd probably reach a tipping point where everyone eventually started using said standard.

The real issue is finding enough people who like your standard and getting them to use it.

IMO, what would probably work the best, given what I've seen around here, is a structure like this:

GameData
-<mod name>
-plugins (omit as needed)
-parts (omit as needed)
Source (optional)
readme.txt
changelog.txt (optional, could also be in readme.txt)
license.txt

Good luck with that, though.

Link to comment
Share on other sites

As a simple user, I'll give my view of how it should be standarized. Of course, all of you are free to have a different opinión (as all of them are personal and subjetive).

  1. Source code isn't of any use to a final mod user 99% of the time, and the other 1% it may be more of a mod modder than a common user, it should be made a separate download. Whoever wants it, usually will know enough to find a second download and do as he needs with it
  2. A common folder structure should be used, for the less experimented users.
  3. For common sense, mod folders should be called from the start as the mod, not the modder.
  4. A single text file should be enough to cover every information about the mod, I don't see why it's needed to add a readme, a license, a changelog, the dinner's recipe... do it three paragraphs, mod installation and usage, changelog and license into a single text file.
  5. I'll add a new folder into the KSP root, where I'll send all the plugin info documents (already unified) from all the mods, separate from the useful files, so people who aren't experts have even less possibilities to mess anything while searching information.

So, how I view it, the mod compressed file (with a clear name as well) should be made to be uncompressed into the KSP root folder, with something like this inside:


KSP-0235-Modname-v100.zip

\GameData\Modname\parts\*.*
\GameData\Modname\plugins\*.*
\PluginInfoDocs\Modname.txt
\Ships\SPH\*.*
\Ships\VAB\*.*

Link to comment
Share on other sites

So, how I view it, the mod compressed file (with a clear name as well) should be made to be uncompressed into the KSP root folder, with something like this inside:

\PluginInfoDocs\Modname.txt

This is a bad idea because it obfuscates the location of a "readme.txt" file and creates additional crap in the root game folder. Ideally you should be able to move a single folder and call it good, rather than dumping the entire contents of the package into the game root (which is a terrible idea, especially if the modder makes a mistake, at least with GameData it's localized).

\Ships\SPH\*.*
\Ships\VAB\*.*

IIRC these can go into the mod's folder, so you'd have a "ships" directory alongside plugins and parts.

Link to comment
Share on other sites

This is a bad idea because it obfuscates the location of a "readme.txt" file and creates additional crap in the root game folder. Ideally you should be able to move a single folder and call it good, rather than dumping the entire contents of the package into the game root (which is a terrible idea, especially if the modder makes a mistake, at least with GameData it's localized).

IIRC these can go into the mod's folder, so you'd have a "ships" directory alongside plugins and parts.

I don't know if the game recognises ships folders anywhere else, I've only used plugins placing ships there (FAR to name one), if they can be put inside the mod folder it's even better than I thought. But I still find not a bad idea a separate documentation folder, it may be a leftover from my help-desk years, the necessity to give the user a "safe place" to read documentation (and delete accidentally files) without killing the software itself xD Anyways, if ships don't need to be there, forget about the documents folder as well.

Link to comment
Share on other sites

The only problem with making GameData the root of a .zip is that a number of issues are caused when less-savvy users unzip that into their GameData folder. Then they ask "Why is your mod broken?" when the answer is "Because you have it in GameData/GameData/whatever"...

Link to comment
Share on other sites

Which brings me to another point: It also might be some indication of how smart the mod author expects you to be and if that author works on a very popular mod they might try to reduce the number of "HOW DO INSTALL???!?!" queries crapping up their threads and inboxes.

Given that there's no official right way to do it, there's no reason to presume that people who assume GAMEDATA is in the ZIP's paths are smarter than people who presume the opposite, or visa versa. Neither assumption is 'dumber' than the other, since all you're doing is just trying to read the mind of the person who made the archive. Even if you think you know for certain that one way is superior to the other for various technical reasons, that has nothing to do with being able to read minds and detect that the mod writer did it the "right" way.

If there was a standard adapted, I'd argue that the ZIP should itself contain the GAMEDATA folder in its path (so you extract it into your KSP root folder), purely because of the consequences of getting it wrong:

* If you thought the ZIP archive did NOT contain GAMEDATA in the paths, but it turns out it did, the effect is that you install into GameData/GameData/ instead of GameData/. Result: mod doesn't work, but you can easily correct it by moving the files up one directory.

* If you got it wrong the other way around, and thought the ZIP archive DID contain the GameData in the paths, but it turns out it did NOT, then the effect is that you wrote files into your main KSP folder and might have overwritten something important. That isn't as easy to recover from.

Edited by Steven Mading
Link to comment
Share on other sites

Given that there's no official right way to do it, there's no reason to presume that people who assume GAMEDATA is in the ZIP's paths are smarter than people who presume the opposite, or visa versa. Neither assumption is 'dumber' than the other, since all you're doing is just trying to read the mind of the person who made the archive.

I'm not really speaking from my point of view there, merely speculating. It's been said that having a GameData folder in the package constitutes some sort of "self-documenting instructions", which you rightly point out can go either way. IMO, given just how easy it is to install mods for KSP, if you can't manage it you're either incredibly new to the game, incredibly new to computers, or a complete idiot.

Link to comment
Share on other sites

IMO, what would probably work the best, given what I've seen around here, is a structure like this:

GameData
-<mod name>
-plugins (omit as needed)
-parts (omit as needed)
Source (optional)
readme.txt
changelog.txt (optional, could also be in readme.txt)
license.txt

Good luck with that, though.

That's a horrible way to do it. The source, readme, license, and changelog should be somewhere under <mod name> directory, so you can have a different set of them per mod. What you've described there would cause each mod installed to clobber the files from the previous one. That's a wrong design. Not just a difference of opinion, but actually factually wrong as it makes it impossible to store the mods' files from more than one mod.

Edited by Steven Mading
Link to comment
Share on other sites

That's a horrible way to do it. The source, readme, license, and changelog should be somewhere under <mod name> directory, so you can have a different set of them per mod. What you've described there would cause each mod installed to clobber the files from the previous one. That's a wrong design. Not just a difference of opinion, but actually factually wrong as it makes it impossible to store the mods' files from more than one mod.

Why do you need the supplementary files stored with mod? Seems to me most users want less cruft in their GameData folder. This scheme gives the user exactly what they want, a package where you can literally drag the important bit (GameData) right into the Kerbal Space Program folder. It's right in your face.

Link to comment
Share on other sites

Why do you need the supplementary files stored with mod? Seems to me most users want less cruft in their GameData folder. This scheme gives the user exactly what they want, a package where you can literally drag the important bit (GameData) right into the Kerbal Space Program folder. It's right in your face.

This seems the best solution to me also. A zip containing `gamedata`. There`s only one thing to do with that really. As you say, a zip containing `gamedata` can only fail to be installed correctly be either someone very new to KSP, computers, or thinking...

I would say most normal users don`t want the source code in the zip even. I know the source code has to be available but it does not have to be in the same file/zip as the mod install. Then if you want to keep versions of the source code it makes that easier too.

Link to comment
Share on other sites

Why do you need the supplementary files stored with mod? Seems to me most users want less cruft in their GameData folder. This scheme gives the user exactly what they want, a package where you can literally drag the important bit (GameData) right into the Kerbal Space Program folder. It's right in your face.

If I lived in this imaginary universe you're referring to where those files don't matter I'd agree with you. Meanwhile over here in the real world where they do, deliberately designing a scheme that MANDATES that to match the standard you have to put them in a location that will get overwritten the next time someone installs a mod is a bad idea. I want the readme's from all the currently installed mods to be stored somewhere, not just the ones from the most recently installed mod.

Link to comment
Share on other sites

This seems the best solution to me also. A zip containing `gamedata`.

I agree with this. The part I don't agree with is where regex is insisting on putting readme, license, and changelog flat into the folder above gamedata, which is your KSP's main folder.

If I install a mod, I want that mod's files in a folder NAMED FOR that mod, not in the root KSP folder where they'll get clobbered by the next mod I install.

If you insist on having none of those files in GameData, then the alternative proposed should not make them all name clash with each other and clobber each other like what regex showed would do. If there's some reason you don't want them under GameData/mod-name, then this would be a better suggestion - to still keep them under SOMETHING named 'mod-name' to keep all the readme's and so on separate from each other:


gamedata
`-- mod's name
`-- Plugin
`-- PluginData
etc…
modfiles
`-- mod's name
`-- readme.txt
`-- changelog.txt
`-- license.txt
`-- source (if present)

Putting them in the directory one step up from gamedata, like regex suggested, means you only have the readme.txt of the most recently installed mod, it having clobbered the previously installed mod's readme.txt

Edited by Steven Mading
Link to comment
Share on other sites

If I lived in this imaginary universe you're referring to where those files don't matter I'd agree with you. Meanwhile over here in the real world where they do, deliberately designing a scheme that MANDATES that to match the standard you have to put them in a location that will get overwritten the next time someone installs a mod is a bad idea. I want the readme's from all the currently installed mods to be stored somewhere, not just the ones from the most recently installed mod.

This is precisely why we don't have a standard. You live in a world where you simply dump the contents of a package into the game folder, hoping for the best while trusting that the mod author didn't make a mistake, and then deleting the package. I live in a world where the user opens the package, inspects the contents, and then pulls out what is needed, only deleting the package (and the supporting files) once the mod is running properly.

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...