Add IPK7 for detectable self-contained IWADs
Moderator: GZDoom Developers
-
- Posts: 806
- Joined: Thu Apr 25, 2013 12:21 pm
- Preferred Pronouns: They/Them
- Operating System Version (Optional): Windows 11 for the Motorola Powerstack II
- Graphics Processor: nVidia with Vulkan support
- Location: The Corn Fields
- Contact:
Add IPK7 for detectable self-contained IWADs
I noticed IWAD and IPK3 are valid extensions for the new IWAD detection code. Why not IPK7 (for 7zip) as well?
Re: Add IPK7 for detectable self-contained IWADs
I'm pretty sure it's because PK7s are stupidly slow to unpack... And Graf doesn't like them, for that reason.
See here:
See here:
Graf Zahl wrote:No ipk7's. Period. Opening a 7z file takes too long and will delay the startup quite considerably. Opening WADs, Zips or PAKs is fast but 7z needs to do a significant amount of decompression before being able to analyze the content.
-
- Posts: 806
- Joined: Thu Apr 25, 2013 12:21 pm
- Preferred Pronouns: They/Them
- Operating System Version (Optional): Windows 11 for the Motorola Powerstack II
- Graphics Processor: nVidia with Vulkan support
- Location: The Corn Fields
- Contact:
Re: Add IPK7 for detectable self-contained IWADs
I didn't see that. That's too bad, 7zip is a bit more easy on space.
I've never considered that, I always thought it was just normal to have that slow startup.
I've never considered that, I always thought it was just normal to have that slow startup.
Re: Add IPK7 for detectable self-contained IWADs
The problem is related to using a compression algorithm that is a) more resource-intensive, and b) is whole-archive rather than individual-file, meaning the entire archive has to be processed just to get a single file (and all GZDoom cares about is iwadinfo.*).
When you combine these two together, especially with several larger archives, starting up GZDoom will become unbearably slow.
When you combine these two together, especially with several larger archives, starting up GZDoom will become unbearably slow.
Re: Add IPK7 for detectable self-contained IWADs
Yeah, when I originally released one of the final versions of the Wolf3D TC, the resources and sounds were all in a .pk7, and people kept having stuttering and sound lag the first time any sound played. It was because of the archive format - changing to .pk3 solved the issue, and the size difference wasn't that great.SanyaWaffles wrote:I didn't see that. That's too bad, 7zip is a bit more easy on space.
I've never considered that, I always thought it was just normal to have that slow startup.
-
- Posts: 806
- Joined: Thu Apr 25, 2013 12:21 pm
- Preferred Pronouns: They/Them
- Operating System Version (Optional): Windows 11 for the Motorola Powerstack II
- Graphics Processor: nVidia with Vulkan support
- Location: The Corn Fields
- Contact:
Re: Add IPK7 for detectable self-contained IWADs
I actually tried this. Somehow the PK3 is smaller than the PK7, and it loads up almost instantly. I haven't tried it using the IPK3 method, but switching to PK3 and just loading them shows a massive improvement, so I can understand why Graf made the decision to not use IPK7s.
My mistake, I understand why the feature would be dismissed - and I completely agree with the decision why. 7Zip is good for transportation of data/ backups, but not really good for on the fly decompression.
That said, could someone explain to me how an IPK3 is made? I know it involves IWADINFO, but that's not documented on the Wiki much. From my reverse engineering, my confusion is this:
1.) Is an IPK3 supposed to contain any assets? Say I wanted to make a standalone TC and distribute it - would I put everything in the IPK3 along with an IWADINFO, or just put an IWADINFO in the IPK3 and load a separate archive.
2.) What are the contents of an IWADINFO meant for IWAD/IPK3? From my own tests it seems to be different than what's present in the IWADINFO in gzdoom.pk3
If it can be explained to me here, I'll happily add it to the wiki for others to know, once it's been cemented (I know it's an in-development feature).
My mistake, I understand why the feature would be dismissed - and I completely agree with the decision why. 7Zip is good for transportation of data/ backups, but not really good for on the fly decompression.
That said, could someone explain to me how an IPK3 is made? I know it involves IWADINFO, but that's not documented on the Wiki much. From my reverse engineering, my confusion is this:
1.) Is an IPK3 supposed to contain any assets? Say I wanted to make a standalone TC and distribute it - would I put everything in the IPK3 along with an IWADINFO, or just put an IWADINFO in the IPK3 and load a separate archive.
2.) What are the contents of an IWADINFO meant for IWAD/IPK3? From my own tests it seems to be different than what's present in the IWADINFO in gzdoom.pk3
If it can be explained to me here, I'll happily add it to the wiki for others to know, once it's been cemented (I know it's an in-development feature).
Re: Add IPK7 for detectable self-contained IWADs
Your first idea about what an IPK3 would be is correct... It is essentially a replacement IWAD saved in .pk3/.zip format with a .ipk3 extension.
The engine checks for an IWADINFO file in the archive. The IWADINFO text file is formatted essentially just like the one in gzdoom.pk3, but with only the info for this IPK3 (one caveat: the Name you give the IWAD must be unique, and not match anything that's defined in the gzdoom.pk3 IWADINFO). See Rachael's thread here for a demo that she put together using a converted early FreeDoom demo version.
Here's an example that I just put together for Blade of Agony - it's essentially the same as what used to be in gzdoom.pk3, and results in BoA showing up on the IWAD selection screen:
The engine checks for an IWADINFO file in the archive. The IWADINFO text file is formatted essentially just like the one in gzdoom.pk3, but with only the info for this IPK3 (one caveat: the Name you give the IWAD must be unique, and not match anything that's defined in the gzdoom.pk3 IWADINFO). See Rachael's thread here for a demo that she put together using a converted early FreeDoom demo version.
Here's an example that I just put together for Blade of Agony - it's essentially the same as what used to be in gzdoom.pk3, and results in BoA showing up on the IWAD selection screen:
Code: Select all
IWad
{
Name = "WolfenDoom: Blade of Agony"
AutoName = "BoA"
Game = "Doom"
Config = "BoA"
Mapinfo = "mapinfo/doom2.txt"
MustContain = "BOALIB", "C1M1", "Episode3", "MSPUB0"
BannerColors = "E3 00 00", "E3 E3 E3"
}
-
- Posts: 806
- Joined: Thu Apr 25, 2013 12:21 pm
- Preferred Pronouns: They/Them
- Operating System Version (Optional): Windows 11 for the Motorola Powerstack II
- Graphics Processor: nVidia with Vulkan support
- Location: The Corn Fields
- Contact:
Re: Add IPK7 for detectable self-contained IWADs
Sounds simple enough. I'll keep this in mind when making my TCs.