
Multiplayer FPS built in unreal engine with Steam session support. 1v1 game mode, multiple type of weapons.
Summary
* A multiplayer 1v1 FPS, with a focus on movement techinques like rocket jumping, tight movement and fun gameplay.
* Built in Unreal 5 with steam sessions and server creation setup support.
* Featuring a 1v1 first to 10 game mode, with respawns with server side shooting and physics with additional client side effects.
* Unreal Engine 5, Steam Sessions plugin, Networked programming
* C++, Replication concepts, NetNotifies RPC (client, server, netmulticast)
* Full multiplayer game mode, Free for all with tracked kills and Game mode, game state and player state networked state
* We use steam sessions with the advanced steam sessions plugin, to make the integration of steam more useful for us. One user acts like a listen server, and then other users join them. Reminisict of old COD lobbies.
* Advanced Steam Sessions offered a good system solution for this, allowing for more flexible and detailed control over our steam sessions. The user that wants to be the server host requests to create a game, and then the players can join up after they search and find the hosted session.

Our flow for steam sessions, and hosting a multiplayer game, going from the hoster (top player)
to the client (bottom icon).
* To start off, I worked on 2 wepaon acrchtypes, one hitscan (ray based), the other projectile.
* The shooting itself happens on the server. When the player calls the shoot method, on a hitscan weapon, the server is told to so. The server fires off a ray trace, taking in the gun barrell location, the weapon range.
* OnHit, we notify all the clients, and then tell the players to replicate a hit effect, dust, hit reg, etc. Our gun also spawns a blackhole projectile every 6th bullet so we check fo that, and spawn that as well.

The fire effect for the HitScan weapon, firing a ray cast, and then on hit, populating
OutHit data struct (custom struct that holds data for hit).
* Since our projectile is replicated, as it needs to follow the same path in each game, all we have to do is spawn it and then let it handle the rest.
* Our projectile lets you rocket jump (like in quake) which runs a check on collision with players, and if you are the shooter, it launches you in a direction away from the projectile.
* After spawning, and after the 10 second countdown, the players are allowed control. They can pick up weapons and shoot each other. On death, the player sends a notify/signal that is picked up by the playerstate and the gamemode. The playerstate tracks their individual score, and the game mode checks if either has reached 10.

* Built using behavior trees, EQS, pawn sensing, custom queries, services and tasks. Bosses have randomness, but also pattern based behaviors. This allows them to feel learnable but also vary up their strategies.
Coming soon!
Location