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

Support for more compression schemes #2

Open
eagleflo opened this issue May 23, 2010 · 7 comments
Open

Support for more compression schemes #2

eagleflo opened this issue May 23, 2010 · 7 comments

Comments

@eagleflo
Copy link
Owner

So far the development of the library has been totally dominated by Starcraft II replay format, and each file inside SC2 replays is compressed by DEFLATE. I need to investigate other kinds of MPQs and support other compression schemes as I encounter them.

@eagleflo
Copy link
Owner Author

I should add an option to ignore files with unsupported compression types for now.

@eagleflo
Copy link
Owner Author

eagleflo commented Jan 5, 2014

Looks like LZMA and sparse are relevant wrt. Starcraft II and later games. Python 3.3 added native support for LZMA with a very familiar interface.

@eagleflo
Copy link
Owner Author

eagleflo commented Sep 15, 2019

Diablo 2 uses PKWare Data Compression Library's Implode (https://support.pkware.com/display/PKZIP/DCL). https://github.com/madler/zlib/blob/master/contrib/blast/blast.c contains an open source C implementation.

@TheSil
Copy link

TheSil commented Mar 9, 2020

W3 maps also use PKWare compression, I've ported StormLib's implementation to Python to support that one in my fork, see: TheSil@a1fc59d

@eagleflo
Copy link
Owner Author

Hey there!

Thank you so much for doing this. I'd really like to upstream this. Could you make a pull request?

@TheSil
Copy link

TheSil commented Mar 21, 2020

Sure, although I am in a process of turning the compression into separate library (pypklib), will make the equest after that.

@eagleflo
Copy link
Owner Author

That would be lovely. Earlier when looking at this I found some throw-away implementations of explode / implode around but nothing from PyPI; yours would be the first implementation that I can just depend on normally.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants