By Maxime Argon
Create fully editable firearms from scratch
On your First Person Character Blueprint:
Use the "Set and Equip New Weapon" from the "BFL_WeaponForge" when colliding with the default CapsuleComponent or other desired of collider.
This will allow the player character to grab and use your weapons placed in the level.
Add the "IMC_Weapons" Mapping Context to Unreal Enhanced Inputs.
Doing so will bind all the necessary inputs to properly use your weapons.
You may also want to add these 3 nodes. This will create and display the basic weapon UI created for this tool.
You can easily create your own and replace the class reference of the Create User Widget node.
On your First Person Character Components:
Add a "BP_FirearmSocket" as a child of your first person camera.
This socket location will be used as an anchor for all the weapons you will grab in game. Move it and rotate it at will to fit your personnal preferences.
(This Blueprint Component can also be attached to a custom socket on your skeletal character mesh).
🚨🚨  If you are using a custom character 🚨🚨  (other than the default Unreal First Person Character), you will encounter reference errors.
To fix them, go to the following page>
If you want to change how animations are being called:
Open the "BFL_WeaponForge". From there you can access the "PlayAnimation" function.
You can use this method if your animations are called on the first person mesh directly.
You can change to cast to your own Player Character.
You can use this other method (set as default) if your animations are called on the weapon skeletal mesh.
Place the BP_Firearm actor in your scene.
Simply look for "BP_Firearm" in the Place Actors panel.
You can also find this blueprint under: Content/WeaponForge/Blueprints/Asset/BP_Firearm
Once placed in your scene.
In the Details panel you will find a "Weapon Data" reference to fill with your very own (or demo) Data Asset.
This Data Asset is registered under the "BPDA_WeaponData" class.
On this same object you can set a pick-up collision radius.
Create a Data Asset
To create your own weapon data. Create a Data Asset of class "BPDA_WeaponData".
You are now all set to create and customize your new weapon!
Mesh & Animations Settings
Static Mesh (Static Mesh)
Sets a Static Mesh as the weapon mesh.
Initial Mesh Rotation (Rotator)
Modifies the initial mesh rotation.
Skeletal Mesh (Skeletal Mesh)
Sets a Skeletal Mesh as the weapon mesh to be able to use custom animations. (Overrides the Static Mesh).
Uses Animation (Boolean)
Sets whether or not the Skeletal Mesh of your weapon uses and plays animations.
Shoot Animation Montage (Animation Montage)
Sets an Anim Montage to play when shooting the weapon. (Overrides the following Anim Sequence).
Shoot Animation Sequence (Animation Sequence)
Sets an Anim Sequence to play when shooting the weapon.
Reload Animation Montage (Animation Montage)
Sets an Anim Montage to play when reloading the weapon. (Overrides the following Anim Sequence).
Reload Animation Sequence (Animation Sequence)
Sets an Anim Sequence to play when reloading the weapon.
Slide Action Animation Montage (Animation Montage)
Sets an Anim Montage to play when re-chambering the weapon. (Overrides the following Anim Sequence).
Slide Action Animation Sequence (Animation Sequence)
Sets an Anim Sequence to play when re-chambering the weapon.
Slide Action To Reload Animation Montage (Animation Montage)
Sets an Anim Montage to play when re-chambering to reload the weapon. (Overrides the following Anim Sequence).
Slide Action To Reload Animation Sequence (Animation Sequence)
Sets an Anim Sequence to play when re-chambering to reload the weapon.
Pick Up Animation Montage (Animation Montage)
Sets an Anim Montage to play when picking-up or switching to the weapon. (Overrides the following Anim Sequence).
Pick Up Animation Sequence(Animation Sequence)
Sets an Anim Montage to play when picking-up or switching to the weapon.
Pick Up Animation Length (Float)
Indicates the Pick-Up animation length in seconds. (Used for timing between picking-up/switching-to a new weapon and enabling firing).
Firing & Projectile Settings
Projectile Mesh (Static Mesh)
Set a Static Mesh for the weapon projectile. (Can be left unassigned under certain parameters).
Projectile Mesh Size (Vector)
Gives a scale for the projectile Static Mesh.
Projectile Type (Enum)
Indicates the projectile type.
Single Bullet
Shotgun Bullet
Rocket
Laser / Flame
Mag Capacity (Integer)
Defines the amount of bullet per magazine. (-1 = infinite).
Shotgun Bullet Per Shot (Integer)
Defines an amount of bullet to shoot per shot when the projectile type is set to 'Shotgun Bullet'.
Auto Reload (Boolean)
Sets whether or not the weapon should automatically reload its magazine/projectiles when firing with 0 ammunition left in the current magazine.
Reload Time (Float)
Sets whether or not the weapon should automatically reload its magazine/projectiles when firing with 0 ammunition left in the current magazine.
Stop Reload On Shoot (Boolean)
Sets whether or not the reload process should be stopped if the weapon is being fired during it.
Firing Mode (Enum)
Indicates the way the weapon shoots its projectiles.
Single Fire
Full Auto
Burst Fire
RPM (Float)
Rounds Per Minute. Indicates the rate at which an amount of projectile is shot in a minute.
Hit Scan (Boolean)
Sets whether or not the projectile should travel a certain distance instantly. (Distance can be defined with 'Range').
Single Fire Delay (Float)
Indicates the delay in seconds where a single fire shot will be blocked right after firing a first round.
Burst Firing Amount (Integer)
Defines the amount of single shot fired when shooting once, when the firing mode is set to 'Burst Fire'.
Shotgun Firing Cone (Float)
Indicates the firing cone half angle in degrees, when 'Shotgun Bullet' is selected under projectile type.
Auto Slide Action (Boolean)
Sets whether or not the weapon requires a reload to rechamber a projectile after shooting. (When firing mode is set to 'Single Fire').
Projectile Travel Speed (Float)
Indicates the speed at which the projectile travels in space, in m/s.
Projectile Impulse Force (Float)
Indicates the projectile impulse force at an hit location.
Fix All Shots (Boolean)
Sets whether or not the shots fired will go straight to the crosshair location when moving in space.
Kill Projectile On Hit (Boolean)
Sets whether or not the shot projectile Actor should be destroyed when hitting an obstacle. (Overrides 'Bounce & Friction' settings).
Projectile Life Span (Float)
Indicates the projectile Actor life span in seconds after a first hit with an obstacle. (0 = infinite, will not be destroyed).
Projectile Bounce (Boolean)
Sets whether or not the projectile should bounce upon hitting an obstacle.
Projectile Bounciness (Float)
Indicates the bounciness of the projectile at each hit with an obstacle. (Deceases/increases based on velocity).
Projectile Friction (Float)
Indicates the friction of the projectile at each hit against a surface with an obstacle. (Deceases/increases based on velocity).
Ammunition Settings
Enable Ammunition Reserve (Boolean)
Sets whether or not the weapon has an ammunition reserve. In which case the amount of projectile to shoot will be limited to the amount of held ammunition in both the current magazine and reserve. (Overrides the Ammunition Settings section).
Ammunition Type (Enum)
Indicates the type of ammunition the weapon shoots. Only ammunitions of the same type, or 'Any', can be picked-up the weapon.
Base Amount Of Ammunition In Reserve (Integer)
Defines the initial amount of ammunition in the reserve when picking-up the weapon for the first time.
ADS Settings
Enable ADS (Boolean)
Sets whether or not to enable the Aim Down Sight. (Overrides the ADS Settings section).
ADS Input Type (Enum)
Indicates the way to activate the ADS via inputs.
Hold
Tap
Scope Mesh (Static Mesh)
Sets a Static Mesh for the scope. (Can be left unassigned).
Scope Socket Name (Name)
Indicates the name of the socket given in the weapon mesh.
Is Occulting Scope (Boolean)
Sets whether or not a widget should be displayed while at aiming level. (Overrides 'Occulting Scope Widget').
Value set to True
Value set to False
Occulting Scope Widget (User Widget)
Gives a reference to a widget to display when aiming if 'Is Occulting Scope' is set to True.
FOV While ADS (Float)
Indicates the Field Of View in degrees while the scope is at an aiming level.
Time To ADS (Float)
Indicates the time it takes the weapon to reach the aiming level from the holding level. (Back and forth).
Offset From Socket (Vector)
Gives an offset to the camera from the center point of the scope socket.
Range & Damage Settings
Damage (Integer)
Defines the amount of damage an actor should receive when being hit by a projectile.
Range (Float)
Indicates the range at which after, a projectile no longer deals damage.
Enable Damage Falloff (Boolean)
Sets whether or not the damages should be calculated based on the distance from the shooting point to the the hit point. (Overrides the 'Damage Falloff' curve).
Damage Falloff (Curve Float)
Gives a Curve Float with the Time axis being the distance, and the Value axis being the damage dealt at the corresponding Time (distance).
Enable Bullet Drop (Boolean)
Sets whether or not the projectile should be impacted by gravity. (0 = no bullet drop).
Bullet Drop (Float)
Indicates the gravity force applied to the projectile based on its weight. (1.0 being earth gravity).
Recoil & Spray Pattern
Recoil Type (Enum)
Indicates if the weapon should have a spread and a spray pattern attributed to the projectiles when shooting, or not.
No recoil
Spread only
Spray pattern and spread
Recoil Spread (Float)
Indicates the spread factor projectile direction will be multiplied to in a forward direction.
Movement Spread Multiplicator (Float)
Indicates the spread factor multiplier applied when moving in space.
Value set to 0.1
Value set to 2
Pitch Spray Pattern (Curve Float)
Gives a Curve Float which represent the vertical spray, as Value, over Time.
Yaw Spray Pattern (Curve Float)
Gives a Curve Float which represent the horizontal spray, as Value, over Time.
Spray Pattern Max Threshold (Float)
Indicates the threshold at which the weapon doesn't play the spray pattern backward after shooting. Allowing for smoothest spray to hold/reload transitions.
Value set to 8
Value set to 20
Camera Shake Settings
Enable Camera Shakes (Boolean)
Sets whether or not to enable camera shakes when shooting. (Overrides the whole Camera Shake Settings sections).
Camera Shakes (Legacy Camera Shake)
Gives a Camera Shake that will be played upon firing the weapon.
Inner Radius (Float)
Indicates the inner radius of the camera shake emitter sphere. (Cameras inside this radius won't be affected the the camera shake).
Outer Radius (Float)
Indicates the outer radius of the camera shake emitter sphere. (Cameras outside this radius won't be affected the the camera shake).
Falloff (Float)
Indicates the camera shake effect falloff as it get closer to the Outer Radius.
Decal Settings
Bullet Impact Decal (Material Interface)
Gives a decal Material to display in game space when a projectile hits an obstacle. (Can be left unassigned).
Decal Size (Vector)
Gives a scale for the decal to be rendered on a surface.
Decal Fade Out (Boolean)
Sets whether or not the decal should start a fade out as soon as the projectile hits a surface (to then be destroyed).
Decal Fade Out Start Delay (Float)
Indicates a delay before starting the fade out of the decal on a surface.
Decal Fade Out Start Duration (Float)
Indicates the duration after the delay where the decal fades out.
Sound Settings
Fire SFX (Sound Cue)
Gives a Sound Cue played when firing the weapon.
Reload SFX (Sound Cue)
Gives a Sound Cue played when reloading the weapon.
Weapon Switch SFX (Sound Cue)
Gives a Sound Cue played when picking-up/switching weapon.
Dry Fire SFX (Sound Cue)
Gives a Sound Cue played when firing the weapon with no bullet left in the current magazine.
Slide Action SFX (Sound Cue)
Gives a Sound Cue played when re-chambering the weapon.
Enable Hitmarker SFX (Boolean)
Sets whether or not a hitmarker SFX should be played when a projectile hits certain obstacles in game space.
Hitmarker SFX (Sound Cue)
Gives a Sound Cue played when a projectile hits certain obstacles.
Enable On Simulate Physics Object (Boolean)
Sets whether or not the hitmarker sound should be played when the projectile hits an object that simulates physics.
Enable On Object Type (Enum)
Indicates on which object type to play an hitmarker sound when colliding with a projectile.
VFX Settings
Muzzle Flash VFX (Niagara System)
Gives a Niagara System to play when firing at the BP_MuzzleSocket location. (Overrides the Particle System below).
Muzzle Flash VFX (Particle System)
Gives a Particle System to play when firing at the BP_MuzzleSocket location.
Laser / Flame VFX (Niagara System)
Gives a Niagara System to play when firing at the BP_MuzzleSocket location in direction of the crosshair. (Overrides the Particle System below).
Laser / Flame VFX (Particle System)
Gives a Particle System to play when firing at the BP_MuzzleSocket location in direction of the crosshair.
Hit VFX (Niagara System)
Gives a Niagara System to play when the projectile hits a surface. (Overrides the Particle System below).
Hit VFX (Particle System)
Gives a Particle System to play when the projectile hits a surface.
Bullet VFX (Enum)
Indicates which bullet VFX to play when firing a new projectile.
Tracer / Glow Color (Linear Color)
Gives a Linear Color used as tracer/glow color.
Glow Intensity (Float)
Indicates the glow emissive intensity.
Color Tracer Lifetime (Float)
Indicates the length of the tracer following the projectile.
Color Tracer Width (Float)
Indicates the width base of the tracer following the projectile. (At the end of the length, the width reaches 0).
Tracer VFX(Niagara System)
Gives a Niagara System to play as a trail following the projectile. (Overrides the following Particle System).
Tracer VFX(Particle System)
Gives a Particle System to play as a trail following the projectile.
Adding throwables.
Creating a throwable projectile type (for grenade launcher).
Creating a visual editor for spray patterns and replace the current float curves system.
Tool made by Maxime Argon.
Meshes, VFX, and some of the SFX by Adia Entertainment (Military Weapons Silver Pack on Unreal marketplace).
Other SFX by Freesound.org.