top of page

F.P.S.
(First Paintball Shooter)

Opener.png
  • Role: Technical Designer

  • Team Size: 1

  • Duration: Hiatus

  • Responsibilities:

    • Designing and refining the player controls and main color/ ability mechanic.

    • Concepting and blocking a level to highlight the player's ability and movement.

    • Brainstorming enemy types to complement the game feel.

    • Programming everything.

Fist.png

Game Summary
F.P.S. is a first-person shooter demo mixed with a color-matching combat system that I built in my off time for about a week total. It started as a way to broaden my skills in the FPS genre since I'd never worked on or made an FPS game until now. I wanted to do something beyond just the usual look-and-shoot style so, I decided on paintball as a theme which translated into the color ability system. You can shoot paintballs of three different colors that change the color of enemies. You also have three abilities tied to a respective color, which can be used on enemies by matching the color to the ability. The first is a red short-ranged power punch that deals large damage to a single enemy. Second is a blue area of effect attack with average range and small damage. And third is a green single-target dash attack that makes the player invincible to dash through an enemy for medium damage. I wanted an ability toolbox for the player to use and really go wild with creative combat encounters driven by the abilities rather than just shooting. Currently, the base demo has completed player functionality, one enemy (the Rusher), and one blockout level. I plan to continue to work on this in the future with two more enemies currently designed and I'd like to make a few more levels as well.

map.jpeg

Level Design
I decided to base my first level around sight angles. I had done some reading from Alex K's In Pursuit of Better Levels and found the Vantage Points and Line of Sights portions of his Designing for Combat section incredibly interesting.  The level is divided into 3 connected floors of mainly horizontal combat. Ideally, each of the floors has vantage points above where ranged enemies (when finished) will be positioned to utilize the high ground, forcing the player to hide behind cover and slowly push upwards while dealing with the rusher enemies. I also tried to guide the player through the sightlines I created. The initial start of the level, as shown in this page's first image, sets the player up to traverse the level. The terrace takes up about half the camera to highlight that the main method of traveling in the level will be upwards, with branching side paths on their left and right for level progression and cover/ vantage points respectively. I also wanted to give the player forwarning on what enemies and obstacles they'd encounter by showing them earlier than they actually face them. I did this by leaving enemies slightly exposed from cover as well as showing broken boards to indicate they'd need to jump over gaps.

Overhead.png

Code Thoughts
Programming an FPS player and AI controller was a whole different beast than my usual controllers. I researched them extensively finding a few main types; positional, velocity, and force-based controllers. Controllers that used the addForce function seemed a little like cheating by relying on a function to do the movement and physics so I ruled it out. I had experience with using position and velocity controllers and even though I settled on velocity, ultimately I used a combination of velocity and positional controllers for both. The player is able to run, jump, switch colors, use abilities, use iron sights, and shoot paintballs utilizing physical projectiles as opposed to a hitscan setup. The Rusher uses the NavMesh functionality as a base since I wanted to focus more on developing the player controller but it's still got some added spice to it. They have an adaptable detection range to track the player which then becomes harder to escape from once initially detected, a changeable material color based on what projectiles they're hit with, and a lunge ability that targets the player. Enemies utilize a subclass/ superclass setup so I could keep base the base functionality constant and adapt them through the superclass variants.

bottom of page