Jump to content

Recommended Posts

 

 

impact

 

 

 

 

 

Hello gents!

Here comes another small size project, this time focused on immersion.

 

Impact aims to address a simple yet overlooked feature in Arma 3 : hit reactions. The current vanilla system boils down to a weird twitching animation, with little to no "impact" to AI units. Combined with the rather solid ballistic protection the base game offers, this can lead to frustrating gunfights, with players unloading on AI hostiles that are barely affected by bullets... Non-fatal shots feel inconsequential as a result  AI units remain able to return fire immediately, and feel overpowered or robotic.

 

How? The mod relies on a very simple approach. No over-complicated animation handling or scripted damage; the goal is to provide a reliable, efficient in-engine solution to this problem, without "impacting" (haha...) 3rd party addons. Whenever an infantry unit takes a hit, impact analyses the characteristics of the projectile, and emulates kinetic energy when deemed necessary, eventually causing a brief "ragdoll" state. Even if a unit survives a high-caliber hit or a nearby explosion, it will have a good chance of being knocked down by the impact and falling to the ground. They will get back on their feet after a few seconds, buying players some time in tense situations and adding uncertainty to situational awareness (since the ragdoll state doesn't necessarily means the unit is actually dead), leading to a more "organic" experience. Impact works in all environments, with all types of ammo, including explosives.

 

  Reveal hidden contents

 

 

How to use?

  Quote

Just load the mod : Impact will work on any AI unit with proper Event Handlers inheritance. Several aspects of the script can be controlled with variables.

  • To enable Impact on players :
    missionNamespace setVariable ["impactForcedOn_player", true]
  • To disable Impact on a specific class :
    missionNamespace setVariable ["impactDisabledOn_" + typeOf bob, true] //bob & similar units are immune
    missionNamespace setVariable ["impactDisabledOn_O_Soldier_F", true] //'O_Soldier_F' type units are immune

     

  • To disable Impact on a specific unit :
    missionNamespace setVariable ["impactDisabledOn_" + str _unit, true]
    missionNamespace setVariable ["impactDisabledOn_bob", true]
  • To adjust how frequently Impact kicks in :
    missionNamespace setVariable ["impactCoef", 1.5] //default : 1

 

 

Known issues :

  Reveal hidden contents

 

 

Important :

In order to work properly, Impact has to be loaded on both clients & server machines.

 

 

Download

a356d7a366e83f307ac52b5a0e34b0540349b413.jpg

  • Like 22

Share this post


Link to post
Share on other sites

True, even with Real Engine (dunno if it does anything for this, though) and the LAMBS modules

- Danger

- RPG

- Suppression

- Turrets

, or alternatively Vcom instead of Danger, getting hit ain't the worst, although the AI won't just take it as easily.

Share this post


Link to post
Share on other sites

Surviving a grenade blast :

  Reveal hidden contents

 

It's working pretty good so far. 🙂 

Shotguns are making things a bit tricky to balance though... The submunition system is a tad more tedious to work with, and I'm noticing inconsistencies in the arsenal (the Promet attachment seems to be pretty weak compared to the rest)... Still have loads of guns and ammunitions to test; but right now, 5.56 caliber hits and higher feel very satisfying - I think I found the sweet spot to generate just the right amount of inertia and have units fall in a convincing manner. One fun thing, you can literally pin down invincible or bullet sponge units to the ground and immobilize them (as long as you have ammo, that is). Should make things interesting for Terminators and the like...

 

I'll probably disable it by default on player units though, and make that an opt-in feature. Even if it's not a guaranteed fall every time, it's frequent enough to make things... pretty hardcore.

  • Like 6

Share this post


Link to post
Share on other sites

Surprisingly, the impact effect also works with undetonated HE rounds shot at point blank. troppuissant.png

  Reveal hidden contents

 

To give you guys a rough idea of the current system :

- Sniper rifles, most explosives and shotguns will knock down targets pretty much every time.

- Impact usually kicks in every 5 to 10 shots with most medium caliber weapons - ranging from the AKS 74 to the SPAR series.

- Around every 2 or 3 shots with MX, Katibas and the likes.

- Small caliber weapons such as the Protector also have a (very) tiny chance to knock someone down.

 

Overall I think the balance between the various types of weapon is in a good spot; there's a bit of fine-tuning to do though - the effect is just a tad too frequent for my taste, especially for MX class rifles...

  • Like 5

Share this post


Link to post
Share on other sites
  On 12/18/2021 at 1:27 AM, haleks said:

...you can literally pin down invincible or bullet sponge units to the ground and immobilize them (as long as you have ammo, that is).

 

So, I can finally justify bringing a 9x19 PCC w. 20 mags to a CQB enviro against armored opponents?

  • Haha 1

Share this post


Link to post
Share on other sites

Cant tell you how much i love this -well ok i guess i can - I Love This!!!

 

One of the key reasons why combat isnt satisfying in Arma

  • Like 5

Share this post


Link to post
Share on other sites

Can't wait to see how this unfolds; it is a very interesting mod and idea.

Share this post


Link to post
Share on other sites

Updated the OP with the issues I've spotted so far.

There's one more undocumented issue, one that is more or less solved... Impact uses an invisible collider with scripted mass to emulate kinetic energy; right now Arma3 has limited options in terms of invisible PhysX objects; as a result the one I'm using is a tad oversized, so I had to disable collisions with all objects in the immediate vicinity of the target. The fix is pretty solid, and even works with bullets shot through tight spaces, such as gaps in fences or gates.

 

@DnA or any person in charge of Arma3 maintenance : Contact has a small collider for that very purpose, it's a shame to have it locked behind a DLC, as this would benefit mission makers if it was available from the base platform...

 

That being said, the mod is ready for release - or rather it would be, if not for one major Arma3 bug I spotted last week...

Basically, the engine only processes collisions in a 100 meters radius around the current camera between physX and non physX objects - I reckon it's a limitation stemming from geometry LODs.

See this report for more details : https://feedback.bistudio.com/T162551

It kinda defeats the purpose, as most engagements are long range in Arma 3; I'm going to wait a bit and see if a fix is possible. If not, I will release Impact as is. 😕 

 

  • Like 3
  • Sad 2

Share this post


Link to post
Share on other sites

I'm totally looking forward to this Haleks!  Even with the limitations.  I love the idea of not knowing if dropped unit is stunned or dead, as well as increased effectiveness of hits in general.

 

Also, maybe the > 100M problem can be handled by HitPart EventHandlers instead where you use the body hit part within an addForce command like in this example from the wiki:

bob addForce [bob vectorModelToWorld [0,-200,0], bob selectionPosition "rightfoot"];

 

  • Like 5
  • Thanks 1

Share this post


Link to post
Share on other sites

@johnnyboy: Holy shit, I didn't realized addForce could be used on units! ohmy2.png

 

No need for a collider, and yep, it does work beyond the 100 meters range! Johnnyboy, you're my hero! troppuissant.png

 

Now, time to rewrite the code for something cleaner. ^^

  • Like 5
  • Haha 1

Share this post


Link to post
Share on other sites
  On 1/6/2022 at 8:18 AM, haleks said:

No need for a collider, and yep, it does work beyond the 100 meters range! Johnnyboy, you're my hero! troppuissant.png

 

I'M HALEK'S HERO??????  My turn to say Holy Shit!!!!  🎵  I'm walking on sunshine, oh-oh 🎵 <dances around house>

Even a broken clock gets lucky twice a day.

Haha, glad I could help.  :rthumb:

  • Like 2
  • Haha 2

Share this post


Link to post
Share on other sites

Hey dude, a few other thoughts on this...  For those cases where you don't want to knock a unit down, but still want to apply a hit penalty to the unit, you could:

  • force victim's direction to the right or left a little (forces him to reacquire target).  Example:  Hit on left arm spins unit to left a bit.
  • adjust his accuracy and target acquisition skills to zero for a short time (then set them back)
  • doTarget objNull (force him to reacquire target)
  • chance of force unit to fire weapon (reflexive trigger pull when hit)? -- only if in combat mode, so unaware sentries don't fire when hit with a silenced weapon...

Just some ideas, only use them if they fit in with your goals. 😀

  • Like 2

Share this post


Link to post
Share on other sites

Thanks for attempting to solve this issue, looks like you've done a top job! I've been bitching and moaning about this for almost a decade and just used no death animation mod instead. Nice to see that can stop for a little while at least. Thank again.

  • Like 2

Share this post


Link to post
Share on other sites
  On 1/5/2022 at 5:00 PM, haleks said:

Impact uses an invisible collider with scripted mass to emulate kinetic energy;

 

Oooh, the invisible beer can by any chance? 😍

I tried idea guying this around our TS years ago but nobody was up for it. Instead they got mrb_a3_bulletstorm.pbo with increased ammo dmg values (M240 could level buildings :E).

 

You see the shrugging AI is something that has tainted our love for A3 since they introduced ballistic vests sometime during Alpha!

All Kudos to you if it works. Perfect timing too, as we got ArmA3 going tomorrow evening! 🍻

 

 

 

  • Like 3

Share this post


Link to post
Share on other sites

@haleks I hope this project is progressing well.  I'm also hoping you can accommodate a  request:  Please allow mission maker to specify an array of units to exclude from this feature.  I'm running a modified version of @pierremgi's "AI heal teammates" script that has damage event handlers setting units unconscious when hit big, and then AI teammates will run to downed unit and heal them.   I think this could interfere with your Impact script, so I want to exclude my player lead AI team from the Impact script.   Also, for scripted sequences, mission makers may want to exclude units from Impact.  Thanks for listening!

Share this post


Link to post
Share on other sites
  On 1/20/2022 at 6:40 PM, johnnyboy said:

@haleks I hope this project is progressing well.  I'm also hoping you can accommodate a  request:  Please allow mission maker to specify an array of units to exclude from this feature.  I'm running a modified version of @pierremgi's "AI heal teammates" script that has damage event handlers setting units unconscious when hit big, and then AI teammates will run to downed unit and heal them.   I think this could interfere with your Impact script, so I want to exclude my player lead AI team from the Impact script.   Also, for scripted sequences, mission makers may want to exclude units from Impact.  Thanks for listening!

 

Already done. 😉 

A set of variables can be used to disable Impact on a specific unit or any 'vehicle' class.

The only issues that concern me right now are the ACE compatibility aspect (I have a feeling it won't play well) and one weird glitch I encountered recently - the script seems to conflict with the lifestate of infantry units, sometimes (preventing them from "properly" dying...). That's a critical bug I need to sort out before releasing the mod. 😕 

There's also a side effect that comes with the addForce command : if a group leader falls unconscious, the next unit in line will briefly take command of the group. This back-and-forth command line doesn't seem to cause any issue in itself, but it could be confusing to players.

 

At the moment I'm working on debugging/fixing those, and tweaking the script to be a bit more customizable.

  • Like 3

Share this post


Link to post
Share on other sites

Tada! troppuissant.png

 

Impact has been released, yay!

a356d7a366e83f307ac52b5a0e34b0540349b413.jpg

 

I've updated the OP with additional informations for mission makers.

The mod has been extensively tested in vanilla and with SOG Prairie Fire (which works splendidly well); I've also left it enabled for ACE, but haven't tested that configuration (lemme know how it goes...).

Not actually tested in MP, but I'm confident it's gonna be just fine. ninja.png

 

Have fun fellas!

  • Like 10
  • Thanks 5

Share this post


Link to post
Share on other sites

Just tried it and it works great!  This really adds another great dynamic to ARMA firefights, so thank you very much.

 

Here's  a fun suggestion you can feel free to ignore.  🙂  When Prairie Fire mod present can you play one of the PF screams?   Example call:

player Say3D "vn_sam_headshot_009";

Here's the arrays of death/pain/wounded sounds used in PF.  Having units scream when hit can add a nice audio punch to this methinks.

  Reveal hidden contents

I think you can remove/ignore all the "tunnel" ones as these apply an echo for within tunnels, and probably not worth trying to handle that case.

 

EDIT:  In addition to (or instead of) the above, you could randomly play one of the vanilla pain grunt sounds.  See my JBOY Pain Grunt post which has a list of vanilla sounds you could play.

  • Like 2
  • Thanks 1

Share this post


Link to post
Share on other sites
  On 12/16/2021 at 6:02 PM, haleks said:

missionNamespace setVariable ["impactDisabledOn_" + str _unit, true]

Question:  How do I disable impact on an array of units?   The above is only for one unit.  In my case I want to disable for just units in player group.  Something like this would be great:

{_x setVariable ["impactDisabled", true]} forEach units group player;

It seems a hassle and not selective enough to do this by unit Class (as maybe you want non-player groups of units that have same classes to have impact enabled, but want player group that includes AI to be disabled).

 

EDIT:  Nevermind, the code below works fine for me to disable player's group.  If I need other groups that have same classes to be enabled, I can just make sure those units are different classes (and can always dress/arm them differently.).

// Disable Halek's impact mod for player's squad
{missionNamespace setVariable ["impactDisabledOn_" + typeOf _x, true];} forEach units group player;

 

Share this post


Link to post
Share on other sites

This mod is great, really adds to immersion! I saw you can enable it on players via init, but would you conider adding the option to toggle this on/off for players to the addon options menu? Thanks again for making this!

  • Like 1

Share this post


Link to post
Share on other sites
  On 1/27/2022 at 6:26 PM, johnnyboy said:

Question:  How do I disable impact on an array of units?   The above is only for one unit.  In my case I want to disable for just units in player group.  Something like this would be great:

{_x setVariable ["impactDisabled", true]} forEach units group player;

It seems a hassle and not selective enough to do this by unit Class (as maybe you want non-player groups of units that have same classes to have impact enabled, but want player group that includes AI to be disabled).

 

This should do the trick :

{
	missionNamespace setVariable ["impactDisabledOn_" + str _x, true]
} forEach units group player

Neat idea regarding added screams, I'll certainly experiment with it (but that will most likely be an opt-in feature). 😉 

  • Like 1

Share this post


Link to post
Share on other sites

I'm reading in the original post about network traffic. Do I understand that both (all) client and server will need to run the mod in order for it to function correctly?

Share this post


Link to post
Share on other sites

Hello!

I wanted to further adapt this mod for my own use, namely making the "knockout" timer a random time between 1-30 secs, and making it always apply to player to skip the "missionspace variable part". Any chance I could get access to raw files? I am unsure if I am breaking your license by doing any of this.

Thank you for your reply!

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×