Skip to content

Metal-666/ProjectUltraversal

Repository files navigation

ProjectUltraversal

A WIP parkour game featuring procedural animations and a replay system. Powered by Godot 4.

Banner

Player movement overview

The following player states (moves) are currently implemented:

  • Idle
    • Animations and feet placement adapt to floor shape.
    • When standing near walls the player character will touch them :3.
  • Moving
    • Automatically blends between a walking and a running animation based on player velocity.
    • Fall protection when walking near a ledge.
  • Stepping
    • While moving, automatically step over small obstacles.
  • Grinding
    • The player will grind to a halt when exiting the running state.
    • One of the legs will be selected as the leading one, based on the camera angle and movement direction.
  • Jumping
  • Falling
  • Crane
    • Triggered when landing on the edge of an obstacle.
  • Vaulting
    • Vault over thin obstacles.
    • Vault onto elevated surfaces.
  • Landing. The landing type is determined based on the player velocity and input.
    • Soft
      • Hold the crouch key to perform a safety tap to absorb vertical velocity.
    • Roll
      • Tap the crouch key just before landing to perform a roll (must have high vertical velocity).
    • Harsh
      • Don't press anything to slam into the ground and break a few bones.
  • Sliding
    • Slide under obstacles and down slopes.
    • Slide speed and duration depends on the surface steepness and material.
  • Crouching
  • Crawling
    • Crawl on uneven terrain and over gaps.
  • Ledge Grab
    • Move forward while falling to grab onto nearby ledges. Afterwards the player will enter one of 4 states:
      • Cat Hang
        • Selected when a vertical surface is found underneath the ledge.
        • Allows turning around and jumping away from the ledge.
        • Allows climbing up onto/over the ledge.
      • Hanging
        • A fallback state, selected when there's no suitable surface to place feet on.
      • Hanging (recovering)
        • Selected when the player has too much vertical momentum. After a few seconds switches to Cat Hang or Hanging.
      • Falling
        • At extreme velocities, the player will take damage and keep falling.
  • Tic Tac
    • Bounce off walls and clear short obstacles.
  • Break Through
    • Smash through doors.

Some states have missing or incomplete animations. There are also bugs. LOTS OF BUGS.

The replay system

The replay system allows recording your gameplay and playing it back. Check the Controls section below for current keybinds. The frames of the replay are recorded at the end of each PhysicsProcess event (at 60 tps). What is recorded:

  • Player model state
  • Camera transform
  • Player properties (velocity, position etc.)
  • Debug information (player state info, animation values, raycast data etc.)
  • Game information (framerate, C# exceptions, frame count etc.)

Two types of replays are available: standard and debug. Standard replays can be recorded by pressing the key, specified in the controls section. After the recording is finished, you will be prompted to save the recording to a file. You can then view recorded replays. Debug replay functions similarly to the Replay Buffer feature found in OBS. The recording is always running in the background and stores last 30 seconds of gameplay. After watching the debug replay the buffer is cleared.

Interface

replay system interface screenshot

  1. Exit replay player button
  2. Copy all caught exceptions to clipboard button
  3. Debug Overlay elements
  4. Replay player model
  5. Replay progress bar
  6. Pause/Resume button
  7. Current replay time
  8. Current replay frame
  9. Camera mode toggle
  10. Debug options dropdown menu
  11. total replay frames
  12. Total replay duration

Controls

Game

  • Hold W/A/S/D to move (run/walk).
  • Press Alt to toggle the ability to run (on by default).
  • Press Space to jump.
    • Hold W and jump towards a low obstacle to vault over it.
  • While falling:
    • Hold W when in front of a ledge to ledge grab.
    • Hold W when above a ledge to do a crane.
    • Hold Ctrl to do a soft landing.
      • Alternatively, press Ctrl just before landing to do a roll (only activates when the vertical velocity is high enough).
  • While in a cat hang:
    • Press Space to climb up.
      • Press Space again while climbing up to queue a vault over move (if there's enough room on the other side).
    • Press Ctrl to let go.
    • Turn around and press Space to do a wall jump.
  • While hanging:
    • Press Ctrl to let go.
  • Hold Ctrl while standing still/walking to crouch. When crouched:
    • Hold W/A/S/D to crawl.
    • Double tap W to do a roll.
  • Hold Ctrl while running to slide.
    • Release Ctrl to stand up early.
    • Release W to stop.
  • In order to perform a tic tac:
    • Hold W and move parallel to (or slightly towards) a wall.
    • Press Space to jump.
    • While in the air, tap A or D to move diagonally into the wall.
  • Press LMB to break through a door.
  • Press ] to start recording a replay. Press again to stop and save the recording.
  • Press [ to open and watch a saved replay.
  • Press ' to watch the current debug replay.
  • Press - to respawn the player.
  • Press ` to unlock the mouse pointer.
  • Press F11 to toggle fullscreen.
  • Press Alt+F4 or hold ESC to close the game.

Replay

  • Press Space to pause/resume. When paused:
    • Press . to go 1 frame forward.
    • Press , to go 1 frame back.
    • Hold RMB to control the camera.
      • POV mode:
        • Camera control is disabled (lol).
      • Orbit mode:
        • Move the mouse to rotate the camera.
        • Scroll wheel to zoom in/out.
      • Free flight mode:
        • Hold W/A/S/D to move the camera.
        • Move the mouse to rotate the camera.
        • Hold Ctrl to descend and Space to ascend.
        • Hold Shift to speed up and Alt to slow down.

Credits

Addons

C# libraries

Models

Gallery

Cat hang POV screenshot Slide POV screenshot

Crawling TPV screenshot Grind TPV screenshot