Author Topic: wut specturr'z playing  (Read 12411 times)

Bobbias

  • #1 Poster
  • Hero Member
  • *****
  • Posts: 7209
  • 404 Avatar not found.
    • View Profile
    • Magnetic Architect
Re: wut specturr'z playing
« Reply #105 on: July 05, 2021, 05:54:19 PM »
Just read about the vertical level + melee stuff in btsx and damn, that is mean. I forgot about modern doom engines often not being true to vanilla, and making height more "sensible", but to me Doom always means it has those height related quirks.
This is going in my sig. :)

BANNED FOR BAD PUNS X_x

Spectere

  • \m/ (-_-) \m/
  • Administrator
  • Hero Member
  • *****
  • Posts: 5665
  • printf("%s\n", "Hi!");
    • View Profile
    • spectere.net
Re: wut specturr'z playing
« Reply #106 on: July 07, 2021, 06:54:33 AM »
There's a ton of little stuff like that. It kind or ranges from frustrating (having your bullets pass right through enemies due to how hitscans are handled) to potentially exploitative (enemies receiving splash damage multiple times). All in the name of getting this sucker to run on a 386, I imagine!

As far as why the hitscan thing happens, it's due to moreeeee optimizations. Doom has a data structure called the blockmap. In the WAD file, this will carve the map into 128x128 unit slices, logging all of the linedefs that fall within each of those slices. After the engine loads the level, it also adds things to the list, tracking enemies, items, players, and decorations in the blockmap structure as well. This is used to accelerate collision, but it does have one notable downside. Here's a visual of how one scenario may look:



The numbered squares are individual blockmap blocks. The green object is the player, and the red object is a large enemy (let's say, an arachnotron). You can say with quite a bit of certainty that the player is in block 3, but what about the arachnotron? Well, when it comes to thing-to-thing collision everything will work correctly, since the projectile or object is physically travelling, but what about hitscans?

One of the shortcuts that Doom does is to use blockmaps to determine whether it's even possible for a tracer to hit a target. The problem here is that it only factors in the origin. As a result of this, despite the fact that a large amount of the arachnotron spills over into blocks 1, 3, and 4, only tracers that pass through block 2 are considered. If you were to aim at this arachnotron's left or right legs with a chaingun and pull the trigger, you'd miss every single shot. While the problem gets far worse with wider enemies, this can even be observed with pinkies and even former humans (if you're particularly unlucky).

It's important to note that this affects anything that uses hitscan tracers, including the BFG9000. The BFG can deal over 3500 damage to a single target if the ball and all of its tracers land within said target, and getting this high of a damage roll isn't all that uncommon (roughly 1 in 8, which is pretty favorable in terms of RNG). This is more than enough to kill the spider mastermind with one shot (she only has 3000 HP, and the odds of your BFG rolling that much damage is roughly 50%!), but in practice it's a bit more rare due to this issue. Because she's a whopping 256 units wide (large enough to fit in four blocks, minimum) it requires you to aim at just the right part to ensure that as many tracers as possible land within the block that her origin falls in. Given the size of her hitbox, I'm not even sure that it's possible for all of the tracers to land (you're going to be standing a minimum of 128 units away from her origin point, after all) so the odds of getting that coveted one-hit kill is pretty low in practice, with 2-3 being a more realistic number.

(G)ZDoom doesn't use the blockmap to determine hitscan collision, which means that every single unit within the mastermind's 256x256 hit box can be affected by a tracer. If you get close enough, your odds of getting a OHK on her skyrocket right up to that theoretical 50% figure. It's impossible to not kill a spiderdemon in two BFG hits unless you simply can't get close enough.

Even before I got into this level of engine analysis I wondered why bosses went down so much faster in ZDoom. I'm glad I know now, at least!
"This is a machine for making cows."

Spectere

  • \m/ (-_-) \m/
  • Administrator
  • Hero Member
  • *****
  • Posts: 5665
  • printf("%s\n", "Hi!");
    • View Profile
    • spectere.net
Re: wut specturr'z playing
« Reply #107 on: July 08, 2021, 09:31:35 PM »
Just finished Rush!

MAP10: It opens up with some nice indoor combat areas, sprinkled with some decent traps and monster spawns. At the end it throws you into a large arena with swarms of cacodemons and hell knights, a handful of cyberdemons, and way too many arch-viles (though thankfully they give you an invuln sphere to help you deal with them). My strategy for dealing with this was to kill off the pain elementals at the center of the arena, run around to force some good, old-fashioned infighting, take down the arch-viles with the invulnerability sphere, then pick off the remaining demons. Fun as hell.

MAP11: The opening is balls to the wall, reminiscent of the earlier slaughter-focused maps in the pack. Just over half of the kills happen near the beginning, with the rest being chonksters that appear when you snatch the skull keys. Gotta give a special shoutout to the arena that ultimately allows you to grab the yellow key. It didn't really have a lot of enemies, but between the little bit of verticality that arena provides and the enemy selection it's a bit on the nasty side. The red key, which is just a brute force assault, pales in comparison. As with MAP10, the final fight mercifully gives you an invuln sphere that gives you just enough time to deal with the copious amounts of arch-viles before letting you leisurely pick off the rest of the demons.

MAP12: Hoo boy, this is a biggun. 1234 enemies, a large, intricate level design, and some nasty monster traps. By far the toughest level of the WAD, but it remains pretty manageable as long as you're good at spontaneously forming exit strategies and knowing just when to switch from the rocket launcher to a closer range weapon. It's a seriously great culmination to everything you've gone through up to this point, and a fantastic way to cap things off.

So, final thoughts: this map set is excellent. It doesn't overstay its welcome, has some adrenaline pumping moments, some great traps, and has some much needed moments of downtime between swarms.

On a side note, it's kind of funny how quickly I'm plowing through WADs that earlier this year I never thought I'd have a chance at beating. Just a little bit of practice and persistence is all it takes, I suppose!

Next stop: I dunno. Ancient Aliens, maybe?

Edit: YEP, Ancient Aliens.

MAP01: Berserk. A bunch of lower level enemies (with a couple of hell knights and revenants) and a cyberdemon turret, along with some really sweet visuals. Kind of a fun gimmick, and nothing too difficult as long as you stay on your toes.

MAP02: Definitely a more conventional map. Basic key/switch hunt, with a decent number of low level enemies. Pretty easy stuff.

MAP03: Another map that uses the monster turret concept, though this time with arachnotrons. Fairly tight quarters, overall, and plenty of opportunities to encourage infighting and save ammo. Very fun!
« Last Edit: July 08, 2021, 11:15:14 PM by Spectere »
"This is a machine for making cows."

Bobbias

  • #1 Poster
  • Hero Member
  • *****
  • Posts: 7209
  • 404 Avatar not found.
    • View Profile
    • Magnetic Architect
Re: wut specturr'z playing
« Reply #108 on: July 09, 2021, 07:30:09 PM »
That's really interesting. The space partitioning technique is pretty common, but only considering an object's origin region for hitscan detection while allowing for objects large enough compared to a region for that to become a problem sounds more like an oversight than an intentional optimization. Doom (the original engine anyway) spends something like 90% of its time pushing pixels rather than doing anything else, so adding a small additional bit of detection code to handle that properly would probably not cause much in the way of performance loss in most cases. The spider mastermind would be one case where that would add quite a bit more work though.

I wonder how hard it would be to actually test that theory...
This is going in my sig. :)

BANNED FOR BAD PUNS X_x

Spectere

  • \m/ (-_-) \m/
  • Administrator
  • Hero Member
  • *****
  • Posts: 5665
  • printf("%s\n", "Hi!");
    • View Profile
    • spectere.net
Re: wut specturr'z playing
« Reply #109 on: July 11, 2021, 01:27:27 AM »
That would also conflate another issue with the engine: the limited size of the intercepts structure. It's already possible, in some instances, to overflow that table and corrupt the blockmap (the next thing in memory) even on standard maps. It's not at all uncommon for a thing to be standing on multiple blockmap chunks, so you're more than doubling the odds of an overflow. You can't just throw more memory at the problem either, because Doom was already pushing hard against the 4MB barrier, and memory was expensive as hell in 1993.

Also, bear in mind that we're talking about 386's here. Those CPUs tended to require a lot of cycles per instruction (one of the biggest improvements of the 486 was reducing that, introduced pipelining, and adding an instruction cache--the difference between the two was pretty massive), so adding in a bunch of extra ALU hits was actually very expensive on those systems. Plus, it's a bit complicated. For smaller targets you could do a quick four-point check on the edges of their hitboxes, but for larger enemies (larger than 128 units) that wouldn't work and would require even more calculations just to see if it's even possible for them to be hit.

Compare this to the solution that they used: a table in a static section of memory that can be (relatively) quickly accessed, and is guaranteed to be updated as things move from chunk to chunk.

There's a pretty huge gap in complexity--especially for a 386 (which doesn't even have an on-die instruction cache or pipeline, on top of a slow ALU)--and aside from certain edge cases it's unlikely that a casual player would notice a difference. Plus, most of the larger enemies are usually best dispatched with rockets and projectiles anyway, and the issue doesn't affect those.

I think this is one of those issues that seems silly with a modern lens, but it makes more sense when the hardware of the era is closely considered. Polar movement coordinates? Yeah, maybe not so much with that. I think even Carmack said at one point that doing that was a mistake, lol.
"This is a machine for making cows."

Spectere

  • \m/ (-_-) \m/
  • Administrator
  • Hero Member
  • *****
  • Posts: 5665
  • printf("%s\n", "Hi!");
    • View Profile
    • spectere.net
Re: wut specturr'z playing
« Reply #110 on: July 17, 2021, 11:52:16 PM »
More Ancient Aliens!

MAP04: Pretty short, with some pretty fast-paced gameplay sprinkled throughout. There are a couple of arch-viles and mancubi that kinda harass you at the beginning of the map, but as you progress it's possible to barrel-nuke and telefrag them, respectively. I like it!

MAP05: I wasn't a huge fan of this one. It's fairly reasonable in premise--dodge the cyberdemon!--but in practice it ends up being a slog if you're even semi-competent at dodging rockets. All that ended up happening is that I'd run from point A to point B and given that so many switches and secrets are either in alcoves or require you to wait for a sec, I'd basically have to stop what I was doing, lure the cyberdemon away, and then run back and continue. Meh.


In Other News: I decided to UV-Max all of the levels in Ultimate Doom's E1-E3 from a pistol start tonight for the first time. It wasn't too bad, but man...you have to shotgun a lot of barons and cacos to death when you start pushing into episode 3. It's incredible how much Doom II's expanded bestiary and super shotgun improved the game. Also: fuck E3M5.

Edit: Just did episode 4. Ye gods, those are some bad, bad levels. I didn't bother UV-Max'ing most of them due to them either being way, way too imbalanced (the infamous E4M1) or because I just wanted them to be over as quickly as possible. Still, I beat all of them from a pistol start so, uh...that's a thing I did. Yay?

In all fairness, the Romero levels were pretty good (E4M2 felt overtuned, especially for map frickin' two, while E4M6 felt fine) and there were a few that I'd consider average. Then there's shit like E4M4. Ugly, stuck enemies galore, uninspired. Blech. Episode 4 just kind of...exists, and while I can find plenty of redeeming qualities in TNT despite my opinions of it, I really see no reason to ever play through episode 4 again.
« Last Edit: July 18, 2021, 06:00:00 PM by Spectere »
"This is a machine for making cows."

Spectere

  • \m/ (-_-) \m/
  • Administrator
  • Hero Member
  • *****
  • Posts: 5665
  • printf("%s\n", "Hi!");
    • View Profile
    • spectere.net
Re: wut specturr'z playing
« Reply #111 on: September 03, 2021, 11:35:51 PM »
Switched over from Ancient Aliens to Valiant in my Doom escapades. I made it through the first two episodes (that is, through MAP13) and it's been pretty great so far. I'm definitely not looking forward to meeting the cybruisers, though (rocket launcher wielding Hell Knights that are immune to splash damage).

Kinda thinking of flipping over to Eviternity after I wrap that up.

Also, I cleared about half of the maps in Rush from a pistol start now. I sometimes use MAP04 as a warmup for when I want to put myself into slaughtermap mode.

Oh, I'm also playing FFXIV now. Like, quite a bit.

2. Hyrule Warriors grinding. [...] I'd also like to clear the first four adventure maps

This is finally done. That uh, took a little longer than expected.
"This is a machine for making cows."

Spectere

  • \m/ (-_-) \m/
  • Administrator
  • Hero Member
  • *****
  • Posts: 5665
  • printf("%s\n", "Hi!");
    • View Profile
    • spectere.net
Re: wut specturr'z playing
« Reply #112 on: September 11, 2021, 04:46:28 AM »
Valiant

I'm tearing through this faster than I'd ever played through a megawad, which is to say that it's quite excellent.

I just finished up MAP27, including the, erm, secret part. Speaking of that secret part: I managed to beat it first try. I ate two rockets pretty much right at the start because I'm a dumbass, but I was able to snag a megasphere and stay in the fight as the arena continued to open up. Holy hell, is that part fun. I wish I were recording that.

So yeah, three more maps to go. Woo. I think I might move onto Eviternity next.
"This is a machine for making cows."

Spectere

  • \m/ (-_-) \m/
  • Administrator
  • Hero Member
  • *****
  • Posts: 5665
  • printf("%s\n", "Hi!");
    • View Profile
    • spectere.net
Re: wut specturr'z playing
« Reply #113 on: September 11, 2021, 08:27:21 PM »
Just beat Valiant. That was pretty great! Easily some of the highest quality maps I've ever played.

The fourth episode (maps 19-24) were definitely the weakest point for me, with the fifth episode probably being my favorite overall. I can't recommend this megawad enough, honestly.
"This is a machine for making cows."