Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
printz

[ADDED] Thinking about improving jump and air control support

Recommended Posts

EDIT: I've just added air-control to Eternity. It's an optional compatibility setting which is YES by default (i.e. disabled) just like the other "new" settings (z-clipping, terrain effects, falling damage).

Right now, Eternity has a "jump" command which can be bound to a key. If it's bound, you can jump in any level, regardless if it's meant for vanilla, Boom or Eternity. There's no compatibility option in the menu or in the OPTIONS lump to enforce against jumping. I only added recently a setting in EMAPINFO, per map, to disable jumping, called "nojump". Unfortunately, that's not gonna apply retroactively to non-jumping levels.

Second, even if you can jump in Eternity, you cannot propel yourself ever so slightly to get up on an obstacle right next to you, like you can in Hexen and Strife (this feature is popularly called "air control"). You really have to gain momentum if you want to jump on some sector-based obstacle. So there needs to be a new feature in Eternity, most likely imported either from Hexen or Strife. Both games act like this: if you're in air, if you hold any movement key, you will be thrusted forward (not in your intended direction) by a fixed amount (1/256 acceleration). The difference between Hexen and Strife is slight: in Hexen your air control is triggered regardless if you hold forward/back or strafe, while in Strife it only happens if you hold forward/back. I think Hexen's way is better, but I'll probably make it game-dependent, so if you're in Strife, you'll jump like in Strife.

But even if I currently need to gain momentum to jump on linedef ledges, there's no such requirement for things! Right now it's extremely easy to jump on imps like a true acrobat in Eternity, whereas I've found that in ZDoom it's more difficult. This is because in vanilla Doom if you push against things, you still see your weapon weaving around; you still have 'energy'. I wonder if Hexen and Strife did some changes to limit the possibility of this trick (like ZDoom did), because otherwise it really means that you can easily jump over demons and escape their mouths. As I said, this seems to need more effort in ZDoom.

So how do I address enabling jump and air control? Probably by adding a menu option somewhere. I don't know where... Currently the other similar feature, mouse-looking, is found in the mouse (!) options, but jumping has nothing to do with mouse. And I don't really want to add it in the Compatibility options submenu. Second, I'd like to enable air control only when jumping is enabled. Third, the various game modes should have it off (Doom, Heretic...) or on (Hexen, Strife...) by default.

Share this post


Link to post

I think a lot here depends on how the stepping on things is implemented, how easy this becomes.

Have you used Raven's code for this or some own solution. ZDoom uses the original Hexen/Heretic code for this, so I guess it's the same in the original games. Of course, if Eternity checks this differently, it will inevitably behave differently.

And for the movement in-air, ZDoom just does something very simple: As long as you are in the air, a specific factor (level.aircontrol) is applied to the movefactor value (the one from GetFriction etc.) before applying it to the incoming ticcmd. So essentially you keep all movement properties, but heavily reduced in effectiveness. I believe the value was made to resemble Hexen most closely. This value can also be changed via MAPINFO.

Share this post


Link to post

After some talking on IRC, I've come to the following stuff:

1. No need for a menu compatibility option to guard against jumping. It's obvious when playing Doom/Boom/MBF maps that the player shouldn't jump, so just count on player's discipline. And as for modern EE/cross-port maps where for some reason jumping isn't wanted, you can put "disablejump" in EMAPINFO.

2. Air control is something which affects gameplay (ever so slightly) without your control (ok, it can be said it's still under your control, but you have to promise never to press movement keys while in air, which is impossible), and yeah, I'd like to add a compatibility option against that. I don't want my vanilla playthroughs in Eternity to be affected by it, and I don't want it to be exclusive to vanilla demos either. Adding a compatibility option automatically generates a field for the OPTIONS lump.

So indeed, ZDoom is like Hexen here. In those engines, momentum STOPS when you are blocked by another thing. In Doom you keep having energy which you're ready to release into speed when your way is free. Which is a tough thing, because thing-running in vanilla Doom must also stay, but makes jumping over things ridiculously easy (and id never thought about z-clipping when making Doom, unlike Raven who were the first to add jumping, so they actually addressed that!). I guess we'll make it a player class specific property: Hexen classes won't be able to accelerate by pushing into things.

Dunno how Strife acts, yet.

Share this post


Link to post

Better make it a map flag, so mods can set it as needed.
Imagine someone making a map for ZDoom and Eternity and having problems with different, incompatible behavior.

Interesting that thingrunning and this are the same effect, I always wondered why it never worked in ZDoom but I didn't consider it important.

What I do not understand is why this helps jumping on other things. Shouldn't that move block if it ends up inside the other thing and not on top of it?

Share this post


Link to post
Graf Zahl said:

Better make it a map flag, so mods can set it as needed.
Imagine someone making a map for ZDoom and Eternity and having problems with different, incompatible behavior.

I don't think I'll do that; maps shouldn't rely on speedrunning tricks to be winnable anyway. Expect edge cases to be different between the ports; authors trying to make maps common between ports shouldn't push the limits. Just like I can't expect ZDoom friendly monsters to be the same as the MBF ones etc.

What I do not understand is why this helps jumping on other things. Shouldn't that move block if it ends up inside the other thing and not on top of it?

Because you can step on things even from mid-air, so the actual height is 32 not 56. Is this wrong? I admit I had quite a difficulty jumping over the mini-bosses in Hexen (the only enemies short enough to jump on).

Share this post


Link to post

I've just added a compatibility setting to disable/enable air control to the game; expect it in the next development release (devbuilds.drdteam.org). Currently it uses the Hexen model, but I'm considering adding optional EMAPINFO air control settings which would make it proportional to player's intended movement, which would be very useful and much needed in low-gravity maps.

Even though I wasn't sure it's worth moving forth with, I realized that we're playing a game that was just refreshed in 2016, with a Doomguy who easily jumps at demon throats to rip them apart and eat their hearts, so being able to jump over monsters is totally fitting, and it doesn't really mean it makes you safe all the time, and map authors should design their levels with this in mind (or choose to be more conservative and disable both jumping and air control, via EMAPINFO and OPTIONS).

As a compatibility setting, it's disabled by default, just like the key binding for jumping, or the falling damage / terrain effects / 3D thing clipping. So remember to make it enabled (in the "compatibility" menu).

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  
×