top of page

Making An Impact

A first-person shooter prototype that explored game feel and impactful combat through anime-inspired embellishments and effects. The project incorporates and layers a variety of systems and mechanics, such as a state-based character controller with forgiveness mechanics, enemies with different AI personalities, dynamic UI animations, temporal effects, VFX, and stylized shaders to create a sense of momentum and powerful impacts. 

The source code, as well as some refactored and expanded systems used in this project, are available on GitHub.

Details

Online Image_RaymondCorten_1.png

Platforms

PC (Windows)

Team Size

Solo project

Development Duration

Feb 2025 - May 2025

Software Used

Unity, GitHub, Blender, Procreate, Figma, Photoshop

Role and Purpose

For my Honours Project I researched game feel for first-person shooters by adapting visual techniques used in anime to enhance the juiciness of interactions. Throughout my projects, I've grown increasingly interested in making my games feel good to play, thinking about possible measures to take throughout every stage of production.

 

Many student and lower budget games feel floaty and lack impact, so I set out to explore how secondary (non-animation) embellishments can be implemented to improve the visceral sensation of playing a game. 

Contributions by Discipline

Features

  • State-Based First-Person Character Controller

    • Movement abilities: walking, dashing, crouching, jumping (short/long depending on input duration), double jumping, Celeste-style dash jumping

    • Forgiveness mechanics: coyote time, input buffering

    • Combat abilities: normal hipfire with weapon spread, piercing shot, charged shots

    • Charge shot charge progress indicators through gradual weapon colour changes and UI reticle progress bar

    • Aiming mode with slowed focus time, lowered mouse sensitivity, weapon position change, and visual indication through post-processing fading

  • Enemies

    • NavMesh AI movement and player chasing logic based on different enemy personality types: idle, roaming, chasing

    • Health and damage-taking system

    • Squash and stretch animations using ScriptableObject profiles for idle animations, walking , and taking damage

    • Different facial expressions assigned per-enemy, and expression changes on taking damage

    • Hit reaction feedback: hitflash effect, temporary facial expression change to hurt expression, temporary movement stop, squash and stretch effect

  • Centralized VFX Management and Pooling

    • Pooled instantiation of enemy hit VFX based on weapon firing mode

    • Dynamic bullet trails with calculated VFX graph properties for each weapon firing mode

    • Dynamic action lines based on ScriptableObject profiles for each application (i.e. dashing, charge shot hit feedback)

  • Temporal Effects

    • Hitstops for defeated enemies and for layering with other effects, such as impact frames, managed by a centralised script to easily trigger different hitstops based on profiles

    • ScriptableObject hitstop profiles containing animation curves and properties for finetuned implementations

    • Aiming time slowdown for more precise shooting that gradually transitions back to normal time

    • Return time manager to handle returning to altered timescales and handle paused game timescales

  • Stylized Effect Controllers

    • Impact frame shader controlled via script that sets effect duration and shader properties for each use

    • Timed cinematic framing through black letterbox bars

  • Customizable Shader-Driven UI Reticle

    • Script-based animations for hit reactions by altering instanced material properties at runtime

    • Visual indicator of charge shot progress through circular charge bar

  • Script-Based Weapon Animations

    • Weapon swaying, bobbing, and lagging to make the cannon feel more grounded

    • Cannon recoil animations using tweens

  • Camera Effects

    • Camera spring and leaning based on player movement

    • Dynamic FOV changes based on player actions, states, and velocity

    • Centralised camera shake management

  • Pause Menu With Delayed Per-Group Fading

    • Smooth transitions and fading instead of instant toggling

    • Saved user settings (mouse sensitivity)

  • Other Developer/Testing Tools

    • ScriptableObject profiles for various systems to allow easy finetuning

    • Easy player teleporting by marking location

    • Hierarchy transform flattening

    • Reusable animation curves in ScriptableObject library

© 2025 by Raymond Corten. Powered and secured by Wix

bottom of page