Giter Site home page Giter Site logo

Comments (5)

Ortham avatar Ortham commented on May 20, 2024 1

I'm finally picking this up, as the changes to adding tie-break edges for loot/loot#1370 change the way that ties may be broken, and this shouldn't be a problem, except that LOOT is blind to the impact that might have on assets loaded through BSAs that get pulled into the game by plugins, so sorting cannot be stable with respect to that.

Adding support for taking BSA conflicts into account won't necessarily avoid the tie-breaking causing changes, but at least those conflicts will be taken into account.

The bsa-overlap branch currently contains a spike adding support for parsing a subset of BSA files and using the results when adding overlap edges during sorting. BSA files that use big-endian numbers aren't supported, and neither are BA2 files - I don't think I've got any BSAs that use big-endian numbers, so I've got nothing to test that against, and I haven't looked into the BA2 file format yet but plan to add support for it next.

There also aren't many tests yet, and those that do exist use official game BSAs I've got installed, so the tests will fail in CI. I've manually verified sorting completes without errors logged for Skyrim SE, but haven't checked the impact of the new sorting logic.

from libloot.

Freso avatar Freso commented on May 20, 2024

If it can be made to work for BA2s too, that would be great.

from libloot.

Ortham avatar Ortham commented on May 20, 2024

I've added support for BA2 archives and a bunch of tests. I still need to add tests for the sorting changes.

Unfortunately I'm seeing unexpected duplicates across several of Fallout 4's BA2 archives: because BSAs/BA2s include hash values I'm checking for overlap using them rather than path strings, but BA2s use 32-bit hashes vs. BSA's 64-bit hashes so have a much greater chance of collision. However, I'm not sure if the duplicates I'm seeing are due to multiple BA2s containing the same file path or different file paths with hash collisions, I need to do more debugging...

from libloot.

Ortham avatar Ortham commented on May 20, 2024

I switched to calculating 64-bit hashes for BA2 archives and those duplicates were still logged, so I think they must be due to multiple BA2s containing the same file path. I'll stick with the 64-bit hashes though, as some plugins load enough assets that a collision is more likely than not when using a 32-bit hash.

I've also finished adding tests, so this is basically done - I'm only holding off merging because it potentially changes the outcome of LOOT's load order sorting, so I'm treating it as a breaking change. The changes now live in the new-tie-break-logic branch until they're merged.

from libloot.

Ortham avatar Ortham commented on May 20, 2024

Done as of bdd5f8d.

from libloot.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.