Independent Project
September 2025

Unity 6 FPS Prototype

Expertise

Gameplay Engineering, AI & Systems, Rendering

Platforms

Windows (Standalone), WebGL (Prototype)

Deliverables

  • First-person controller (new Input System)
Unity 6 FPS Prototype

Project Overview

This Unity 6 prototype explores the fundamentals of first-person shooters—built from the ground up to internalize systems thinking, code structure, and player feedback. It implements a responsive controller, enemy AI via NavMesh, a modular weapon kit (pickups & switching), scoped sniping with layered cameras, and a clean game loop from spawn to Game Over. The work pushed beyond code into timing, readability, and how features actually feel in play.

Unity 6 Overview

Execution

Systems & implementation

  • First-person controller: new Input System (actions for move/look/jump/fire/swap), grounded checks, coyote time for jumps, camera look with clamped pitch and smoothed yaw.
  • AI: NavMesh Agents with lightweight state machine (idle → patrol → chase → attack); LOS checks via raycasts, reachability gates, and strafe/evade variants.
  • Weapons: modular pickup/swap system using ScriptableObjects for damage, fire rate, spread, recoil curves, ammo; raycast & projectile modes; hit markers, tracers, decals, and per-material impact VFX.
  • Sniper scope: layered camera setup for weapon-only rendering, dynamic FOV zoom, sensitivity scaling, vignette/reticle, and hold breath option.
  • Combat & VFX: explosion VFX with damage falloff, physics impulses, and screen shake; pooled particles to avoid GC spikes.
  • UI & flow: canvas-based HUD (health/ammo/crosshair), damage indicators, pause menu, and a polished Game Over screen with retry/quit.
  • Rendering: URP pipeline, weapon layer rendered on a dedicated camera to prevent clipping, Cinemachine camera rig for subtle sway/head-bob, and post-processing for readability.
  • Ops & tooling: addressables for content, object pooling for bullets/VFX, profiler-guided passes (CPU/GPU/GC), and simple telemetry hooks for encounter timings.

Results

Measurable outcomes

  • Performance: median FPS ≈ 120 (Standalone) · CPU frame ≈ 5.3ms · GPU frame ≈ 6.2ms · GC alloc/frame ≈ 0.6 KB.
  • Stability: crash-free sessions 99.2% on latest test set.
  • Gunfeel: average TTK window variability 8% after recoil/spread tuning; scope snap accuracy 3.1% (aim drift).
  • Build size: Standalone build 820 MB after asset compression & shader stripping.

Before → After (snapshot)

Before: camera jitter on weapon layers and stutter during heavy VFX. After: layered cameras + pooling → GC spikes ↓ 45% and steadier frame pacing during multi-enemy waves.