Jump to content

Knee-Deep in KDiZD: Released! It's KDiZD for doom2.exe - 1.7.1 is now on /idgames


Recommended Posts

5 hours ago, roadworx said:

i finally managed to get this working with doom32 last night!! thus far, it's been an absolute blast to play; i'm on z1m4 rn, and not only is this a really fun wad, but this is also by far the most impressive vanilla mapset i think i've ever seen. the level of technical prowess shown off in nearly every corner of the maps is astonishing, to say the least. not only did you manage to implement various zdoom-like details into the maps, but you also got scripting in fucking vanilla. you've really outdone yourself.

Can you share your methods in the thread? How did you manage to patch it? 

Share this post


Link to post
3 hours ago, esselfortium said:

Thank you to Mikolah and Kinsie for the GZDoom support, and Eevee for the vanilla troubleshooting!

 

✌️

 

I can only take half credit — you pointed out the manual movement  :)

 

For the curious: the Hell Warrior's shield was an invisible actor for absorbing attacks, defined over top of the rocket and spawned with A_CyberAttack.  In vanilla, I believe this set off the following sequence of events:

  1. The shield is spawned via P_SpawnMissile at exactly the Hell Warrior's position, and as part of this process, is added to the blockmap.  (The actual structure of the blockmap is an array of pointers to the first mobj in the cell, which functions as the head of a doubly linked list.)
  2. The last thing P_SpawnMissile does is call P_CheckMissileSpawn, which attempts to move a missile by half a tic's distance immediately.  As part of this process, it directly changes the missile's position before trying to move it.  (I'm guessing this is so if the missile ends up exploding, it explodes in front of its shooter, not in their center.)  Normally, a mobj is only moved in one of a handful of places, and all of them remove it from the blockmap and then re-add it to keep things consistent.
  3. The movement attempt always fails, because the shield overlaps the Hell Warrior.  Normally this would be fine, as projectiles don't collide with their shooters, but the shield doesn't have the MISSILE flag.
  4. Because the movement fails, P_CheckMissileSpawn destroys the shield with P_ExplodeMissile, which sets it to its death state.  It doesn't have one, so it's destroyed immediately.
  5. Now for the fun part.  As part of its destruction, the missile is now removed from the blockmap.  However, if P_CheckMissileSpawn happened to move it across a grid line and into a different cell, this fails to work correctly, and the end result is that the list from the original cell is duplicated in the new cell.
  6. In the simple case, the only mobj in the original cell was the Hell Warrior.  If it now steps into the new cell, the game attempts to add it to the list there — but it is already in that list, and the result is that it ends up pointing to itself.
  7. The next time anything attempts to move into the corrupted cell, P_BlockThingsIterator will try to iterate over the list of mobjs in it, and since there is now a loop, it will iterate forever and hard freeze the game.

Boom altered the blockmap so that deleting a mobj from it still behaves correctly even if the mobj isn't in the right place, which specifically avoids this kind of problem.

 

I was also scratching my head for a hot minute trying to figure out why this doesn't happen at least occasionally in vanilla, and the answer turned out to be very simple — every single vanilla projectile has the NOBLOCKMAP flag.  None of them are ever in the blockmap in the first place.

Share this post


Link to post

How the hell did you get reflection floors, I can see cameras and horizontal walls but reflections? Holy cow.

Share this post


Link to post

Following up on eevee's post above, the main piece of the puzzle in working around the Hell Warrior shield's blockmap corruption crash was to set the shield's speed in DEH9000 to exactly 1, rather than 1*FRACUNIT like I originally had it. With this, the half-tic movement in P_CheckMissileSpawn only pushes them forwards by a minuscule 0.0000076 of a unit, so there is vastly less possibility for them to leave their original blockmap block.

Share this post


Link to post

GZDoom compatabilty is very much appreciated :D I'm just so used to movement in that that switching to Boom or Vanilla movement will be a bit of an adjustment.

I only really use those two ports for vanilla/limit removing testing

Share this post


Link to post
On 11/11/2022 at 8:38 PM, esselfortium said:

KDiKDiKDiZD is actually a text adventure about the making of KDiKDiZD.

KDiKDiKDiKDiZD is a card game invented in 1905 and banned by every church everywhere

Share this post


Link to post
5 hours ago, NightFright said:

New version still has duplicated INTERPICs.

Dammit!

 

I fixed it in the standalone texture wad but didn’t port it over to the compiled one.

 

edit: Actually, wait, what? I'm looking at the compiled wads and not seeing a duplicated INTERPIC lump.

 

If you mean the Doom 1 intermission stuff, they're an artifact from when this was briefly a Doom 1 project around 2020. I know I could remove those, but it works as-is so I don't want to start deleting graphics and run the risk of accidentally deleting a graphic that's actually used...

Share this post


Link to post

Sorry if I'm being dense, but what is the target port to get this running flawlessly? I usually use PRBoom + UMAPINFO - if I put this into software rendering, will it play as intended? 

 

Or should I use Eternity Engine? 


Cheers and what a wonderful release!

Share this post


Link to post
2 minutes ago, nobleflame said:

Sorry if I'm being dense, but what is the target port to get this running flawlessly? I usually use PRBoom + UMAPINFO - if I put this into software rendering, will it play as intended? 

 

Or should I use Eternity Engine? 


Cheers and what a wonderful release!

Eternity is the preferred modern port for it. Woof should also work flawlessly. PrBoom+UM in software mode with complevel 2 will mostly work but there will be some graphical glitches.

Share this post


Link to post

Really amazing work. I never played the original KDiZD, but the amount of wizardry involved in making all of this possible in vanilla doom is incredible. Gameplay-wise it's not my favorite, with the sometimes-confusing layouts, but I still finished it just to see the technical achivements and impressive architecture.

 

I'm a bit split on the monster roster though. Each individual new enemy is good (and again it's impressive that they all work in vanilla), but the sheer number of them feels a bit overkill for a relatively short map set. There just wasn't enough time to get used to all of them and to learn to identify them quickly. There's three pinky flavors, and I couldn't tell what exactly made the grey one different until I looked at the dehacked file. And three enemies with different attacks that all look like a "dark imp".

 

11 hours ago, openxt said:

How the hell did you get reflection floors, I can see cameras and horizontal walls but reflections? Holy cow.

 

I was really curious about that one as well, so I took a look in the editor. Seems like it uses self-referencing sectors to make a fake floor, and the 'reflections' are actually just midtextures, using an inverted copy of the regular texture, placed right below the floor. These textures use transparent pixels to give the illusion that it fades into the floor. The reflected torches use a similar trick, with a second object placed on top of them that have an upside-down sprite.

Share this post


Link to post
35 minutes ago, SCF said:

I was really curious about that one as well, so I took a look in the editor. Seems like it uses self-referencing sectors to make a fake floor, and the 'reflections' are actually just midtextures, using an inverted copy of the regular texture, placed right below the floor. These textures use transparent pixels to give the illusion that it fades into the floor. The reflected torches use a similar trick, with a second object placed on top of them that have an upside-down sprite.

That's very close!

 

There are no self-referencing sectors (which are completely invisible) or fake floors (which are a Boom feature) used. The midtextures are lowered below the actual floor and bleed on top of it. In addition to the textures being mirrored and masked with a checkerboard of transparent pixels, the textures are also recolored to blend with the floor for a translucent look. There are also upside-down sprites drawn similarly beneath the floor for the torches.

 

Then, rather than using sector lighting, some red fullbright flats were used for light sources on the ceiling, and custom pre-lit textures were used on some of the walls, because the reflection effect breaks if the affected area has any changes in sector brightness or any other variation that touches the floor.

 

The translucent glass floor and ceiling effects that appear in several places in other KDiKDiZD maps are done very similarly to the reflections.

Share this post


Link to post
18 hours ago, esselfortium said:

The major new features are GZDoom support

This is now KDiKDiZDiZD.

Share this post


Link to post
2 hours ago, esselfortium said:

Eternity is the preferred modern port for it.

 

Do you recommend using the -vanilla flag?

Share this post


Link to post
6 minutes ago, NightFright said:

Is it intended that the automap background is blue? Otherwise I blame it on the changed palette.

 

No, it's a known bug:

On 11/12/2022 at 1:57 AM, esselfortium said:

Known Bugs:

 

  • In DSDA-Doom and PrBoom-Plus, you may run into some oddities. The automap background color appears as an eyesearing bright blue instead of the expected black. (You can override this in the settings page if you want.)
Edited by Andromeda

Share this post


Link to post
23 minutes ago, NightFright said:

Is it intended that the automap background is blue? Otherwise I blame it on the changed palette.

That’s a port bug due to Boom changing the automap backdrop from 0 to 247. You can manually change the color in Settings though.

Share this post


Link to post

Finally I found some time to play more of this. Dude I'm so genuinely happy with all these crazy effects on vanilla. Thanks @esselfortium and all the team to bring a smile to this tired man 8D

Share this post


Link to post
3 hours ago, esselfortium said:

That's very close!

 

There are no self-referencing sectors (which are completely invisible) or fake floors (which are a Boom feature) used. The midtextures are lowered below the actual floor and bleed on top of it. In addition to the textures being mirrored and masked with a checkerboard of transparent pixels, the textures are also recolored to blend with the floor for a translucent look. There are also upside-down sprites drawn similarly beneath the floor for the torches.

 

Then, rather than using sector lighting, some red fullbright flats were used for light sources on the ceiling, and custom pre-lit textures were used on some of the walls, because the reflection effect breaks if the affected area has any changes in sector brightness or any other variation that touches the floor.

 

The translucent glass floor and ceiling effects that appear in several places in other KDiKDiZD maps are done very similarly to the reflections.

Ooh, I've encountered this type of bug when mapping, nice to see it put to a good type of use!

Share this post


Link to post

You know now that I think about it, shouldn´t the DOOM comunity try to make similiar demakes as a sort of fun programing chalenge? Would be interesting and fun to compare same mapsets that are designed for different ports similiar to how we used to compare for example ports of DOOM or Quake for diferent systems like how there were differences in same levels, music, enemy placement, lighting and so on.

Share this post


Link to post

i will keep downloading new builds until i get around to playing the darn thing

Share this post


Link to post

Coming up next:

Winter's Fury vanilla

Ultimate Simplicity vanilla

Elementalism vanilla

 

... and so on. Just give it 15-20 years. Hope you will still be able to hold a mouse properly by that time.

Edited by NightFright

Share this post


Link to post
54 minutes ago, MS-06FZ Zaku II Kai said:

You know now that I think about it, shouldn´t the DOOM comunity try to make similiar demakes as a sort of fun programing chalenge?

KDiZDiKDiZDKDi is probably far and away the most impressive example at this stage, but I do remember seeing similar de-makes.. Bourgeois was largely Decay de-making some of his ZDoom-feature-rich deathmatch maps from DBAB and NEONDM all the way down to vanilla format with stock textures, and I know that Harmony was originally a ZDoom-only mod that was recently de-made to "almost vanilla" for the Unity port, and soon for all ports, I believe. So it's definitely not unheard of!

Share this post


Link to post
3 minutes ago, Doomkid said:

KDiZDiKDiZDKDi is probably far and away the most impressive example at this stage, but I do remember seeing similar de-makes.. Bourgeois was largely Decay de-making some of his ZDoom-feature-rich deathmatch maps from DBAB and NEONDM all the way down to vanilla format with stock textures, and I know that Harmony was originally a ZDoom-only mod that was recently de-made to "almost vanilla" for the Unity port, and soon for all ports, I believe. So it's definitely not unheard of!

Thanks Doomkid, I´ll be checking those in the near future :D

Share this post


Link to post

Playing this flawlessly on PRBoom+ for the PSVita (so far, I'm only on map 2). Outstanding work, everyone. Can't wait until I have the time to peek under the hood.

Share this post


Link to post
2 hours ago, NightFright said:

Coming up next:

Winter's Fury vanilla

Ultimate Simplicity vanilla

Elementalism vanilla

 

... and so on. Just give it 15-20 years. Hope you will still be able to hold a mouse properly by that time.

 

Why stop with zdoom tc's?
why not gameplay mods also too:

Guncaster Vanilla.

Trailblazer Light Soft.

DemonSteele 0.

Hideous Destructor Vanilla.

Naku Naru vanilla.

CodeName: Demolitionist Prototype.

High Noon drifter Tales.

Russian Overkill, at the era of the russian empire

the sky is the limit.

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