Git Product home page Git Product logo

Comments (9)

snake-biscuits avatar snake-biscuits commented on July 3, 2024

Header clunk has been lessened, but base.Bsp methods still need work.
ValveBsp is preferred when QuakeBsp should be the default, as ancestor of all.

ValveBsp GAME_LUMP handling is clunky
Dynamically opening a bunch of files and indexing into them is kinda messy & doesn't suit every setup
Though it does make for an OK setup when comparing multiple .bsps, it makes complex operations slow
e.g. converting to blender geo

from bsp_tool.

snake-biscuits avatar snake-biscuits commented on July 3, 2024

Header parsing now works OK, but we need other identifiers for shared headers

ata4/bspsrc detects unique entity classnames to determine branch
This still isn't 100% accurate as unique entities may not always be present
Still could be a deciding factor in cases where lump sizes match, however

checking the filepath for game names could help, but ideally all info needed should be in the .bsp

CSO2's split (pre/post 2018) will likely need to be determined by lump size, as filepath and entities likely didn't change much
(no determinant has been found yet anyway)

from bsp_tool.

snake-biscuits avatar snake-biscuits commented on July 3, 2024

Grabbing a list of potential branch scripts & hooking just the header reads from bsp classes might be a valid approach

Filemagic -> BspClass must be decided first
Checking all lump sizes will not confirm a .bsp's format 100% of the time
(raise a UserWarning if checking lumps sizes doesn't confirm the format)

This also requires checking for compressed lumps if ValveBsp or a subclass of ValveBsp
And incomplete / incorrect branch scripts will break this method anyway
So no matter what difficult to indentify .bsps will cause issues somewhere for the user if they don't already know it's origin

More documentation around these cases is needed!

NOTE: we do have some strings in branch scripts to try using filepaths as a hint (but this should only be an option with clear warnings)

from bsp_tool.

snake-biscuits avatar snake-biscuits commented on July 3, 2024

ValveBsp is preferred when QuakeBsp should be the default, as ancestor of all.

commit 2a60a1f brought base.Bsp more inline with QuakeBsp, removing all references to versioned lumps

This means the more common QuakeBsp subclasses are no longer aligned with ValveBsp by default
And the inheritance tree of all BspClasses now better reflects the engine family tree

from bsp_tool.

snake-biscuits avatar snake-biscuits commented on July 3, 2024

Considering that at present we have no way of guaranteeing the branch_script of any .bsp in these edge cases, we 100% need to give the user a warning that the automatically selected branch_script may be incorrect

Corrupted & encrypted .bsps will likely also create all sorts of issues

from bsp_tool.

snake-biscuits avatar snake-biscuits commented on July 3, 2024

#16 having a bunch of very similar minimum viable maps would be very useful for this
mp_lobby.bsp simple box & light likely won't have any distinct entities or lumps
Telling maps that basic apart would make for a great test.

from bsp_tool.

snake-biscuits avatar snake-biscuits commented on July 3, 2024

Drawing clues from the paths of .bsps will be hugely helpful
But we should really build a database of key identifiers (unique entities, struct sizes etc.)

from bsp_tool.

snake-biscuits avatar snake-biscuits commented on July 3, 2024

wfowler1/LibBsp also has a fair few autodetect methods for various formats

Including some bsp formats we don't support yet... (cod1 demo & stef2 demo)
Found 2 cod 1 sp demos CallOfDutyView.net
STEF2's demo is available on the internet archive
Installers only though, not the extracted files

from bsp_tool.

snake-biscuits avatar snake-biscuits commented on July 3, 2024

A lot of Source Engine version conflicts come down to StaticProp version
We could write a barebones VBSP inspector to check the SPRP version & size (from num_props)

from bsp_tool.

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.