So this is the first part of a three part update on my attempts to make firearms in weapon master "feel" better to shoot. The goal has always been to attempt to trick the mind into believing you are firing a real gun. Obviously, there is always going to be a disconnect due to the lack of holding a real gun with real recoil and weight, but I think we can get it as close as possible with a little more work. For this first update I have overhauled Recoil to not only be better, but to give y'all many more variables to tweak things with. This is by no means the end of me perfecting recoil, but it is a big step forward.
The New Recoil
First off recoil is no longer instant. There is now a travel and rotation time. Also, directional recoil plays a much bigger part that it did before. You can also put a delay between rotational recoil and directional to better match real world recoil. Essentially when a gun recoils the muzzle moves up first due to the path of least resistance on your wrist allowing for the roll. Depending on how good you are at shooting this recoil can be more or less (in the real world). After this initial muzzle rise the recoil then moves backwards forcing your hand slightly back with a pistol, or much farther back with a long gun. For default in weapon master I assume the character is a competent shooter that can manage recoil very well. You can tweak this "character skill" by adjusting the recoil variables. Even taking a skilled character into account I have allowed for some "player skill" as well. You can fight the recoil much like you would in a game like PUBG by counter rotating. This is sort of a gamified solution and by setting variables differently you can completely remove it if you wish.
A note about Variable Prefixes
All stats that can be adjusted by attachments follow this prefix scheme.
Base - the guns default value
Mod - the modifier value that comes from the attachment
Current -The adjusted value by adding Base and Mod together.
Use Recoil - True if you want to use recoil for your gun.
Use Recoil Shot Delay (experimental) - true if you want to delay any recoil a set number of shots.
Shots to Delay - How many shots to delay if Use Recoil Shot Delay is true.
Recoil Direction - The direction the gun should recoil (Forward, Right, or Up).
Base Directional Recoil Amount - How far should the gun recoil in the chosen direction (negative for backwards).
Directional Recoil Rate - The speed at which the weapon should recoil directionally.
Directional Recoil Recovery Rate - How fast the weapon recovers from the direction recoil. How fast it returns to 0 state.
Base Directional Recoil Stabilization - How much stabilization should take away from directional recoil. Set between 0 and 1 where 0 is no recoil and 1 is full recoil.
Base Vertical Rotational Recoil Amount - (Range) How much the weapon should pitch per shot. Through testing I have found that while setting this as a range is fine you really should keep the numbers fairly close together. For example if your max recoil is 8 I would put the min no less than 7 but ideally around 7.5. The range is set up x and y so the previous exampe would be x: 7 Y: 8.
Base Horizontal Rotational Recoil Amount - (Range) How much the weapon should yaw per shot. This range should go be a negative for x and a positive for y.
Per Shot Recoil Type - Should the recoil be additive or subtractive? Basically should the recoil get worse every shot or get better.
Base Per Shot Vertical Rotational Recoil Amount - (Range) How much extra vertical recoil should be added per shot.
Base Per Shot Horizontal Rotational Recoil Amount - (Range) How much extra horizontal recoil should be added per shot.
Rotational Recoil Rate - Speed at which the gun recoil rotationally. The value of this is dependent on how much rotational recoil you have. Most of the time this should be between 90 and 120. Setting too low can lead to the gun's recoil getting really erratic. Setting too high can make the recoil feel "bad".
Rotational Recoil Recovery Rate - How fast the weapon recovers from the rotational recoil. Should be much less than Rotational Recovery Rate.
Base Vertical Rotational Recoil Stabilization - How much stabilization should take away from Vertical recoil. Set between 0 and 1 where 0 is no recoil and 1 is full recoil.
Base Horizontal Rotational Recoil Stabilization - How much stabilization should take away from horizontal recoil. Set between 0 and 1 where 0 is no recoil and 1 is full recoil.
I have a few more ideas that I will try in the future to make recoil better. Update 2, which I hope to get to while finishing up Beta 3 of 1.1, will be an update to Bloom logic and Rumble effects.