Kick Gunner

KickGunner is an Action FPS project I worked on in 2022. The core concepts of the project were that they could wield any two weapons in their hands at the same time, and the player would have a kick ability with varied upgrades/effects to choose from. It was inspired by a combination of retro FPS movement systems and some modern FPS games like Halo and Titanfall 2. With this project I wanted to practice my ability coding game mechanics and systems in Unreal Engine using a combination of C++ and Blueprints.

My work involved designing and coding the weapon system that made it easy to create new weapons. This allowed me to tweak values such as damage, range, and fire rate. This additionally included variables to affect the functionality of the weapon such as full-auto or semi-auto fire, and whether or not the weapon used hitscan or projectiles.

Overview

Genre:

Action FPS

Engine:

Unreal Engine 4

Dev Time:

1-2 months

Team Size:

1

Additional Software:

Maya, Quixel Mixer

Select an option below to view greater details regarding my process and the work that went into certain aspects of the project.

  • Programmed the base class for weapons so that values could easily be tweaked in the editor to make creating new weapons easy.

  • Created base classes for enemies, projectiles, and interactable objects using C++.

  • Created the player controller and scripted movement abilities like combat slide and a short-range dash.

C++ & Visual Scripting

  • Used 3D modeling knowledge to create some of the weapon models.

  • Created color ID maps to help apply textures in Quixel Mixer.

Maya

Project Goals

  • Learn the workflow for using C++ in Unreal Engine, and how to best use it in combination with Blueprints.

  • Create a intuitive weapon system that makes it simple to create new weapons in the game editor.

  • Design fun and unique gameplay that lets the player wield any two weapons they want at the same time.

  • Used Quixel’s texture library to add textures to the weapon models I created.

Quixel Mixer

Detailed Info

Weapon System

A key component of the game from a technical standpoint was I wanted it to be easy to create new weapons in the game editor. To accomplish this I made a base class in Visual Studio that all weapons would inherit from. This base class contains several variables that can be adjusted on an individual basis to create a unique weapon. It also contains functions that all the weapons would need such as “Shoot” and “Reload”.

This setup made it extremely easy for me to create new weapons and make adjustments to existing weapons. I could quickly change a weapon’s firing type from full-auto to semi-auto, or swap it from a hitscan weapon to a projectile based weapon in the game editor with no issues by changing a variable.

Below is a comparison of one the assault rifle with different settings. One has Semi-Auto firing, slower fire rate, and is a hitscan weapon; while the other is Full-Auto, a faster fire rate, and fires projectiles. This was all easily swapped in the editor due to how I set up the weapon class.

Semi-Auto, slow fire rate, hitscan.

Full-Auto, faster fire rate, projectile-based

Player Controller

I used Visual Studio and C++ in combination with Unreal Engine functions to code the players movement capabilities, as well as the interaction functionality.

Dual Wielding

Displayed here is the dual wielding system. It was inspired by the dual wielding system in Halo 2, but instead of limiting the player to smaller weapon types I decided to take it another step further and make it so the player could use any two weapons they wanted, regardless of the weapon type or size. I really wanted the player to have as much fun as possible trying out different weapon combinations.

Charged Kick

For the player’s kick ability I wanted the player to be able to charge the kick and have the damage and knockback scale depending how long they held down the button. I added a meter off center on the HUD to show the player how much charge the kick has before releasing the button.

Combat Slide

The combat slide functionality was inspired by Titanfall 2’s slide, in which the player can look around and shoot while sliding. I felt that this fit in perfectly with my goals of fast-paced gameplay, so I added it to the game and added a bullet time effect when starting the slide.

Dashing

Since I wanted this to be a fast-paced FPS I wanted the player to be able to quickly avoid projectiles. This led me to adding a short-ranged omni-directional dash that held two charges and recharged on a timer.

Interactable/Throwable Objects

I also briefly experimented with an interaction system that would let the player pick up certain items and throw them. I considered making these items things like explosives, physics objects capable of doing damage if thrown at an enemy, and/or key type items that would be used to open locked doors.

Weapon Models

Three of the weapon models in the project are ones that I made myself using Maya, and textured in Quixel Mixer using the Quixel asset library. The shotgun I tried to make more realistic looking, while the revolver and rocket launcher were first drafts of sci-fi styled weapons.

Pump-Action Shotgun

Revolver

Rocket Launcher