EasyBallistics plugin

Hello.

Since EasyFM proved useful for a few people, I decided to work on another plugin, using similar approach to simulate ballistics.

Now, there are a couple of bullet simulations out there already, so let me explain why another one:

First of all, it won’t be a blueprint but a plugin, which means
+high performance
+no extra “clutter” in your project
+works seamlessly with both Blueprint and C++ projects
-desktop only (for now)
-if you want to do any changes to plugin itself, you have to know C++
-won’t be on the marketplace until Epic adds official plugins support

Second, i’m going to follow real world physics whenever practical. So when you hit something, it won’t output some arbitrary “damage” number, but exact amount of kinetic energy, depending on projectile mass, muzzle velocity, range etc. Projectiles will be affected by wind, gravity, and air resistance. Ricochets and wall penetration are also possible.

Third, this simulates physics and physics only, which means there will be no “out of the box” visuals, but with a bit of blueprinting you’ll be able to integrate it with weapons and effects from the marketplace (or your own).

And here’s some (very early) WIP videos:

Anyone interested?

EDIT: Now available on Gumroad: EasyBallistics plugin for Unreal Engine 4 ($25)

EDIT2: Try the new demo: EB_demo.zip - Google Drive

EDIT3: Now available on Marketplace: EasyBallistics Plugin in Code Plugins - UE Marketplace

Yes Will buy!

I am really happy with EasyFM at the moment :slight_smile:

Nice work, reminds me of Arma 3 ballistics test community map, will be useful for many shooter projects

Yes I’m interested primarily from the performance aspect but I’m no c++ programmer so I’m struggling to understand how I can liase with my blueprint created projectiles?
Regards
Slinky

I didn’t completely understand the question. You mean how to make your BP projectile work with this?
You’ll go to your bp’s class settings and change its parent class to EBBullet, like this:
how.png
After that, all movement and collision will be handled by the plugin. You’ll also get a new custom event OnImpact that will be triggered when the projectile hits something.

(at least that’s how it works atm, it may change)

How about some cool projectile drop logic would be cool to use this to apply projectile drop logic to different weapons.

what do you mean by “projectile drop logic”? If you mean the gravity effect on projectile than its quite obvious from video that it is present…

Yep, when i’m done with collisions, i’ll try adding more accurate trajectory calculation, depends on if i can find all necessary data.

Thanks sounds great.

Progress report: “internal” physics of this plugin can now interact with Unreal’s own physics. What does that mean?

  1. Objects with physics react to being shot:
    EasyBallistics prototype - physics interaction - YouTube
    (conservation of momentum is of course in full effect, if the object stops the bullet it will receive more energy than if the bullet passed through or bounced)

  2. Recoil:
    EasyBallistics+EasyFM integration 2 (w/ recoil) - YouTube
    (This also works without EasyFM. You can attach EB weapon to anything simulating physics and it’ll be affected by recoil.)

Hey @moookiexl
Got a few Suggestions -

Suggestions -

  1. Would it be possible to add Area of effect support for explosions from things such as Grenades, Bombs, Tank Shells, Artillery Shells, and the like? Basically things that go boom and make shrapnel in a large or small area.

I know that there are some grenades that are designed to punch through concrete then explode for example. This would also be beneficial to things such as bunker busting bombs, AP/HE Tank Shells, Artillery Shells, etc.

  1. It would be nice to have a C++ based component that we can call in our Blueprint for interacting with other Easy Ballistics objects to determine what can be penetrated by what. For example - If I shoot a pistol with a 9mm round at the side of a Armored Tank. The pistol round should not go through the tank. Let alone penetrate it. It would be nice to have a component with an array that said X objects cannot penetrate this specific object(s). I think this would save allot of time and blue print. It would also be useful to define what behavior that bullet from that object can do. (Such as Ricochet and overall energy left after passing through an object for example)

Either way do what is best for the plugin. Just my 2 cents. :slight_smile:

@HeadClot

  1. OnImpact event can be used to trigger any type of damage, be it simple hitpoint reduction, directional hit, area effect, your own custom damage type, or something completely different, like spawn shrapnel.

  2. Yes, I’m going to do that. I just haven’t decided on exact implementation yet. I’ll probably have some kind of “material response library” that will control how different physics materials affect the behavior of the bullet. I can also make it specific for each bullet class, so you can have, for instance, tank armor being impenetrable to a 9mm bullet, but not to a 120mm shell.
    At least that’s the plan, if that doesn’t work, i’ll have to come up with something else.

Alright Awesome :slight_smile:


Material response libraries implemented as requested. Sorry it took so long.

I also implemented more accurate bullet drop. Now you can just enter mass, diameter, form factor, muzzle velocity and mach deceleration curve, and it’ll calculate the rest. From limited testing i’ve done it follows real world measured data quite nicely.

Let me know when you put it up for sale :slight_smile:

One more question:
Would you like for me to add network replication?
It will probably take quite a while to code and test it, and I might have to raise the price a bit (nothing crazy, $30 tops, less if it turns out to be easy)
…but it will work in multiplayer without you having to do anything complicated.

I would like network replication as an option. So yeah - I am for that :slight_smile:

If that is going to be a solution that starts exactly when a projectile is spawned and handles nothing BEFORE that, I would really like that. The existing solutions while working nicely, have a lot of other systems I do not need and removing these parts is a lot of extra work. So a solution that “only handles the projectile” is something very useful for me

I have a “barrel” component that handles firing projectiles, with magazine, mixing different ammo types etc, but it’s all optional. You can safely ignore it and spawn projectiles directly.
Either via usual “spawn from class” or its own spawn function (that additionally handles submunitions, for shotguns etc).
spawn.png

How is the bullet physics integrated? Velocity verlet like what the stock projectile component uses?

edit: a word