Sprint, Then Crouch
Crouchslide lands with a 425 speed gate, an 800ms duration, a 12-degree camera tilt, and swept triangle collision for bezier patches.
The Numbers
sv_slide 1
sv_slideDuration 800 ms
sv_slideMinSpeed 425
sv_slideCooldown 1500 ms
sv_slideSpeedMultiplier 1.2
sv_slideJumpBoost 1.3Sprint, then crouch, and you slide. It requires 425+ speed, which means it triggers on a sprint and not on a walk. Speed is preserved for 400ms and then decays to crouch walk speed. Jump cancels after a 400ms grace period. Holding jump gives the 1.3x boost. ADS is auto-disabled for the duration.
The camera tilts up about 12 degrees, eased in and out over 400ms each way with smoothstep. Vertical look is locked. Walk bob is off.
Crouch lowers the camera 20 units and moves at 50% speed via cl_crouchmult. The hitbox drops from 56 to 36 units, with a ceiling check so you cannot stand up into a low passage.
Patches Finally Collide
PatchTessellator.ts for bezier tessellation, traceTriangleSwept() for swept AABB against triangle via separating-axis projection, and a 2D box-triangle overlap test. Normal flipping: two-sided collision for patches, detecting back-face entry.
The CharacterController was refactored to delegate all movement resolution to CollisionManager.slideMove() — up to 5 planes, with proper overbounce and crease sliding.
Also Here
Wall jump minimum height raised 24 → 32 units with a speed-based push direction. Ceiling collision zeroes vertical velocity immediately, with an anti-stuck epsilon shrink of 0.125u. Debug hitbox via cl_debugbbox 1 and cl_debugbbox_offset (0-500), where "feet stay on ground, head lowers".
Ctrl+Key shortcuts are blocked while pointer-locked — "fixes Ctrl+W closing tab". EngineVersion.setDocumentTitle() puts a random SHAG tagline in the browser tab.
Known Issues: none stated.