Add IPK7 for detectable self-contained IWADs

Moderator: GZDoom Developers

Post Reply
SanyaWaffles
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

Post by SanyaWaffles »

I noticed IWAD and IPK3 are valid extensions for the new IWAD detection code. Why not IPK7 (for 7zip) as well?
User avatar
AFADoomer
Posts: 1326
Joined: Tue Jul 15, 2003 4:18 pm
Contact:

Re: Add IPK7 for detectable self-contained IWADs

Post by AFADoomer »

I'm pretty sure it's because PK7s are stupidly slow to unpack... And Graf doesn't like them, for that reason.

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.
SanyaWaffles
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

Post by SanyaWaffles »

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.
User avatar
Rachael
Posts: 13571
Joined: Tue Jan 13, 2004 1:31 pm
Preferred Pronouns: She/Her
Contact:

Re: Add IPK7 for detectable self-contained IWADs

Post by Rachael »

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.
User avatar
AFADoomer
Posts: 1326
Joined: Tue Jul 15, 2003 4:18 pm
Contact:

Re: Add IPK7 for detectable self-contained IWADs

Post by AFADoomer »

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.
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
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

Post by SanyaWaffles »

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).
User avatar
AFADoomer
Posts: 1326
Joined: Tue Jul 15, 2003 4:18 pm
Contact:

Re: Add IPK7 for detectable self-contained IWADs

Post by AFADoomer »

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:

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"
}
SanyaWaffles
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

Post by SanyaWaffles »

Sounds simple enough. I'll keep this in mind when making my TCs.
Post Reply

Return to “Closed Feature Suggestions [GZDoom]”