Project: Projector is a mechanic prototype I built in preparation to make a vertical slice of a stealth/FPS game.
Resource management and first-person shooters go hand in hand. Reloading gives a natural ebb and flow to combat, limiting ammo forces the player to use their entire arsenal. The arsenal itself can be made up of different tools to allow varied gameplay.
The concept for the project was to provide a secondary tool to accompany the primary weapon with multiple functions that all utilise the same resource (a battery). The primary loop of the game is stealthing around a central creature while preparing to confront it. The longer the player takes, the more agitated the creature becomes, so although the battery infinitely recharges, preventing softlocks, they're encouraged to optimise as much as they can.
I'd had an idea for a diegetic UI system for a while. Placing a projector on your shoulder would provide a unique aesthetic and the slight fade with depth gives players an extra method to tell how far away an object is.
I wanted the system to run using Unreal's lighting systems rather than something bespoke. This was for convenience and to ensure that future additions didn't have to fight against the engine.
I really like the distortion caused by it being offset from the player camera. It's only slight (10cm), so it doesn't make the effect illegible, but it helps ground it in the world. I pursued these imperfections to give the projector character. If I were to develop this into a full game, I would want the player to feel like they're never alone with their projector.
I first built out a scanner. I'd built out a grid pattern for testing so just add a scene capture component in line with the spotlight and used the render target in the material as a mask.
Objects can then be added by setting them to render on the custom depth pass.
I set the drain rate on the battery to be incredibly slow. Players who keep it on aren't heavily punished but it stops the battery from refilling. The intention for the scan was for the player to turn it on in areas of interest, helping them look for a few minutes at most then switching to a different mode.
The projector was designed primarily for combat so I focused on that next. Simple damage boosts while useful lacked visual elements and felt generic. A player would enter combat, turn it on and then forget about it.
I instead pursued crowd control. For lower-skilled players this would make landing hits easier and for experienced players this would allow for consistent hits on weak spots.
The dazzle was complex to implement visually but well worth it It's clear when the indicator is inside and outside the zone. The target selection prioritises enemies within the zone sorted by distance first so it always felt accurate. Finally, the system is set up so adding more targets would be simple.
I'd originally experimented with a particle system for the
projector and, even after scrapping that, wanted to involve Niagara elements in the project.
I restricted the dazzle function to only work on smaller enemies as slowing a larger enemy felt too comedic. This pushed my final function to support combat against large enemies and to make it stand apart I went for a cannon.
It needed to be costly and difficult to use, to stop it from being a viable substitute for the main weapon. I added a movement and camera slow to a lengthy charge-up time to make use of it requires planning. If Enemies are too close or moving erratically you're likely to waste it, but in the right scenario, it can deal a heavy amount of damage.
I'm happy with how this project turned out, especially on the visual side. It obviously still has areas to improve namely the lack of a weapon or complex AI for enemies. I'd be interested in building this project out further, but I'm moving on to something new for now. I learned so much making this that I'll be able to build a much more stable foundation on my next project.