Shooter Procedural Aiming - support thread

Marketplace link

Hello guys! Feel free to post questions, feedback, issues, etc!


Project updated. Change log:

  • No need to name the main gun component “Mesh1P” anymore. Now it can be named whatever you want, just like the other components, but it needs to have a tag named “MainMesh”. This facilitates switching the main mesh component from skeletal mesh to static mesh and vice versa, since you don’t need to replace the reference in the code anymore.

  • Example meshes were now re-imported into Unreal facing +X axis instead of +Y axis. It makes no difference for the auto-aligner, but it’s now oriented as advised by Marketplace guidelines.

  • Calculation of gun sights locations and rotations now use less nodes in the blueprint.

  • Youtube tutorial video updated.


Project updated. Change log:

  • Tweaked the auto-aligning method. It now uses less nodes and adding your own movements/sway to the gun became easier, since now you control the location/rotation of the sight’s aimpoint directly by controlling a bone (sight’s location/rotation is the same of the bone).

  • Aiming is no longer a separete state in the state machine. In order to allow for variable aiming down sights speed, aiming is now implemented through BlendPosesByBool nodes inside other states.

  • Added customization variables for aiming down sights speed and cycle between sights speed.

  • Added customization variables for amplitude and play rate of the procedural animation for firing while aiming down sights.

  • Reorganization of folder structure.

  • Updated to UE4 4.23.

  • Youtube video tutorial updated to reflect the new folder structure. Instructions are the same, since the procedure for swapping the example gun and anims for your own gun and anims is exactly the same.


Project updated. Change log:

  • Small change in the method of calculation of ironsights. It now uses the node FindLookAtRotation followed by roll adjustment, instead of the dot products, RotationFromAxisAndAngle and CombineRotators nodes to find the direction from rear sight to front sight. The new method works better with the change implemented in a past update (since then, the old method would let the rear sight a bit off depending on its location on the gun in relation to the front sight)

  • Corrected code comments that were outdated

  • Updated to Unreal Engine v4.24


Project updated. Change log:

Fixed: lack of smoothness when cycling between sights while aiming. Before, the interpolations were done through a Timeline in the character and the resulting values were applied in the EventBlueprintUpdateAnimation of the anim bp. Now everything is done in the anim bp, which fixed the lack of smoothness.


Project updated. Change log:

  • Added a version for full-body chareacters - 3rd person, True 1st person, etc.

  • Added reload while aiming.

  • The IK bones in the Epic’s skeleton are no longer used. The project now uses virtual bones instead, which eliminates a few nodes in the anim graph.

  • Moved the sights position calculation from the character to the gun blueprint.

  • Added walking sway when walking while aiming, governed in the blueprint by a curve.

  • Firing anim when aiming down sights is no longer procedural, it’s an additive anim sequence.

  • Moved the sight aligning logic out of the movement state machine and replaced the state machine with a movement BlendSpace. Now it should be easier to just replace the BlendSpace with your own movement state machine.

  • Reduced the character’s walking speed, acceleration and deacceleration to more natural values.

  • Redone idle, walk and fire anim sequences and added reload anim sequences.

  • Added a menu screen for choosing between playing the ArmsOnly project, the FullBody project, or exiting the game.

  • Added a thumbnail for the project in the Epic launcher =)


Project updated. Change log:

Quick fix: InputMode not returning to GameOnly mode after leaving the menu by pressing Esc - fixed.


Project updated. Change log:

  • 3rd person camera moved a little to the side, so the character isn’t exactly in the center of the screen anymore

  • Quick fix: the variable CycleSightsSpeed is now wired to the interpolation (Ease node) in the character’s anim blueprint. So now changing the gun blueprint’s own variable CycleSightsSpeed will customize the speed of switching sights while aiming, as it’s supposed to.


Project updated. Change log:

Quick fix: instructions for setting up virtual bones in a custom skeleton, written in the anim graph of the arms-only anim blueprint - fixed.


Project updated. Change log:

Reorganized code and comments with integration in mind. It now should be easier to visualize what events should go where, when integrating with other projects.


Project updated. Change log:

  • Added more 2 projects, one with an Arms-Only character and one with a Full-Body character. These 2 projects use 2 virtual bones, instead of 3, on the character’s skeleton and have a slightly simplified code for calculating gun sight positions - CalcHandTransforms function replaces the old CalcSightsTransforms

  • Interpolations done in the anim BP’s event graph were replaced by interpolations done natively inside the anim graph’s nodes, simplifying the anim BP’s code

  • Changed the transform space for recoil and walk-while-aiming sway in the anim graph nodes, so they now happen in the player’s view space instead of the hand’s or sight’s space

  • For code simplication, the node that spawns the gun doesn’t use a gun class var anymore

  • Updates in several comment boxes


Project updated. Change log:

Quick fix of some wrong instructions in the black comment boxes in the anim graphs about adding the virtual bones to a new skeleton


Project updated. Change log:

Fixed engine crashing while retargeting the skeleton from the FullBody_Project2 (the one with 2 virtual bones). Apparently the engine was fixed some time ago, but the mannequin doesn’t get fixed automatically. So what I did was I imported a new mannequin and replaced the old mannequin in the project.

NOTE: If you already have your system integrated in your project and don’t want to start the integration again with the new version, you can easily do the fix on your own project:

  • Create a backup copy of your project 1st of all
  • Create a new Third Person template in UE4 v4.24 or newer (might work with some older versions too, but I haven’t tested)
  • Migrate the mannequin (skeletal mesh, skeleton, materials, etc.) from the Third Person template to your project
  • Inside your project, copy/paste the sockets (Example_Socket, Camera) from your old mannequin to the imported one
  • Add the 2 virtual bones to the imported mannequin
  • Delete your old mannequin skeleton and, when prompted to ‘Replace References’, select the imported skeleton
  • Delete your old mannequin skeletal mesh and, when prompted to ‘Replace References’, select the imported skeletal mesh
  • That should be all. Test by hitting the Play button and, if it looks broken, close and re-open the project
1 Like

Project updated (see change log)

hello, are you planing on bringing this out for version 21? or is there any chance i can download the 22 version and implement all the code to my 21 project?

Hey man, it looks like I missed your post, I’m really sorry for that… I can swear I didn’t receive any notification. Anyway, I’ll check this and get back to you with the answer in a moment.

So I tried the engine version switch feature - right click on the .uproject file and select “Switch Unreal Engine version”, but the resulting project seems to have all the assets locked in the editor. I will try starting a project in 4.21 and migrating the assets and maybe copy-pasting the code, but I will need a bit more time for that. I’ll get back to you as soon as I have an answer.

So UE 4.21 doesn’t accept migration of assets from the UE 4.22. And attempting to simply copy/paste code results in engine crash, probably because code makes reference to assets - blueprints are assets too and some blueprints need to reference others. And also: blueprints reference animations, animation blueprint references blueprint, etc. Apparently, releasing a working version of the project for an older version of the engine would require re-importing sources (meshes, textures, materials, animations), re-setting them up with each other and re-assembling the blueprints. At the moment I can’t do this… I’m working on project improvement currently… So I’m sorry for this…

Project updated (see change log)

Hi,
Im using a full body mesh with aim offset and ironbelly studio weapon packs.
aligning the weapon for projectiles fire with the camera and crosshair is a pain. every weapon aims at a different height and has different sights on different heights.
Could you showoff a use of this ik system for a full body?
I know it might be a lot to ask of - but I would very much appreciate it. @PeaceSells_

I’m looking into it, should have an answer soon.

@AngeIV - I’ve been testing the change to the full body mesh and making the necessary adjustments and, while the alignment itself works, there are other very important aspects about using a full body mesh in a 1st person perspective that must be carefully adjusted, in order for the end result to look good from outside. Making a solution for this requires significant changes and additions to this project, which I actually would like to implement, but right now I can’t spend the necessary time with this specifically. This might be incorporated in this asset in the future though, since I also find it much cooler to use a full body mesh then an arms mesh. I understand you and I think this is a valid request from you and not a matter of being “a lot to ask”, it’s more a matter of incorporating a feature that is already on the list of future *possible *(due to time constraints) additions for this asset.

Btw, if you’re trying this on your own, the first thing you have to do if you make the camera a child of the body mesh, instead of the the mesh being the child of the camera (which is default for traditional FP shooters and how it’s currently set), is to change how you access the camera in the anim blueprint. Currently it creates a reference for the character’s camera in the BeginPlay event and, from that point on, it accesses it through this reference. That reference seems to not work well when the camera is a child of the mesh, so you will need to access the camera through a character reference directly instead.

Yeah I’ve been playing with some FPS added to different anim system out there, but ended up with making my own due to multiplayer specific requirements. The results are not bad, however as most of my aiming require proper animation setup, and the gun has actual functional barrel and the GUN is shooting the projectiles - the aim is never EVER perfectly at the center of the screen. it is where the muzzle aims, or roughly where the scope aims (due to scope proper mounting at proper angle, but still what I love about Your system is that you setup the exact crosshair center point. Tell me - is your M16 package be a better starting point to incorporate a full body multiplayer shooter or this package?
“On the roadmap” - how far away would you estimate? Is it weeks? months? days? years (like waiting for landscape architect :smiley: LOL)

Edit: Also thank You for the long explanation and answer. Most appreciated!

No, in that aspect both packages are the same, they use the same auto-aligning method and use the same SK_Mannequin_Arms for 1st person view.

Keep in mind that I can’t state right now that this feature will actually be incorporated. If I start working in this feature, it will be after I finish some of the work I’m doing right now, which will take some months. Then after I start, I estimate it would take weeks to get done. So I would say that, if this feature is going to be incorporated, it would be in a matter of months from now.

EDIT: Btw, if you’re using this or the other asset in your project and need some help implementing your stuff, even if it’s a full body implementation, I may be able to help you also in the Discord channel… If you want to join, send me an email and I’ll send you the link.

No need to name the main gun component “Mesh1P” anymore. Now it can be named whatever you want, just like the other components, but it needs to have a tag named “MainMesh”. This facilitates switching the main mesh component from skeletal mesh to static mesh and vice versa, since you don’t need to replace the reference in the code anymore.

Yes, that’s right… would you like some help?

Hey man. I just got this and I would like to know the best way to not use a flip flop action so I can aim by holding instead. I also changed the zoom to be like that by using the reverse function and it works great but for the other, I want to make sure I don’t break anything.

Hey, just do this change in the anim blueprint (AB_ExampleCharacter). Delete the FlipFlop and add another custom event (ExitAim), wired like shown below:

Then do this change in the character blueprint (B_ExampleCharacter):

Please let me know if you encounter any problems…

Project updated (see change log)

Project updated (see change log)

Hello. Is there any way to get your sight aligner to work in a replicated game. The sights work on the server but not on the client.

Hi,

Could you tell me more precisely what your’re having trouble with? I just did a test in multiplayer mode and the sights worked on server and on all clients (please see the pics below).

Typically, in multiplayer, the anims themselves aren’t replicated, they are controlled locally on the client by their character, but the character on the client is controlled by the character on the server (replicated). It worked in the pics below because each client is controlling his own anims locally, but one client won’t see another client aiming down sights, unless you replicate the aim down sights command in the character. But you have to remember that the alignment happens on the FP floating arms, which aren’t supposed to be seen by other clients anyway. If you’re doing multiplayer with this character, you should add a whole body mesh to him to be seen by the other clients. This whole body mesh doesn’t need to align the sights, you just need to add a generic aiming pose to it so, from outside, he looks like he’s aiming his gun. Please tell me more preciselly where you’re having trouble right now and I’ll see how I can help you better.