> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kinemation.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a weapon

> Create a project-owned Blueprint firearm with a weapon view, recoil, effects, animation, and input behavior.

## Before you begin

* Complete [Project integration](/sci-fi-fps-pack/unreal/tutorials/project-integration).
* Prepare a weapon skeletal mesh and compatible character and item montages.
* Choose `BP_Shooter_Weapon` for a general firearm or `BP_Shooter_Shotgun` for the supplied shotgun reload and pump path.

<Steps>
  <Step title="Create the weapon class">
    Create `BP_ProjectWeapon` as a child of `BP_Shooter_Weapon`. Configure its mesh, `FireRate`, `MaxAmmo`, initial `ActiveAmmo`, `SupportsFullAuto`, `BurstNum`, and `ActiveFireMode`.
  </Step>

  <Step title="Create the presentation component">
    Create `AC_ProjectWeaponView` as a child of `AC_WeaponView`. Configure `WeaponSettings`, equip, reload, and fire montages, fire sound, `BaseMuzzleFlash`, recoil data, and fire-mode presentation.
  </Step>

  <Step title="Connect the view">
    Add `AC_ProjectWeaponView` to the weapon. Return it from `GetWeaponView`. Override `GetAimPoint` with the weapon's authored sight transform and `GetFireRate` only when required by the child.
  </Step>

  <Step title="Configure recoil and effects">
    Create a project `DA_RecoilData` and a `BP_VFXData` muzzle-flash asset. Let `AC_RecoilAnimation` and the inherited `MuzzleFlash` component apply them.
  </Step>

  <Step title="Add frame events">
    Add `BP_AnimNotify_ReloadWeapon` at the ammunition-transfer frame. Add `BP_AnimNotify_SpawnCasing` and `BP_AnimNotify_PlaySound` only where the animation requires those events.
  </Step>

  <Step title="Register and validate">
    Add `BP_ProjectWeapon` to the project character's `ItemClasses`. Test equip, fire, stop fire, ADS, fire-mode changes, empty magazine, reload, casing, muzzle flash, recoil, and UI values.
  </Step>
</Steps>

<Check>
  The weapon initializes through `TryInitialize`, exposes state through ShooterCore interfaces, plays presentation through its view, and keeps ammunition and fire timing in the weapon class.
</Check>

Use [Shooter runtime](/sci-fi-fps-pack/unreal/general/shooter-runtime) for the complete Blueprint flow. Use [Weapon blueprints](/sci-fi-fps-pack/unreal/general/weapon-blueprints) to choose ARX, M97, Onyx, or TP12 as a behavior reference.
