ED Mounting System
Cars, horses, turrets, boats, ski lifts. Anything a pawn can sit on is a mount, and this framework is two components: one on the thing, one on the rider.
Rider->RequestMountNearest(); // walk up, press a key
Rider->RequestDismount(); // get out, through a door that is actually clear
Rider->RequestShuffleSeat(); // slide across to the passenger seat
Everything is reachable from Blueprint and from C++ — neither is a second-class citizen.
What makes it different
Seats you place, not seats you type. A seat is a scene component you drag into position. Its doors are arrows you drag too. Parent a seat to a bone and it follows the bone, so a saddle stays on a saddle and a turret gunner turns with the gun — no code, no per-frame cost.
The alternative, which is what most mounting systems ask for, is typing (-45, 80, 20) into a struct
array and running the game to find out where that was. Nobody can picture a door as three numbers.
Doors that know when they are blocked. Every entry point is swept against the world before it is offered. Park a car against a wall and the framework stops offering the seats whose only door faces it. Get out in a tight garage and it finds the door that fits — or refuses, or squeezes you out.
Animation as data. One data asset maps (phase × side × seat role × whatever tags your game cares about) onto montages, with motion warping so the animation lands on the door instead of near it. A different get-in for the left and right doors is a data change, not a code change.
It works before you have any animations. With no montage, the transition is a spring-eased slide along an arc — computed in the seat's own frame, so it stays correct on a moving vehicle. Prototype today, author animations later, change nothing.
Server-authoritative, with prediction. One replicated struct per rider and a delta-replicated seat array. An autonomous client starts its animation on the frame the key is pressed; the server validates and either confirms it or rolls the client back. Two players racing for the same seat cannot both win.
It costs nothing when nothing is happening. Nothing ticks except a rider mid-transition. Mount queries run against a registry, not a physics overlap.
Where to start
- Installation — the plugin, and confirming it works.
- Quick start — Blueprint — a mountable car in ten minutes, no code.
- Quick start — C++ — the same thing in about forty lines.
Then Seats and Entry Points, which is where most of the authoring happens.
Requirements
Unreal Engine 5.8. Windows, Linux and macOS. Motion Warping, Enhanced Input and Chaos Vehicles are enabled for you — the last only for the optional vehicles module.
The example project
A complete runnable game ships alongside the plugin: a character who walks, gets into a four-seat car, drives it, shuffles seats, and mans a turret. All C++, no Blueprint, no configured assets. See The example project.