Before we begin, you should probably be aware that the included projectile supports any particle and sound effect to be unique based on what it hit, see the How To Add New Surface Types tutorial for more info about it. It supports ANY particle, including the ones from BallisticsFX. I do not provide support for BallisticsFX, this is just an example of how to replace the default projectile, it wasn’t made with anything specific in mind. Thank you for reading!
If you still wish to integrate it, you could in theory do the following:
1. Create a new FPS Game Starter Kit project
2. Create a new Ballistics FX project
3. Locate the DefaultEngine.ini file of both projects (Config folder)
This part can be a bit tricky for newcomers, but basically what you wanna do is copy only the missing collisions, missing surfaces and missing settings from the FX DefaultEngine.ini file into the FPS DefaultEngine.ini file. Because if you simply replace one with the other it will overwrite all existing settings.
4. Open the FX project, let it compile shaders, once it’s done, right click on the folder and migrate it into the Content folder of the FPS project
5. Now close the FX project and open the FPS project, it should look like this now
6. Open BP_WeaponBase (FPS_Game/Blueprints/Weapons/Base/) and add a new bool, call it “UseCubitProjectile” or something along those lines.
7. Open CubitUniProjectile (BallisticsFX/FXSpawnerBlueprints/Projectiles/) and add a new float (exposed on spawn, editable, default value 0.1) and call it “Damage”
8. Open BP_WeaponBase (FPS_Game/Blueprints/Weapons/Base/) and in the projectile spawn graph, for both FPS and TPS add this logic to the end of it
NOTE: If you can’t find this, just follow the Fire custom event on the main Event Graph inside WeaponBase, near the end you will see the 2 highlighted collapsed graphs (FPS and TPS projectile spawns), inside those swap out the class as shown in the picture above.
This is all you need to do on the weapon base, it will now give a checkbox to all weapon child classes to spawn the BallisticsFX projectile.
9. Now to the Ballistics FX projectile, open CubitUniProjectile (BallisticsFX/FXSpawnerBlueprints/Projectiles/), locate and modify both damage nodes to look like this
What this will do is it will make the projectile deal the amount of damage that you set from weapon child classes, so that you can make snipers deal more damage, but pistols less damage, etc. The apply point damage is replacing the radial one in the first screenshot for headshots and other critical hit logic.
This step is not required, but if you wish you can open BP_ProjectileBase and tell it what particle and sound it should play for the ballistics surfaces.
10. Open BP_CharacterBase (FPS_Game/Blueprints/) and replace the old grenade spawn actor with the new one
11. Open Grenade_Thrown and Grenade_Launched (BallisticsFX/FXSpawnerBlueprints/Projectiles/) and lower their damage output
12. Still on the grenade, change its collision to look like this
13. Not much to add here, just double check the collisions and add the new flesh material to them (on capsule and mesh components). The idea here is that you only need to change the Flesh Physical Material, and the Object type to enemy.
NOTE: If you plan to use the AI toolkit in this combination, double check EQS in the settings and set the enemies collision like this too.
14. Open both Canister blueprints (BallisticsVFX\FXProps\) and lower their damage threshold values. It would work even without this, but would require a lot more bullets.