This was a project I worked on to build experience working on FPS and multiplayer games in Unreal Engine 5.
Party & Lobby System
I built a party & lobby system for a 4v4 PvP experience using the Steam SDK, that supports the following features:
Persistent parties = Your party stays connected in and out of game
Pre-game lobbies
Party & Lobby Host Migration = Come and go as you please
Leave party
Leave matchmaking lobby with or without party if you're the party leader
Promote to leader
Supports split-screen through a custom data structure and messaging system
Seamless background scene = No map transitions until loading into the game
Slot reservation using beacons = No fruitless lobby joins here
Kicking party members
Due to time & resource constraints, I identified the following limitations that I was willing to live with:
You can only join a friend's party if they're not in a matchmaking lobby
No join in progress
Currently only supports 4v4 game modes
Aim-Assist
I designed an aim assist system around these goals:
Provide enough assistance without taking control away from the player
No unintended adjustments
Only assist in following targets while you are moving
Allow for precise aim when over targets
Disable when many targets detected (This is important for a planned PvE element)
And implemented the following solution:
Only move the player's aim when the player is moving, to allow for tracking and rotational assistance
Lightly move the player's aim toward the center of the target, ignoring pitch, the player retains full control over pitch to target head/torso
When aimed over a target, apply friction, aka reduce look speed
When player's target changes 2 times for a total of 3 targets within a short period of time, disable aim assist to allow full control of aim
Recoil
Auto-Centering
It auto-centers when you're done firing and updates the centering target as you look around. If you look up while firing, it updates the pitch target, but if you look down, it doesn't update until you get past your original point to allow you to fight the recoil.
It also updates the yaw target as you look left and right, so it only pulls you down from your current input.
ADS Stabilization
ADS Stabilization progressively reduces the recoil over time while you're zoomed in so that it's easier to aim at a distance.
Multiplayer Ready
Because it applies controller input independently of framerate and centers by updating the control rotation, it works inherently with my multiplayer setup because I'm using the base aim rotation to drive the look direction.