Idhant.

Fate
Shooter

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.

Tech Used:

* 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

Details:

Networking and Sessions

* 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.

Image of a flowchart showing steam sessions

Our flow for steam sessions, and hosting a multiplayer game, going from the hoster (top player)

to the client (bottom icon).

Weapons and Guns

* To start off, I worked on 2 wepaon acrchtypes, one hitscan (ray based), the other projectile.

Hitscan Weapon

* 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.

Image of a flowchart showing steam sessions

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).

Projectile Weapon

* 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.

Game Flow

* 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.

Image of a flowchart showing steam sessions

* 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.

Gallery:

Coming soon!

VER 3.0.1
* I am an Game Developer specializing in Gameplay Programming, Graphics, Feature programming and leading teams. With a knack for creating distict gameplay experiences, my work spans different platforms, seamlessly blending strategic thinking with cross-team solutions.
NEWCASTLE UPON TYNE 5.12.2025
IDHANT DABRAL
ALL RIGHTS RESERVED
  • Email

    starmandev@gmail.com

  • Location

    Newcastle Upon Tyne, UK

Building a game?

Lets Chat.