Jump to content

Vrack2-SuperHuge - So large (10x Vrack2), it requires a custom linedef format


Recommended Posts

Add to that both PrBOOM+UM and the latest GZDoom, both locked up my Mac.  Nothing can run this wad!

Edited by Gibbon

Share this post


Link to post

Oh my, this wad eats up quite the ram.

 

Brb gonna download more ram and a port that doesn't crash when loading any of these maps. Not even Ultimate Doom Builder (or Slade) is mighty enough to handle this thicc wad.

 

Oh my god it crashes everything, and Doom Builder is not having a great time. What is this black magic?

 

Edit: well, at least the music is nice I guess

Edit 2: kills dsda-doom because line 2016 is missing a tag?

Edit 3: kills Zdoom too. I know it was obvious but it was worth a try.

Edit 4: I can kinda look into the map by using Slades map editor. Hmm, just lines that summon godrays and inside visual mode it's just textures all over the place. Strangely enough there are no flats to be seen.

Edited by thiccyosh
hungagalunga

Share this post


Link to post

SLADE doesn't recognize the LINEDEFS lump and declares the map invalid. If I force it to accept the linedefs however, I can see a completely glitched mess of lines but the vertices hint that it's a full ten copies of Vrack2 crammed in. And then it gets an unhandled exception error.

 

dmLjXmj.png

 

 

Based on that, I figure that it uses a custom LINEDEFS format, perhaps to allow to overcome the sidedefs limit. And then it makes sense nothing supports it.

Edited by Gez

Share this post


Link to post
7 minutes ago, Gez said:

SLADE doesn't recognize the LINEDEFS lump and declares the map invalid. If I force it to accept the linedefs however, I can see a completely glitched mess of lines but the vertices hint that it's a full ten copies of Vrack2 crammed in. And then it gets an unhandled exception error.

 

dmLjXmj.png

 

 

Based on that, I figure that it uses a custom LINEDEFS format, perhaps to allow to overcome the sidedefs limit. And then it makes sense nothing supports it.

I honestly can't say. The only thing i can think of is attempting to open it in DeepSea or Risen3D. There wasn't a readme or anything. It just resided on the files directory, with nothing else linking to it.

 

If it uses a custom LINEDEFS format, that seems such overkill. I would think SuperHuge is like BiggestEver, just exponentially larger (As you say, 10x Vrack2). I also wouldn't want to count this off as a jokewad either, because BiggestEver wasn't. That was a demonstration map, this ought to be the same, but adjusted for 2018 standards.

 

PS: I am amazed SLADE can even open it first hand.

 

No matter what this turns out, it atleast is a fascinating story.

Share this post


Link to post
9 minutes ago, Gez said:

Based on that, I figure that it uses a custom LINEDEFS format, perhaps to allow to overcome the sidedefs limit. And then it makes sense nothing supports it.

so it makes everything crash not because it's big, but cuz it's just incompatible with everything? well, that's disappointing

Share this post


Link to post

The Doom/Boom map format has a limit of 65536 linedefs since it uses 16-bit values, so SuperHuge is either UDMF or something else entirely; no surprise most of these source ports can't run the map.

 

I thought I'd mention that Ar Luminae, a map you can actually play, has:

9490 things

121191 vertices

143840 linedefs

265941 sidedefs

25952 sectors

With total dimensions of 31175x26683.

Share this post


Link to post

Some sleuthing:

 

For Vrack 2 original flavor:

1 hour ago, Redneckerz said:

Linedefs 12575

 

Vrack 2 Biggest Ever (aka Vrack2 x5)

1 hour ago, Redneckerz said:

Linedefs 62940

12575x5=62875, so that's an extra 65 linedefs here. But when you look at the map, it makes sense. Four of the Vrack2s have been connected:

sT9QhqH.png

 

Vrack2 Super Huge:

1 hour ago, Redneckerz said:

Linedefs 195512

Now that's a DMMPST count. And if it's a weird format, it's no longer valid.

 

But ten times Vrack2 would be 125 750 lines. (Looking at the mess of points, I don't see the trace of "connective tissue" between the Vrack2s here.) That's an extra 69 762 linedefs that are counted. Far too many, based on the BiggestEver precedent.

 

The lump size is 2 737 174. A Doom format linedef is 14 bytes. So if you had 195 512 lines, as counted by DMMPST, that'd give us a lump size of 2 737 168. But we have six extra bytes.

 

Let's try to find a value larger than 14 that 2737174 would divide cleanly by. Turns out that 2 737 174 = 22 × 124 417. That's a bit less than 125 750. We lose 1333 lines. But despite this discrepancy, I think this is correct.

 

 

Edit: 12 575 lines is for Vrack2b. The original Vrack2 "only" has 12 441 lines. That gives us 735 extra lines for BiggestEver (makes sense when you look at the long stair sectors, 65 lines wouldn't be enough!) and only 7 extra lines for SuperHuge according to my guess that it uses 22-byte linedefs.

 

Re-Edit: turns out that if you take the vanilla linedef format (14 bytes, remember) and decide to put 32-bit values instead of 16-bit values for its start vertex index (+2 bytes = 16), end vertex index (+2 bytes = 18), front sidedef (+2 bytes = 20) and back sidedef (+2 bytes = 22), you arrive at exactly the size that makes sense according to everything I posted previously. Mystery solved, I say.

Edited by Gez

Share this post


Link to post
40 minutes ago, Gez said:

Some sleuthing:

 

For Vrack 2 original flavor:

 

Vrack 2 Biggest Ever (aka Vrack2 x5)

12575x5=62875, so that's an extra 65 linedefs here. But when you look at the map, it makes sense. Four of the Vrack2s have been connected:

sT9QhqH.png

Humor me: Why is the last VRack not interconnected?

40 minutes ago, Gez said:

Mystery solved, I say.

There is usually no reason to the question who is the actual Wiki editor because that usually is you. And you are showing that here once more. Thank you for carrying out calculating the hard values.

 

A few personal questions remain:

  • What would be needed to have this run, outside of what i suggested (Deepsea/Risen3D)? Or could this run if it were attempted through a different node builder
  • Because i am curious of how it looks, is it possible to generate a map overview for SuperHuge? As you showed, it even crashes Slade with an exception, so i assume this needs some python script to get going?

 

Share this post


Link to post
55 minutes ago, Gez said:

Vrack2 Super Huge:

2 hours ago, Redneckerz said:

Linedefs 195512 

Now that's a DMMPST count. And if it's a weird format, it's no longer valid.

I wasn't aware of the custom linedef format, and only gave the map a cursory glance in Slade3 (an older version at that) which errors out on previewing the map. DMMPST didn't crash, but indeed miscalculated the line count. I don't think it'd make sense to support the format as deducted by Gez though.

 

Omgifol doesn't support the custom format either, so no easy way to generate a map view there either. Maybe with a modified version?

Edited by Xymph

Share this post


Link to post
Just now, Xymph said:

I wasn't aware of the custom linedef format, and only gave the map a cursory glance in Slade3 (an older version at that) which errors out on previewing the map. DMMPST didn't crash, but indeed miscalculated the line count. I don't think it'd make sense to support the format as deducted by Gez though.

I understand. At the very least, it highlighted that DMMPST miscalculated the line count. I am not sure if it is useful for improving your scripts (Because that would be the icing on the cake) but there you go.

Just now, Xymph said:

 

Omgifol doesn't support the custom format either, so no easy way to generate a map view there either.

I was about to message you over the Wiki for this. I agree that supporting the format would be useless since only SuperHuge needs it. But would it be possible to generate map overview for this? I kind of want to know if SuperHuge is merely 10x VRack 2 in one wad, or that they are interconnected like BiggestEver.

 

If its the latter, then it would be worth investigating if Risen3D runs it because at this point i am wondering what its purpose is for a test map. It should be runnable by something.

Share this post


Link to post
2 minutes ago, Redneckerz said:

Humor me: Why is the last VRack not interconnected?

🤷 Ask Jack Vermeulen.

 

5 minutes ago, Redneckerz said:

What would be needed to have this run, outside of what i suggested (Deepsea/Risen3D)? Or could this run if it were attempted through a different node builder

No, the nodebuilder is irrelevant here.

 

What's needed is to have the port be aware of the different linedef_t format used here. Some sort of "if you fail loading the lines as standard Doom format, try loading them as this format". The heuristics could also look at the size of the SIDEDEFS lump. If it contains more than 65534 sides and the map is in Doom format, try loading lines as extended format.

 

10 minutes ago, Redneckerz said:

Because i am curious of how it looks, is it possible to generate a map overview for SuperHuge? As you showed, it even crashes Slade with an exception, so i assume this needs some python script to get going?

Take a script that draws a map, find where it defines the linedef_t structure, and edit that part to change the vertex and sidedef indices to 32-bit ints instead of 16-bit ones. It should now read his map correctly (and be broken for every regular map, but that's okay, you'll just have to revert your change once your curiosity is sated).

Share this post


Link to post
48 minutes ago, Gez said:

Take a script that draws a map, find where it defines the linedef_t structure, and edit that part to change the vertex and sidedef indices to 32-bit ints instead of 16-bit ones. It should now read his map correctly (and be broken for every regular map, but that's okay, you'll just have to revert your change once your curiosity is sated). 

Tried to modify Omgifol, which defines in mapedit.py:

Linedef = make_struct(
  "Linedef", """Represents a map linedef""",
  [["vx_a",   'H',  0],
   ["vx_b",   'H',  0],
   ["flags",  'H',  0],
   ["action", 'H',  0],
   ["tag",    'H',  0],
   ["front",  'H', -1],
   ["back",   'H', -1]],
  ["impassable", "block_monsters", "two_sided",
   "upper_unpeg", "lower_unpeg", "secret",
   "block_sound", "invisible", "automap"]
)

Changed the H's into I's for the first two and last two fields, but drawmaps.py crashes as before ("struct.error: unpack requires a string argument of length 24"). Not sure why, maybe @Revenant can assist?

Share this post


Link to post
3 hours ago, Redneckerz said:

I kind of want to know if SuperHuge is merely 10x VRack 2 in one wad, or that they are interconnected like BiggestEver.

 

hnGueip.png

 

Sadly it's only ten copies of vrack2.wad. No apparent interconnection.

(I don't know what the seven extra lines are for, or even where they are.)

BTW, dare I ask why you write the title with a capital R in the middle..?

Share this post


Link to post
11 hours ago, RjY said:

 

hnGueip.png

 

Sadly it's only ten copies of vrack2.wad. No apparent interconnection.

(I don't know what the seven extra lines are for, or even where they are.)

Damn, that looks impressive. Thank you!
 

Almost looks like a schematic for a chiplet design :P  It does look like it would be easy to interconnect.

 

How were you able to make that map overview if i may ask, considering the custom linedef format?

11 hours ago, RjY said:

BTW, dare I ask why you write the title with a capital R in the middle..?

Unintentional habit. Ill correct it straight away.

Share this post


Link to post
1 hour ago, Redneckerz said:

How were you able to make that map overview if i may ask, considering the custom linedef format?

I already had the code written from years ago: a simple map dumper, and some glue to feed it into ImageMagick. I modified it in exactly the way Gez suggested, and everything just worked :).

1 hour ago, Redneckerz said:

Unintentional habit. Ill correct it straight away.

Oh right. It was just that you were so consistent that I thought you must have found a source that "VRack" was the proper way to write it, perhaps as part of your research for the wiki. Fair enough if it's just a personal preference though. I mean, look at all the different ways people capitalize Doom.

Share this post


Link to post
22 hours ago, Xymph said:

Changed the H's into I's for the first two and last two fields, but drawmaps.py crashes as before ("struct.error: unpack requires a string argument of length 24"). Not sure why, maybe @Revenant can assist?

 

The resulting struct should only be 22 bytes, not 24. There should still be three 16-bit fields in the middle.

 

(On a sort of related note, a few weeks ago I totally reworked how structs are specified in the master branch of omgifol on GitHub. You might find the new style a bit easier to work with - the only real difference for this situation is that you'd be changing "ctypes.c_uint16" to "ctypes.c_uint32")

Share this post


Link to post
5 hours ago, RjY said:

I already had the code written from years ago: a simple map dumper, and some glue to feed it into ImageMagick. I modified it in exactly the way Gez suggested, and everything just worked :).

My heartfelt thanks for doing the kind of thing i cannot :)

5 hours ago, RjY said:

Oh right. It was just that you were so consistent that I thought you must have found a source that "VRack" was the proper way to write it, perhaps as part of your research for the wiki. Fair enough if it's just a personal preference though. I mean, look at all the different ways people capitalize Doom.

Some ways of capitalization tend to do this, but, me being stubborn after reading Vrack without the capital R, subconsciously continued on as it were.

 

Thanks to you and Gez for digging up an oddball wad and cracking its little puzzle :)

Share this post


Link to post
On 2/18/2022 at 10:15 PM, Gez said:

Take a script that draws a map, find where it defines the linedef_t structure, and edit that part to change the vertex and sidedef indices to 32-bit ints instead of 16-bit ones. It should now read his map correctly (and be broken for every regular map, but that's okay, you'll just have to revert your change once your curiosity is sated). 

Can also confirm the changed data structure:

 

unknown.png

 

Share this post


Link to post

And I raise you Vrack 2 Superhuge 2, that includes 40x Vrack 2!

 

unknown.png

 

And there's even space left that could hold some more!

 

Writing and loading that thing works, but performance is, uh, less than stellar.

Share this post


Link to post
1 hour ago, boris said:

Writing and loading that thing works, but performance is, uh, less than stellar.

 

That thing probably needs a NASA supercomputer to get a playable framerate!

Share this post


Link to post

I doubt the map would be playable anyway; unless each copy has its own tag range things will start to get screwy in the second map as you re-trigger events that are supposed to happen only once. And monster teleport ambushes from all of the map will pour through a single map, which may or may not be the one you are currently on.

Share this post


Link to post
2 hours ago, boris said:

And I raise you Vrack 2 Superhuge 2, that includes 40x Vrack 2!

 

unknown.png

 

And there's even space left that could hold some more!

 

Writing and loading that thing works, but performance is, uh, less than stellar.

I would already take a stab at the original if it:

  • was interconnected
  • Actually runs in a port versus using custom tricks to get there
    • Easy way out is to take the Ar Luminae route

As for this 40x monstrosity:

It actually looks nice from a overview map. Now, if that was delivered in a playable state... you'd have the map that kills all other maps.

 

Can your PC run Crysis? Sure. Can it run SuperHuge 2? Oh hell no.

 

Should be the title: Vrack2: Oh Hell No.

Share this post


Link to post
On 2/19/2022 at 9:47 PM, Revenant said:

The resulting struct should only be 22 bytes, not 24. There should still be three 16-bit fields in the middle.

Yes, I kept H for those fields, but the old code kept erroring out.

 

Quote

On a sort of related note, a few weeks ago I totally reworked how structs are specified in the master branch of omgifol on GitHub. You might find the new style a bit easier to work with - the only real difference for this situation is that you'd be changing "ctypes.c_uint16" to "ctypes.c_uint32"

Thanks for the heads-up, I finally got around to installing this. And now the drawmaps script can generate the map view correctly (at standard scale 4.0):

 

vrack2-superhuge_MAP01.png.db82be841e4a14111c36e078fdaea07b.png

Edited by Xymph

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...