# Traversecraft Traversecraft is predicted, replicated traversal for Unreal Engine: vaulting, mantling, climbing high ledges, ladders, hanging from ledges, moving along them and jumping between them, sliding under obstacles, running along walls and pushing off them, and two players helping each other up, for both the Character Movement Component and Mover. Each move runs inside the movement system's own prediction, so the owning client does not wait for the server, the server checks the same move from the same input, and a correction replays it like any other move. Nothing is switched off while it runs. Animations made with root motion for one obstacle size can follow it, stretched to each obstacle, still predicted. `Traversecraft.Debug 1` shows each move's path and the corrections on screen, so you can check it under lag yourself. It is one C++ plugin with three modules: `Traversecraft` (the CMC version and everything shared), `TraversecraftMover` (the Mover version) and `TraversecraftExample` (the example map's character and ladder). Everything is set up from Blueprint; no C++ is needed in your project. ## What is in it | Part | What it does | Page | |---|---|---| | `UTRCCharacterMovementComponent` | A Character Movement Component with every move below | [Getting started with the CMC](getting-started-cmc/) | | `ATRCCharacter` | A Character that already uses it. Reparent a Blueprint character to it and keep the graph | [Getting started with the CMC](getting-started-cmc/#reparenting-a-blueprint-character) | | `UTRCCharacterMoverComponent` | A Character Mover Component with the same moves | [Getting started with Mover](getting-started-mover/) | | Traversecraft modes and transition | The same moves added to a Character Mover Component you already have (Game Animation Sample, your own) | [Getting started with Mover](getting-started-mover/#adding-traversecraft-to-your-own-mover-component) | | `UTRCLadderComponent` | Marks a ladder: height, width, lean, climbing off the top | [Ladders](ladders/) | | `UTRCZiplineComponent`, `UTRCRopeComponent` | Mark a zipline cable and a rope: grabbed in the air, ridden or swung on, let go with the jump | [Ziplines and ropes](ziplines-and-ropes/) | | Hanging | Ledges hung from, moved along, gone round and climbed up from | [Hanging from ledges](hanging/) | | `ATRCTraversalNavLink` | A smart nav link that takes AI over an obstacle with a traversal | [AI](ai/) | | Ability tasks | **Traverse And Wait** and **Wait Traversal**, for the Gameplay Ability System | [Gameplay Ability System](gas/) | | Set Up for Traversecraft | Right click a character Blueprint: reparents it or adds the Mover modes, and takes the Game Animation Sample's own traversal out of the jump | [Game Animation Sample](gasp/#in-one-click) | | Animations | One animation per move (and variants by height and speed), played on every machine; loops that follow the ladder and the shimmy | [Animation](animation/) | | Co-op | Hold a key to brace for a boost or to kneel at an edge and pull a teammate up, predicted like the rest | [Co-op](coop/) | | Traversal Hand IK | An Animation Blueprint node that puts the hands of a vault, mantle or climb on the real edge, at any height | [Hands on the edge](animation/#hands-on-the-edge) | | Game rules | Each move on or off, and a `Can Traverse` check on the character for stamina and the like | [Settings](settings/#moves-on-and-off) | For the Game Animation Sample, see [Game Animation Sample](gasp/). For every setting, see [Settings](settings/); for every call and event, [Blueprint reference](blueprint/). For how it behaves on a bad connection and how it was measured, see [Networking](networking/). For what it does not do, see [Limitations](limitations/). ## The moves | Move | When | How long | |---|---|---| | Vault | An obstacle up to 120 cm high and 120 cm deep, with ground behind it | 0.55 s, or its animation's length | | Mantle | A ledge up to 210 cm above the feet | 0.54 to 0.9 s by height, or its animation's length | | Climb | A ledge from 210 to 300 cm | 1.3 s, or its animation's length | | Ladder | A `UTRCLadderComponent` in front, or its top under the feet | As long as you climb; off the top onto what is behind it, or off the foot | | Hang | A ledge from 300 to 360 cm, one reached in the air, or an edge dropped down from | As long as you hang; along it, round its corners, up from it | | Slide | Something with a gap under it that fits the low capsule | At the speed it came in with, at least 350 cm/s, or its animation's length | | Wall run | In the air, fast, alongside a wall (off by default) | Until it falls too fast, the wall ends or it jumps off | | Hang jump | Hanging, the jump key: up to a ledge above, or across a gap to one at the side | 0.5 s, or its animation's length | | Wall kick | In the air with a wall in front, the jump key again (off by default) | 0.2 s of push, then it flies off | | Boost | A jump at a teammate braced in front (it holds the help key) | It goes up 3.7 m, on toward what the teammate braces against | | Pull up | A jump at a wall with a teammate kneeling at its top (it holds the help key) | A ledge 150 cm higher than alone is grabbed, then climbed | All of them start from the jump key in front of the obstacle (the wall run and grabs in the air start on their own), so a player needs no new binding, only the helper's key for co-op. Every distance and time above is a setting. ## Tested - On a dedicated server with two clients at 150 ms and 5% packet loss, each move on both systems: see [Networking](networking/). - 3,000 random obstacles (boxes, tilted boxes, cylinders, rocks, stacked blocks, thin walls, overhangs, high ledges, ramps), each walked at by a character asking for a traversal: none ended inside geometry, under the floor, stuck in a move, or jumped further in a frame than its speed explains. ## Requirements - Unreal Engine 5.6, 5.7 or 5.8. Each version has its own package. - The Mover plugin is enabled with Traversecraft (it is a dependency), even if you only use the CMC. - Windows. On Linux it builds and runs with 5.6 (see [Limitations](limitations/)). - Any skeleton and any capsule size: the moves are measured from the capsule, not from a mesh.