MFPC – Modular First Person Controller

MFPC – Modular First Person Controller

MFPC is a clean, extensible first person character controller designed for developers who want full control — not a rigid framework.

It provides a production-ready foundation for FPS, immersive sims, walking simulators, and narrative experiences — with a strong focus on clean architecture and modular design.

Controller-first, not demo-first.


Discord server link: FaberBrizio Assets

Unity Asset Store link: MFPC -Modular First Person Controller

Documentation: MFPC - Documentation

Roadmap: Notion roadmap link

Demo Inputs (customizable in Unity editor):

  1. PC: 
    1. movement: wasd or arrows
    2. camera rotation: mouse
    3. aim: mouse right (hold)
    4. sprint: shift (for this demo it's toggle mode - hold mode can be selected in Unity editor)
    5. crouch: ctrl (for this demo it's toggle mode - hold mode can be selected in Unity editor)
    6. jump: space
  2. Gamepad:
    1. movement: left stick
    2. camera rotation: right stick
    3. aim: LT
    4. sprint: left stick press
    5. crouch: B (Xbox controller), A (Nintendo controller)
    6. jump: A (Xbox controller), B (Nintendo controller)

Click on key "1" to camera sensitivity slider.



Movement & Player State

  • Walk, Sprint, Crouch, Jump, Aim, Lean
  • Hold or Toggle modes (configurable)
  • Forward-only sprint restriction
  • Collision-safe auto-uncrouch
  • Optional auto-unsprint when stopping movement (toggle mode)
  • Optional advanced slope handling
  • Physics interactions with environment.

Movement is predictable, tweakable, and free from hidden behavior.



Input Systems

  • Legacy Input System controller
  • New Input System controller
  • Mouse + keyboard support
  • Gamepad support (tested with multiple controllers)
  • Sensitivity parity between input systems
  • Frame-rate independent mouse smoothing (New Input System)

Swap input systems without rewriting gameplay logic.



Camera System (Cinemachine-based)

MFPC is built around Cinemachine, not custom camera math.

  • Virtual Camera setup for: idle, walk, sprint, crouch, aim
  • FOV kick on sprint (via Virtual Camera swap)
  • Headbob via Cinemachine Noise (no custom scripts)
  • Custom camera blends for smooth transitions
  • Separate aim camera variants
  • Clean integration with camera stacks

Optional module included:

  • Disable headbob/noise globally (no need to edit cameras manually)

You control the camera behavior visually — no black-box logic.



Animation & Events (Optional Modules)

MFPC does not require an Animator — but integrates seamlessly with one.

AnimatorBridge:

  • Syncs Animator parameters from controller state and velocity
  • Supports movement speed, grounded, crouch, sprint, aim
  • Includes jump/fall detection and vertical velocity
  • Works with both input system controllers
  • Optional auto-detection and LateUpdate syncing

Perfect for driving blend trees and layered animation setups without modifying the controller.


EventObserver:

  • UnityEvent-based state transitions — Jump (leave ground), Land, Sprint / Crouch / Aim / Move / Lean
  • Inspector-friendly — no custom scripting required
  • Ideal for audio, VFX, UI, or gameplay hooks

These modules keep MFPC lightweight while enabling full production integration.



Optional Stamina System

  • Sprint drain and regeneration
  • Jump stamina cost
  • Exhaustion and recovery behavior
  • Fully optional — no UI or HUD required

Includes a demo stamina UI example, which can be completely removed without affecting MFPC.



Audio System

  • Surface-based footsteps and landing sounds
  • Terrain and object support
  • Water surface handling
  • Audio pooling (no runtime instantiation spikes)
  • Easy to extend with ScriptableObjects

No hardcoded layers. No forced setup.



Architecture & Design Philosophy

MFPC is intentionally not an all-in-one solution.

  • No forced Animator Controller
  • No stamina system assumptions
  • No UI or HUD dependencies
  • No required layers or tags
  • No multiplayer logic baked in
  • Zero GC allocations in Update

Instead, MFPC gives you:

  • Clean state logic (by exposing variables)
  • Clear extension points
  • Optional systems via future modules

Build exactly what you need — nothing more.

Development log

Leave a comment

Log in with itch.io to leave a comment.