The vpm file is the packfile manifest. It is basically the header for each packfile so we don't have to read them individually. During development we used zpp files, which were just packfiles of individual zones.
The way I saw this, the game was using the vpm to create "virtual" zone package(zpp_pc) at data\levels\sr3_city\.
The zone package cannot be found? = Game crash.
So I spent (should I say "wasted"?) some days trying to figure out its code.
Today, I just got the idea: let blank out the vpm.
If the game actually use them, it will definitely crash since the file as no data at all.
Result?
Like you already pointed out, the game don't use it and just run fine.
Zone asm use "buffer" object in their container (as my asm do).
Code:
<Primitive Name="1608^k4n3_3cb" Type="Buffer" Allocator="0" Flags="0" ExtensionIndex="255" CPUSize="4824" GPUSize="0" AllocationGroup="0" />
When I try to pack my str2_pc and update my asm at the same time (ThomasJepp.SaintsRow.BuildPackfile), the cmd say that I cannot find the said object. ( what mean it cannot update its size).
To be honest, I have no idea what the buffer cpu size should be.
What I do know is that if I remove the buffer, game no more crash when I enter the zone.
But this don't mean that this is fixed.
The regular object of the zone (like the casino) do not show up (this is expected)...
but the one from my zone swap(the saint tower) dont show either.
Not only that, but...
this zone no more contain any collision. ( I just pass through the floor as soon I enter it)
Edit: Finally managed to get good result!
Look like that we also need ~al(always loaded) zone files variant for thing to work.
I placed the files directly to awld_compact.str2_pc, but will have to check if this will also work with a new pack file.
Still we need the buffer object in the asm(it don't work without it) and I don't know what size I should give them.