📘Weapon Blueprint

In this page we will cover how weapons work.

Overview

Every weapon consists of two important parts:

  1. Weapon Settings data asset: contains data (e.g. animations, weapon mesh).

  2. Weapon Base blueprint: executes gameplay logic (e.g. firing, reloading).

Here is how the weapon spawning logic works:

  1. Iterate over the TArray of Weapon Settings provided by the Character Settings.

  2. Instatiate a Weapon Blueprint specified in the Weapon Settings.

  3. Update the Weapon Settings variable of the newly instantiated weapon.

Weapon Settings

This data asset consists of 2 major categories:

  • Animation: properties related to the character and weapon animation.

  • Gameplay: properties related to the weapon features (e.g. fire rate, ammo, etc.).

Animation group.
  1. UE4 and UE5 represent Viewmodel Settings for different Mannequin meshes.

  2. Weapon Anims: weapon animations Viewmodel Animations.

  3. Weapon Mesh: Skeletal Mesh of this weapon.

  4. Weapon Anim Instance: weapon animation blueprint.

  5. Ads Blend: blend between absolute and additive aiming.

  6. Recoil Settings: recoil animation settings.

  7. Sprint Trigger Discipline: whether to use trigger safety when sprinting.

  8. Fire Trigger Weight: weight of the finger rotation when firing.

Now let's break down the Gameplay category:

Gameplay properties.
  1. Ammo: ammo capacity of this weapon.

  2. Ammo Refil Time Scale: ammo will be refilled when the reload ends, but this time can be adjusted with this multiplier.

  3. Fire Mode: supported fire modes.

  4. Fire Rate: fire rate in rounds per minute.

  5. Weapon Class: Weapon Base blueprint class.

  6. Recoil Shake: camera shake asset.

  7. Fire Sound: this sound cue will be played when firing.

Now let's learn more about the weapon blueprints.

Weapon Blueprint

Weapons must have a runtime entity to run its logic like reloads or firing. This logic is implemented in blueprints derived from the Weapon Base class:

The plugin uses 4 main weapon types.

These blueprints use different implementations for reloading animations, other gameplay features are the same.

Equipping

When a weapon is equipped, it binds its functions to the BP_Viewmodel Dispatchers. So, when an input is triggered, a weapon function will be invoked:

Reloading function binding.

Reloading

When a reloading function is called, the Weapon Base will play a reloading animation based on the left ammunition:

  1. If there is no ammo, an empty reload will be played.

  2. If there is some ammo left, a tactical reload will be played.

Some weapons have exceptions, however. For example, manually reloaded KXG12 and Kar98k follow this algorithm:

  1. Play reload start animation.

  2. Play reload loop based on how many cartridges need to be inserted.

  3. Play reload stop to finalize the reload.

MGX5 is a machine gun, it has 3 reloading animations:

  1. Empty reload.

  2. Tactical reload.

  3. Less reload, when we have some guntape cartridges left.

All other weapons use general reloading logic.


Now that we are familiar with the gameplay logic, it is time to understand how animations work in the project.

Last updated