• We are currently performing site maintenance, parts of civfanatics are currently offline, but will come back online in the coming days. For more updates please see here.

BLP files?

The address of the original link is incorrect -- its subdomain is "civgames". The correct subdomain is "civ6". This forum won't let me post links for clarity, because it thinks I'm a spambot.
 
The link is fixed.

Now. Shall we make an archiver or wait until sdk release?
 
The link is fixed.

Now. Shall we make an archiver or wait until sdk release?

Having a BLP packer/unpacker would be great but it will be a lot of work, and might become redundant if they provide a tool to do it. I'd probably say wait until the release myself and see what tools we get.
 
Where did the BLP information on the gamepedia wiki come from?
 
I've started work on a Java-based parser based on that extremely helpful wiki entry. I'll report back when it's moderately complete. So far I only have the BLPHeader, PackageHeader, and PackagePreamble properly parsed.
 
Real questions are;

-- Will it de-serialize everything as to collate relevant objects?
-- Would it be tied with run-time hooks to either visualize results directly or via external "viewers"?
-- Should it be('come) an assets Extractor & also, a tool to simply Pack + Re-Pack content?

Otherwise.. hurry up and thanks! :cool:
 
I haven't gotten far enough to inspect the contents at any great length. I have no idea what's serialized in there. As far as repacking, that's actually quite a bit trickier than unpacking. The program will really just be parsing and unpacking the BLP content based upon the struct definitions in that Wiki page.
 
Yeah, be interesting to get into some of these. SkyBox, for instance.
Spoiler :
QuOomHy.jpg
 
I've hit a bit of a wall, so I'm looking for people to help me out. I'm fairly confident I have much of it working, but I'm a bit stuck on what I'm supposed to do with the String:Global members. They should be 64 bit pointers (i.e. Longs), but they don't always decode to non-zero values, and when they do they seem to be crazy. Maybe I'm doing something wrong. Btw, this is spaghetti code, expect a major refactor if I can resolve this problem. Right now the way it works is you basically just instantiate the Java classes for a given struct with a properly positioned ByteBuffer (and sometimes, additional necessary information) and it returns an Java object describing that struct as it could parse out from the buffer. There's not a lot of comments, but feel free to ask me questions.

I'm mostly posting this really incomplete so I can get some other eyes on the pointer situation. I'd like some help if possible. All the struct classes have autogenerated toString() methods, which do NOT print out the value as an unisgned integer. That was a lot of additional work. If you want to check the actual value, convert the decimal to hex and see for yourself.

Thanks yall!

Here's the repo: https://github.com/sgarfinkel/blpdecoder

Any updates worth pushing will end up in a develop branch. Right now the only remote branch that's up there is master, though.

EDIT: There was a bug, I was missing a Long field 'qwUserData' in the PackageAllocation, but I'm still not getting any meaningful value for the sTypeName.
 
Last edited:
I've tried to write my script, but i'm still a newbie to programming. (( But Luigi has a lot of experience in writing such things. He can help you.
 
I've hit a bit of a wall, so I'm looking for people to help me out. I'm fairly confident I have much of it working, but I'm a bit stuck on what I'm supposed to do with the String:Global members. They should be 64 bit pointers (i.e. Longs), but they don't always decode to non-zero values, and when they do they seem to be crazy. Maybe I'm doing something wrong. Btw, this is spaghetti code, expect a major refactor if I can resolve this problem. Right now the way it works is you basically just instantiate the Java classes for a given struct with a properly positioned ByteBuffer (and sometimes, additional necessary information) and it returns an Java object describing that struct as it could parse out from the buffer. There's not a lot of comments, but feel free to ask me questions.

I'm mostly posting this really incomplete so I can get some other eyes on the pointer situation. I'd like some help if possible. All the struct classes have autogenerated toString() methods, which do NOT print out the value as an unisgned integer. That was a lot of additional work. If you want to check the actual value, convert the decimal to hex and see for yourself.

Thanks yall!

Here's the repo: https://github.com/sgarfinkel/blpdecoder

Any updates worth pushing will end up in a develop branch. Right now the only remote branch that's up there is master, though.

EDIT: There was a bug, I was missing a Long field 'qwUserData' in the PackageAllocation, but I'm still not getting any meaningful value for the sTypeName.
Does this work and if so how do you use it?
 
Does this work and if so how do you use it?

No it doesn't. This is an old thread made (almost) redundant by the release of the SDK and the SDK Development Assets by Firaxis.

It's now clear that the .blp cooking process is a lot more complex than just collecting and compressing a bunch of files in a ZIP file so it's unlikely there will ever be a .blp unpacker. .blps can be made using ModBuddy. Fortunately we don't need one as Firaxis have made the raw base game art assets available for download. The only limitation is that we don't have the Development Assets for the DLC - understandable but it would be nice to have everything.
 
Yeah sorry I kind of abandoned work on this. There were some discrepancies between the actual binaries and the encoding scheme I was provided, so I stopped working. I was kind of doing it on a whim anyways, and as Deliverator said, this should be superseded eventually by actual mod tools.
 
Well, was it? The mod tools don't seem to provide anything for BLPs

I answered this a couple of posts back. We don't need to uncook .blp files because we have the Development Assets.
 
I answered this a couple of posts back. We don't need to uncook .blp files because we have the Development Assets.

Ohhhhh OK :p
I do NOT like the ModBuddy interface, so I've been using Notepad++.
I've been looking for how to make these for months. I guess they've been right ahead of me the entire time.

Thanks!
 
Back
Top Bottom