Skip to content

Movement changes

Evghenii Olenciuc edited this page Sep 26, 2023 · 65 revisions

General movement properties

Many new properties were added to better tweak movement mechanics

  • *footstep - A sound alias for footsteps
  • It is possible to disable wall friction by using the +compat_disable_wall_friction 1 flag. The game might still stop you sliding along a wall every once in a while, but it recommended to enable this flag when playing with Quake or Quake CPM movement. This flag is also available in compatibility options.
Decorate ACS Default Description
Player.ForwardMove - 1,1,1,1 Walking, Running, Crouch walking, Crouch running speed scale when moving forward and backward
Player.SideMove - 1,1,1,1 Walking, Running, Crouch walking, Crouch running speed scale when strafing left and right
Player.CrouchScale APROP_CrouchScale 0.5 Player crouch factor
Player.CrouchChangeSpeed APROP_CrouchChangeSpeed 0.08 Speed at what the crouch factor changes
Player.FootstepInterval APROP_FootstepInterval 12 Delay in tics between footsteps sound. Also determines how often an Effect Actor is spawned
Player.FootstepVolume APROP_FootstepVolume 1.0 Footsteps sound volume
Player.AirAcceleration APROP_AirAcceleration 0.25 Player acceleration while in the air
Player.VelocityCap APROP_VelocityCap 0 Horizontal velocity cap
Player.MvType APROP_MvType 0 Movement type. 0 for vanilla Doom, 1 for Quake
+SILENT APROP_Silent Disable all movement sounds such as footsteps, jumping, landing, crouch sliding and wall climbing
ACS SBARINFO Description
APROP_JumpTics "JumpTics" Remaining tics until jump is ready again
APROP_SecondJumpTics "SecondJumpTics" Remaining tics until second jump is ready again
APROP_SecondJumpsRemaining "SecondJumpsRemaining" Amount of second jumps left
APROP_SecondJumpState - Tells whether the second jump is currentlty ready (SJ_READY), available (SJ_AVAILABLE) or not available (SJ_NOTAVAILABLE)

Notes:

  • Player.ForwardMove and Player.SideMove - walking and crouch running speed is two times smaller than running speed, and crouch walking is a quarter of running speed. That means that if you want the player to always walk at the same speed, you need to set these properties to 2,1,4,2.

  • Player.ForwardMove is by default 4%,25%,8%,4% higher than Player.SideMove. So, if you want the player to strafe as fast as moving forward, then use Player.SideMove 1.04,1.25,1.08,1.04

  • Player.VelocityCap only affects velocity produced by player movement. External thrusts like jumppads or rocketboosts can still exceed this limit and it will remain until the player slows down due to ground friction or hits a wall.


Jumping

Q-Zandronum has a concept called Second jump. To trigger second jump you need to first be in the air and then press the jump key. However, that is not available by default, because the Player.SecondJumpAmount property is 0. Increasing the value will essentially grant the player a double jump ability.

  • *jump - A sound alias for jumps
  • *secondjump - A sound alias for second jumps
  • *edgejump - A sound alias for edge jumps
Decorate ACS Default Description
Player.JumpZ APROP_JumpZ 8 Vertical thrust when jumping
Player.JumpXY APROP_JumpXY 0 Horizontal thrust when jumping
Player.JumpDelay APROP_JumpDelay 7 Delay in tics between jumps
Player.SecondJumpZ APROP_SecondJumpZ 8 Vertical thrust when doing a second jump
Player.SecondJumpXY APROP_SecondJumpXY 0 Horizontal thrust when doing a second jump
Player.SecondJumpDelay APROP_SecondJumpDelay 7 Delay in tics after the first jump and between second jumps
Player.SecondJumpAmount APROP_SecondJumpAmount 0 Amount of second jumps available to the player. Using -1 will grant infinite second jumps
Player.DoubleTapMaxTics APROP_DoubleTapMaxTics 10 Max time in tics to perform a double tap second jump
+WALLJUMP APROP_WallJump Seconds jumps can only be triggered when the player is near a wall
+WALLJUMPV2 APROP_WallJumpV2 Same as the above, but the player will be thrusted at a opposite direction of a wall instead of based on player input
+GROUNDSECONDJUMP APROP_GroundSecondJump Allows the actor to perform second jumps right from the ground
+ABSOLUTESECONDJUMP APROP_AbsoluteSecondJump Second jumps will set velocity instead of adding to it
+DOUBLETAPJUMP APROP_DoubleTapJump Disable second jumps by pressing +jump key and instead do a second jump by double tapping movement keys. However, it doesn't disable the +user4 key if +USER4JUMP is ON.
+EDGEJUMP APROP_EdgeJump By default first jumps will override vertical velocity. Using this flag will instead add jump velocity to whatever the player had at the moment, thus allowing much higher jumps when taking ramps, stairs or ledges. Make sure to assign a sound to *edgejump alias or else edge jumps will be silent
+ELEVATORJUMP APROP_ElevatorJump Jumping on an elevator that is moving up will make player jump higher
+USER4JUMP APROP_User4Jump Binds second jump key to +user4 instead of +jump

Notes:

  • It is not possible to do a wall jump off an invisible Block everything or Block players linedef. If you want players to do a walljump off it, make sure to use the Impassable flag for the linedef.

Wall climbing

Q-Zandronum has a built-in support for wall climbing. In order to begin climbing you need to face a wall and then press forward and jump keys simultaneously

  • *wallclimb - A sound alias for wall climbing
Decorate ACS Default Description
+WALLCLIMB APROP_WallClimb Enable wall climbing
Player.WallClimbSpeed APROP_WallClimbSpeed 5.0 Wall climbing speed
Player.WallClimbFriction APROP_WallClimbFriction 1.25 Horizontal friction when climbing a wall. Keep in mind that wall friction uses different formulas in Doom and Quake movements, thus different WallClimbFriction values are required to achieve similar results. Default 1.25 is designed for Doom movement. To achieve a similar friction in Quake you need to bump the value up to about 4.0.
Player.WallClimbMaxTics APROP_WallClimbMaxTics 70.0 Maximum tics the player can climb without touching the ground
Player.WallClimbRegen APROP_WallClimbRegen 2.0 How much wall climb stamina to restore per tic. Stamina can only restore when staying on ground
ACS SBARINFO Description
APROP_IsWallClimbing - Whether the player is currently wall climbing
APROP_WallClimbTics "WallClimbTics" Remaining wall climb tics

Notes:

  • It is not possible to climb an invisible Block everything or Block players linedef. If you want players to climb it, make sure to use the Impassable flag for the linedef.

Quake movement properties

Unlike default Doom movement, where in order to go faster you need to strafe run, in Quake movement running diagonally does not increase speed at all. Instead you have to utilize a mechanic known as Strafe Jumping or Bunny Hopping.

  • Player.MvType 1 - This will enable Quake movement. It is highly recommended to also use Player.JumpDelay 0 and Player.SideMove 1.04,1.25,1.08,1.04 to achieve a more canon quake movement mechanic
  • *crouchslide - A sound alias for crouch sliding

Below values are only relevant to Quake movement type

Decorate ACS Default Description
Player.GroundAcceleration APROP_GroundAcceleration 10.0 Acceleration when player is on ground
Player.GroundFriction APROP_GroundFriction 6.0 Ground friction
+CPMAIRCONTROL APROP_CpmAirControl Enable CPM-like air control
Player.CpmAirAcceleration APROP_CpmAirAcceleration 12 Air acceleration for CPM character
Player.CpmMaxForwardAngleRad APROP_CpmMaxForwardAngleRad 0.122173 Max angle (in radians) a player can immediately turn per tick without losing velocity
+CROUCHSLIDE APROP_CrouchSlide Enable crouch sliding
Player.CrouchSlideAcceleration APROP_CrouchSlideAcceleration 10.0 Player acceleration when crouch sliding
Player.CrouchSlideFriction APROP_CrouchSlideFriction 1.0 Ground friction when crouch sliding
Player.CrouchSlideMaxTics APROP_CrouchSlideMaxTics 70.0 How long a player can crouch slide without resting
Player.CrouchSlideRegen APROP_CrouchSlideRegen 2.0 How much crouch slide stamina to restore per tic. Stamina restores at any time when not sliding, be it on ground or in the air
ACS SBARINFO Description
APROP_IsCrouchSliding - Whether the player is currently crouch sliding
APROP_CrouchSlideTics "CrouchSlideTics" Remaining crouch slide tics
  • Quake CPM aka Quake Challenge ProMod was a mod for Quake 3 that was so good that it became a canon. The main difference is that in CPM you have much better air control and can turn at a wide angle while in the air.

Air Wall Running

Q-Zandronum has a built-in support for wall running above ground. It is called Air Wall Running to avoid confusion with the Wall Run speed bug. In order to air wall run you need to jump onto it and input your movement along the wall in the direction you want to go.

  • *footstep - Wall running uses the same sound alias as normal running
Decorate ACS Default Description
+AIRWALLRUN APROP_AirWallRun Enable wall running
Player.AirWallRunMaxTics APROP_AirWallRunMaxTics 70.0 Maximum tics the player can run along the wall
Player.AirWallRunRegen APROP_AirWallRunRegen 2.0 How much wall run stamina to restore per tic. Stamina always recharges when you are not wall running
Player.AirWallRunMinVelocity APROP_AirWallRunMinVelocity 10.0 The minimum velocity the player should have to be able to wall run
ACS SBARINFO Description
APROP_IsAirWallRunning - Whether the player is currently air wall running
APROP_AirWallRunTics "AirWallRunTics" Remaining air wall run tics

Notes:

  • Wall Running currently only works in Quake movement
  • It is not possible to air wall run along an invisible Block everything or Block players linedef. If you want players to do that, make sure to use the Impassable flag for the linedef.