john9818a on 26/6/2019 at 02:53
Quote Posted by vfig
Not sure what you mean by “player camera dropping”—you mean the camera falling to the floor when Garrett dies? Or do you mean the headbob as he walks? I've never looked into the former, but headbob and leaning are both driven by code, not motions.
Something that caught my ear during that chat is that Randy inherited the geometry of Escape and The Haunted Cathedral (not Return, which he did build) from other designer(s). This makes sense to me, because the style of their construction is dramatically different from RTTC. But the only per-level design credits I've seen are (
https://thief.fandom.com/wiki/Designer_Credits) those on the wiki and some of the old threads here that were a source—but no mention of who started those missions. Anyone know who might have been the original builders of these levels? I'm thinking it's probably either Jeff Yaus (
July 1997: “we're giving a few interested parties tryouts on level editing to help fill the gap left by Jeff's recent departure from the team”) or Steve Canniff (
September 1997: “we got in ... a good part of a new level (thanks to the brilliant work of Steve Canniff)”, which is the last mention of Steve (
https://thief.fandom.com/wiki/LGS_TDP_Diary) in the dev diary, shortly before Randy's joining is mentioned in the October 31 update). Not that it matters particularly. I'm just curious because Haunted Cathedral is my second-favourite mission (after Lost City) in terms of geometry and layout.
I meant when Garrett dies. The camera doesn't really drop during the headbob.
ZylonBane on 26/6/2019 at 05:29
Quote Posted by john9818a
Since the player hits and player camera dropping are motions, I was under the impression that the leanings were motions as well.
Leaning couldn't possibly be a motion, because when you lean around a corner the camera follows the contours of the wall. Come on now.
vfig on 27/6/2019 at 16:00
Quote Posted by john9818a
I meant when Garrett dies. The camera doesn't really drop during the headbob.
Okay, so yeah, the movement of the player's physical body is driven by a table of player motions—basically hardcoded keyframes, each of which defines the offsets of one or more of his head/body/knee/foot physics submodels, and the player movement code animates between these offsets, constrained by walls and so on. Which set of player motions gets used depends on the player mode: Stand, Crouch, Swim, Climb, BodyCarry, Slide, Jump, or Dead. (Note that although the code calls these "motions", they're not mocapped, and are entirely different from the animations in the motiondb). (ref: PHMODATA.C, PLYRMODE.H, PLYRMODE.CPP)
But when the player dies, and their mode is set to Dead, the set of player motions is just handled separately: it just—well, to quote the comment in the code: "snap all physics models to head, and let fall"—and sets the rotational velocity of the head submodel (ref: PLYRMODE.CPP). So yeah, the head falling is definitely not a motion, in either sense of the word :)
As for how the death abuse works: all the normal player actions—movement, attack, etc—check if the player mode is Dead, and do nothing if so; so trying to crouch when dead doesn't change the mode to crouch. Most of the physics interactions also check first (ref: GEN_BIND.CPP, DRK_BIND.CPP, PHCORE.CPP). But some of the physics interactions that can also force the player into different modes
don't check: so ending a climb (because you were on a rope or ladder), and entering or leaving water may be able to put the player back out of Dead mode again (ref: PHCLIMB.CPP, OBJMEDIA.CPP).
That dying on a ladder lets you flop around on the ground has of course been known long before the Thief speedrunning scene took off. However neither climbing nor water bugs seem to be the case in the typical speedrun death abuse—why does dying in that particular way in Bafford's lead to a broken death mode? I don't know. Do some of these glitches only exist in T1/G, and not T2/ND? Reading the T2 code, it's hard to say for sure where all the incorrect transitions in this spaghetti state machine are, cause all this code is scattered over a whole bunch of files. It's impossible to get a clear picture of it without really studying it in detail—I'm curious about the reason, but not that curious. :D