Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Virtual BSAs - BAIN packaging of projected files into a BSA #37

Closed
1 task
lojack5 opened this issue Feb 25, 2014 · 5 comments
Closed
1 task

Virtual BSAs - BAIN packaging of projected files into a BSA #37

lojack5 opened this issue Feb 25, 2014 · 5 comments
Labels
A-bain Area: BAIN (BAsh INstallers, in bosh/bain.py) A-bsas Area: BSAs and BA2s (bosh/bsa_files.py) A-links Area: Links (Options shown in right-click menus, in basher/*_links.py and basher/links_init.py) C-enhancement Category: Enhancement, a request to add or enhance a feature M-backburner Misc: On backburner - not rejected, but won't be tackled for a while M-svn Misc: Issue was carried over from the old SVN repo
Milestone

Comments

@lojack5
Copy link
Member

lojack5 commented Feb 25, 2014

sourceforge

Original request:

This will be more useful for Skyrim than Oblivion, but it would be nice if one day BAIN could be used to package loose files in a project folder into a BSA for distribution since the Creation Kit's native handler for this is bugged to the point of nearly being unusable.
Where "package for release" exists, a new option below that reading "package for release using BSA" should be added.
Obviously will require Bash/BAIN to support BSA handling to begin with, but perhaps there's a way to make this work by routing the request silently to BSAOpt if it's installed?

My idea would be much more far-reaching, similar to this MO2 plugin: https://github.com/ModOrganizer2/modorganizer-bsapacker
Basically, there would be two different configurations - one global, and one per installer. If you enable this feature, then you can configure 'rules' for which files will be packed into BSAs/BA2s.
This would be based on folder names and wildcards, with a hierarchical system where the per-installer config overrides the global one. Obviously we should provide a sane default (e.g. excluding FNIS files from the meshes folder).

BAIN would then take those files and write out one or more BSAs (remember, BSAs have a ~2GB size limit) if possible (e.g. in Skyrim, splitting is not possible, since it can only load one BSA per plugin).
That BSA should obviously be cached - our entire 'BSA cache' folder needs rethinking no matter what, this would be a good opportunity.

Blockers:

@Sharlikran
Copy link
Contributor

I'd be leery of such a thing. There are files that are not referenced in the plugin. Examples are 1) 0 slider meshes (famalebody_0.nif) and I think textures as well. 2) NPC custom voice files. I think SEQ files too. So although this would be a nice feature the CK is still the best way to do it.

The bug is normally related to things the CK does not like. Things like errors in the plugin, nav mesh errors, meshes, missing textures, missing mip maps or tri files, and just missing files in general. This is partially resolved by using TES5Edit "Asset Manager" to look for missing files and textures.

Even Zilav attempted to do this and could never make it perfect. The package would be incomplete in some cases and users would ask why it works for some mods and not others. In other cases it would include too many files. TES5Edit can currently copy the used files but sometimes it copies files already in the DLC BSA files. It's still a work in progress but it could be difficult to implement.

You would probably want to scan the official BSA files and if the CRC is the same, then don't include the file. You would only have to scan the DLC's BSA files once as long as their CRC didn't change.

@Arthmoor
Copy link
Contributor

Arthmoor commented Aug 19, 2014

You might be misunderstanding what I was originally filing.

You know how Bash has project folders in BAIN, right? Where there can be a bunch of loose files gathered up in a folder, along with the esp file and perhaps the readme too. The "package for release" function works beautifully if you're sticking with loose files and is awesome for Oblivion project management. I handle all of my releases there this way.

Basically all I'm looking for with this is to have an additional option available (perhaps only show it in Skyrim or something) where you can choose the same option only have it route all the loose files in the various folders into a BSA instead. THEN package the bsa, esp, and readme file into the actual 7z archive to release.

The CK is garbage for this function. It includes files that don't belong, and ignores others that do. Currently I'm using a bit of a hackish method to do this: http://www.afkmods.com/index.php?/topic/3054-skyrim-using-bain-and-archiveexe-to-package-a-skyrim-mod/ and would much rather have proper BAIN support for it instead to eliminate the need to rely on using archive.exe manually.

Also, when I first made this request, BSAOpt was more or less the only game in town. I don't particularly like that program and don't think it would be a good way to go with this now. If archive.exe itself can be called upon to set up a BSA then that would be awesome. Otherwise it would likely be best of Bash had its own BSA packaging code.

@Sharlikran
Copy link
Contributor

No you are right I did misunderstand that. I have made a few Project folders recently. Now I get what you mean. Thanks for clarifying that for me.

@Infernio Infernio added the A-bain Area: BAIN (BAsh INstallers, in bosh/bain.py) label Dec 18, 2019
@Infernio Infernio added this to the 308 milestone Jan 23, 2020
@Infernio
Copy link
Member

Infernio commented Jan 23, 2020

Ref #233, this basically depends on the same things (being able to write BSAs).

Also, we may look for inspiration in the new MO2 plugin for doing something like this: https://github.com/ModOrganizer2/modorganizer-bsapacker

@Infernio Infernio added A-bsas Area: BSAs and BA2s (bosh/bsa_files.py) A-links Area: Links (Options shown in right-click menus, in basher/*_links.py and basher/links_init.py) labels Mar 1, 2020
@Infernio Infernio changed the title BAIN packaging of projected data into a BSA BAIN packaging of projected data into a BSA - 'Virtual BSAs' Jul 8, 2020
@Infernio Infernio changed the title BAIN packaging of projected data into a BSA - 'Virtual BSAs' Virtual BSAs - BAIN packaging of projected files into a BSA Jul 8, 2020
@Infernio Infernio added the M-backburner Misc: On backburner - not rejected, but won't be tackled for a while label Oct 15, 2020
@Infernio
Copy link
Member

On the backburner, BAIN is currently too much of a mess for this.

@Infernio Infernio modified the milestones: 309, 310 Feb 22, 2021
@Infernio Infernio modified the milestones: 310, 311 May 18, 2021
@Infernio Infernio modified the milestones: 311, 312 Jul 4, 2022
@Infernio Infernio modified the milestones: 312, 313 Jan 5, 2023
@Infernio Infernio modified the milestones: 313, 314 Dec 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-bain Area: BAIN (BAsh INstallers, in bosh/bain.py) A-bsas Area: BSAs and BA2s (bosh/bsa_files.py) A-links Area: Links (Options shown in right-click menus, in basher/*_links.py and basher/links_init.py) C-enhancement Category: Enhancement, a request to add or enhance a feature M-backburner Misc: On backburner - not rejected, but won't be tackled for a while M-svn Misc: Issue was carried over from the old SVN repo
Projects
None yet
Development

No branches or pull requests

4 participants