Jump to content
.kju

Arma 3 Particle Effects documentation

Recommended Posts

Description of fire damage related parameters in config added into documentation. They are practically the same as in the script command setParticleFire: http://community.bistudio.com/wiki/Arma_3_Particle_Effects#Definition_of_part-effect

Hello DarkDruid, would it be possible to replace the stock ArmA III fire with this new "module" fire?

http://feedback.arma3.com/view.php?id=17040

Regards.

Hi, I have reassigned that ticket to me. I have some other tasks on my to-do list right now, but I hope I will be able to look at it soon and improve the fire effect. Thanks for feedback!

Would love to get some commands that allow to spawn instances of particle effect emitters as if they were being spawned by explosions, muzzles, etc. It'd be really helpful in more quickly building new effects since it wouldn't require a game restart (I know in the dev version you can recompile the configs, which is nice, and we used to have that in A2 at least for a couple weeks in one of the betas).

Yes, we can recompile configs, but recompiling of particle configs has some side effects which weren't completely solved so far. There is MP security risk in config recompiling as well. I can ask our engine programmers about this, but I don't think that we will find free resources to solve all related issues in short time. I am sorry.

Share this post


Link to post
Share on other sites

Thanks to you for improving a little bit the game!

And now that I'm here, will there be proper water particles instead of the terrain explosion, for example for missile, grenade launcher, rocket launcher, etc...?

Edited by JackusCTB

Share this post


Link to post
Share on other sites

Found some syntax errors in this example:

- no semicolon at: position[] = {0, 0, 0}

- lack of "[]" and semicolon: emissiveColor = {{30,30,30,0},{0,0,0,0}}

A question: Can I define config particle effect in description.ext (would be great, but seems not work), or addon is the only way to go?

Share this post


Link to post
Share on other sites
Thanks to you for improving a little bit the game!

And now that I'm here, will there be proper water particles instead of the terrain explosion, for example for missile, grenade launcher, rocket launcher, etc...?

I know about this issue, it is assigned to me on Feedback Tracker. Unfortunately I am not able to tell you the exact time/date when this will be fixed.
Found some syntax errors in this example:

- no semicolon at: position[] = {0, 0, 0}

- lack of "[]" and semicolon: emissiveColor = {{30,30,30,0},{0,0,0,0}}

A question: Can I define config particle effect in description.ext (would be great, but seems not work), or addon is the only way to go?

Fixed, thanks!

Share this post


Link to post
Share on other sites

Keep getting these errors when using effects in the editor:

Error in expression <(- inDirX * 2 + surfNormalX / 2) * inSpeed >
 Error position: <inDirX * 2 + surfNormalX / 2) * inSpeed >
 Error Undefined variable in expression: indirx
Error in expression <( - inDirY * 2 + surfNormalY / 2) * inSpeed >
 Error position: <inDirY * 2 + surfNormalY / 2) * inSpeed >
 Error Undefined variable in expression: indiry
Error in expression <( - inDirZ * 2 + surfNormalZ / 2) * inSpeed >
 Error position: <inDirZ * 2 + surfNormalZ / 2) * inSpeed >
 Error Undefined variable in expression: indirz
Error during compilation of bin\config.bin/CfgCloudlets/ImpactSparksSabot1.moveVelocity
Error during evaluation of expression _moveVelocity in ImpactSparksSabot1
Error during evaluation of expression _moveVelocity in ImpactSparksSabot1
Error in expression <(- inDirX * 2 + surfNormalX / 2) * inSpeed >
 Error position: <inDirX * 2 + surfNormalX / 2) * inSpeed >
 Error Undefined variable in expression: indirx
Error in expression <( - inDirY * 2 + surfNormalY / 2) * inSpeed >
 Error position: <inDirY * 2 + surfNormalY / 2) * inSpeed >
 Error Undefined variable in expression: indiry
Error in expression <( - inDirZ * 2 + surfNormalZ / 2) * inSpeed >
 Error position: <inDirZ * 2 + surfNormalZ / 2) * inSpeed >
 Error Undefined variable in expression: indirz
Error during compilation of bin\config.bin/CfgCloudlets/ImpactSparks1.moveVelocity
Error during evaluation of expression _moveVelocity in ImpactSparks1
Error in expression <(- inDirX * 2 + surfNormalX / 2) * inSpeed >
 Error position: <inDirX * 2 + surfNormalX / 2) * inSpeed >
 Error Undefined variable in expression: indirx
Error in expression <( - inDirY * 2 + surfNormalY / 2) * inSpeed >
 Error position: <inDirY * 2 + surfNormalY / 2) * inSpeed >
 Error Undefined variable in expression: indiry
Error in expression <( - inDirZ * 2 + surfNormalZ / 2) * inSpeed >
 Error position: <inDirZ * 2 + surfNormalZ / 2) * inSpeed >
 Error Undefined variable in expression: indirz
Error during compilation of bin\config.bin/CfgCloudlets/ImpactSparksSabot1Small.moveVelocity
Error during evaluation of expression _moveVelocity in ImpactSparksSabot1Small
Error during evaluation of expression _moveVelocity in ImpactSparksSabot1
Error during evaluation of expression _moveVelocity in ImpactSparksSabot1
Error during evaluation of expression _moveVelocity in ImpactSparks1
Error during evaluation of expression _moveVelocity in ImpactSparks1
Error during evaluation of expression _moveVelocity in ImpactSparksSabot1Small
Error during evaluation of expression _moveVelocity in ImpactSparksSabot1
Error during evaluation of expression _moveVelocity in ImpactSparksSabot1Small
Error during evaluation of expression _moveVelocity in ImpactSparksSabot1
Error during evaluation of expression _moveVelocity in ImpactSparks1

Here's my code (nothing out of the ordinary)

_sparks = "#particlesource" createVehicleLocal getposATL _v;
_sparks setPosATL _pos;
_sparks setParticleClass _class; // taken from an array of entries in CfgCloudlets

Thanks.

Share this post


Link to post
Share on other sites
Keep getting these errors when using effects in the editor:

Error in expression <(- inDirX * 2 + surfNormalX / 2) * inSpeed >
 Error position: <inDirX * 2 + surfNormalX / 2) * inSpeed >
 Error Undefined variable in expression: indirx
Error in expression <( - inDirY * 2 + surfNormalY / 2) * inSpeed >
 Error position: <inDirY * 2 + surfNormalY / 2) * inSpeed >
 Error Undefined variable in expression: indiry
Error in expression <( - inDirZ * 2 + surfNormalZ / 2) * inSpeed >
 Error position: <inDirZ * 2 + surfNormalZ / 2) * inSpeed >
 Error Undefined variable in expression: indirz
Error during compilation of bin\config.bin/CfgCloudlets/ImpactSparksSabot1.moveVelocity
Error during evaluation of expression _moveVelocity in ImpactSparksSabot1
Error during evaluation of expression _moveVelocity in ImpactSparksSabot1
Error in expression <(- inDirX * 2 + surfNormalX / 2) * inSpeed >
 Error position: <inDirX * 2 + surfNormalX / 2) * inSpeed >
 Error Undefined variable in expression: indirx
Error in expression <( - inDirY * 2 + surfNormalY / 2) * inSpeed >
 Error position: <inDirY * 2 + surfNormalY / 2) * inSpeed >
 Error Undefined variable in expression: indiry
Error in expression <( - inDirZ * 2 + surfNormalZ / 2) * inSpeed >
 Error position: <inDirZ * 2 + surfNormalZ / 2) * inSpeed >
 Error Undefined variable in expression: indirz
Error during compilation of bin\config.bin/CfgCloudlets/ImpactSparks1.moveVelocity
Error during evaluation of expression _moveVelocity in ImpactSparks1
Error in expression <(- inDirX * 2 + surfNormalX / 2) * inSpeed >
 Error position: <inDirX * 2 + surfNormalX / 2) * inSpeed >
 Error Undefined variable in expression: indirx
Error in expression <( - inDirY * 2 + surfNormalY / 2) * inSpeed >
 Error position: <inDirY * 2 + surfNormalY / 2) * inSpeed >
 Error Undefined variable in expression: indiry
Error in expression <( - inDirZ * 2 + surfNormalZ / 2) * inSpeed >
 Error position: <inDirZ * 2 + surfNormalZ / 2) * inSpeed >
 Error Undefined variable in expression: indirz
Error during compilation of bin\config.bin/CfgCloudlets/ImpactSparksSabot1Small.moveVelocity
Error during evaluation of expression _moveVelocity in ImpactSparksSabot1Small
Error during evaluation of expression _moveVelocity in ImpactSparksSabot1
Error during evaluation of expression _moveVelocity in ImpactSparksSabot1
Error during evaluation of expression _moveVelocity in ImpactSparks1
Error during evaluation of expression _moveVelocity in ImpactSparks1
Error during evaluation of expression _moveVelocity in ImpactSparksSabot1Small
Error during evaluation of expression _moveVelocity in ImpactSparksSabot1
Error during evaluation of expression _moveVelocity in ImpactSparksSabot1Small
Error during evaluation of expression _moveVelocity in ImpactSparksSabot1
Error during evaluation of expression _moveVelocity in ImpactSparks1

Here's my code (nothing out of the ordinary)

_sparks = "#particlesource" createVehicleLocal getposATL _v;
_sparks setPosATL _pos;
_sparks setParticleClass _class; // taken from an array of entries in CfgCloudlets

Thanks.

You can call by setParticleClass only config-defined effects which doesn't use engine-provided parameters, because these parameters are not defined in any script.

In your case you are trying to call a part of sabot impact effect and this effect works with direction and speed of projectile (speed and direction of sparks are set according to these values). But engine doesn't have this information when you call it in script. You need to create a copy of that effect in the config and use numbers instead of all engine-defined parameters (but this will change behaviour of sparks, because they won't be affected by speed and direction of projectile anymore). Or you can compute all these variables in your script and overwrite all parts (which consist engine-provided parameters) of particle definition by script command setParticleParams.

Share this post


Link to post
Share on other sites

Just to follow up on this thread; for anyone having similar issues with particle effects, I went for the config solution and didn't require any velocity to be added from speed and dir. Here is working config if it helps anyone:

class CfgCloudlets
{
class ImpactSparks1;
class Horde_ImpactSparks1: ImpactSparks1
{
	moveVelocity[] = {0,0,0};
};	
class ImpactSparksSabot1;
class Horde_ImpactSparksSabot1: ImpactSparksSabot1
{
	moveVelocity[] = {0,0,0};
};
class ImpactSparksSabot1Small;
class Horde_ImpactSparksSabot1Small: ImpactSparksSabot1Small
{
	moveVelocity[] = {0,0,0};
};
};

Put it in your config.cpp or as an include.

Thanks once again DarkDruid :)

Share this post


Link to post
Share on other sites

There's a fire sound under CfgSFX I think. You could spawn at the same time like the sparking chopper wreck scripts.

Share this post


Link to post
Share on other sites

Got one problem with interval thingy - i want the particle work after each shot of the weapon so i tested bis value 0.06 - that makes one particle less than the shots fired ,

tested alot other intervals between 0.058-0.06 still one more or less than i need

so is there way to set it properly? like interval set exactly to the each shot value?

Share this post


Link to post
Share on other sites

The new smoke and fire Effects Modules work in SP (editor) but do not produce an effect in MP, with the the following error appearing:

'...itter") select 0;
_pos = getPos _logic;
|#|_emitter setPos _pos;

Fire A3\modules_f\Effects\functions\fn_moduleEffectsFire.sqf, line 18

_colorRed = _log...'
Error Undefined variable in expression: _emitter

In effort to get this to work for my missions I believe I found an error in the ArmA3 v1.14 function 'BIS_fnc_moduleEffectsFire.sqf':

Shouldn't: -> String

_colorRed = _logic getVariable ["ColorRed","0.5"];
_colorGreen = _logic getVariable ["ColorGreen","0.5"];
_colorBlue = _logic getVariable ["ColorBlue","0.5"];

Be: -> Scalar

_colorRed = _logic getVariable ["ColorRed",0.5];
_colorGreen = _logic getVariable ["ColorGreen",0.5];
_colorBlue = _logic getVariable ["ColorBlue",0.5];

It doesn't make sense that this should though, given that even if the above string variable type is wrong, it is only the default value to use in the absence of properly set variable on that logic/module?!

Anyway... as I said I got his working for me in MP via:

1) Copying then setting my desired values for the effect variables on a gameLogic

2) re-working the BIS emitter and smoke/fire functions

3) changing these color default variables to the proper type

So not sure if this is the cause but I can at least report that the ArmA3 v1.14 fire and smoke modules do not work in MP.

Edited by mad rabbit

Share this post


Link to post
Share on other sites

Is it possible to import complex particle effects from other sources or is there. I want to make the effect of a High altitude nuclear detonation but i have no idea where to start.

Share this post


Link to post
Share on other sites

Hi,

If I wanted to make a cfg patch to make the bullet impact particle effect larger, what pbo contains the required config? and what are the bullet impacts class(es) called?

I have tried what i thought were the particle effects but when I changed them nothing changed in game.

Share this post


Link to post
Share on other sites

Not sure if it's related too much, maybe so, idk. Ok, so I was watching a video of Project Reality, and their particle, or explosion techniques show to have come a long way, very nicely. For example, when a bomb impacts, there is a very nicely detailed explosion, but it doesn't seem to be... 2D particles, but rather a perfectly executed 3D effect, that looks believable, stays lingering, and fades off realistically. Would it be possible to create such an effect and note cause frame loss? Which is another thing I noticed, it doesn't cause lag of any sort. Maybe test out a series of different approaches for better explosion effects in Dev branch just for experimenting? Thoughts?

Share this post


Link to post
Share on other sites
Would it be possible to create such an effect and note cause frame loss?

No, every particle the PC has to render/calculate will drag down performance. The more particles there are the more frame loss.

Therefore efficient particle usage is required to keep framerate stable for large battles and also not require a high end machine. Better looking effects do not always have to use more particles mind, but most of them do i guess.

Share this post


Link to post
Share on other sites
No, every particle the PC has to render/calculate will drag down performance. The more particles there are the more frame loss.

Therefore efficient particle usage is required to keep framerate stable for large battles and also not require a high end machine. Better looking effects do not always have to use more particles mind, but most of them do i guess.

Well, it seems as though the effect in Project Reality was made as one whole effect. For example, the explosion was one effect, and say, the vehicle being on fire with smoke was its own thing. The only change was the explosion. In Arma 3, the explosion looks to be multiple explosions in a certain format. The initial ball of fire, then the smoke, than it rises and is all gone quickly. So with what you said in mind, i want to say its worth finding out if one detailed explosion effect that looks believable, and dynamic, could be looked into over a multi-stage effect to see if one or the other fits in more, and helps optimization in a way. What do you think?

Share this post


Link to post
Share on other sites
The new smoke and fire Effects Modules work in SP (editor) but do not produce an effect in MP...

Could you please check it one more time and report it on Feedback Tracker in case you can still reproduce this issue? Thanks!

Shouldn't: -> String

_colorRed = _logic getVariable ["ColorRed","0.5"];
_colorGreen = _logic getVariable ["ColorGreen","0.5"];
_colorBlue = _logic getVariable ["ColorBlue","0.5"];

Be: -> Scalar

_colorRed = _logic getVariable ["ColorRed",0.5];
_colorGreen = _logic getVariable ["ColorGreen",0.5];
_colorBlue = _logic getVariable ["ColorBlue",0.5];

Yes, you are right. Thanks for feedback! This shouldn't break MP functionality. I have fixed it and the fix should be in the dev branch next week.

Is it possible to import complex particle effects from other sources or is there. I want to make the effect of a High altitude nuclear detonation but i have no idea where to start.

I am not sure what you mean by other sources. If you mean to take an effect from different game and move it into Arma, that won't work without additional changes.

Hi,

If I wanted to make a cfg patch to make the bullet impact particle effect larger, what pbo contains the required config? and what are the bullet impacts class(es) called?.

Addon Data_F and these are class names of complex effects used currently for impacts:

  • "ImpactLeavesGreen"
  • "ImpactLeavesDead"
  • "ImpactLeavesGreenBig"
  • "ImpactLeavesPalm"
  • "ImpactLeavesPine"
  • "ImpactLeaves"
  • "ImpactGlass"
  • "ImpactGlassThin"
  • "ImpactWood"
  • "ImpactMetal"
  • "ImpactPlaster"
  • "ImpactPlastic"
  • "ImpactRubber"
  • "ImpactConcrete"
  • "ImpactEffectsBlood"
  • "ImpactEffectsSmall"
  • "ImpactEffectsHardGround"
  • "ImpactEffectsWater"

Not sure if it's related too much, maybe so, idk. Ok, so I was watching a video of Project Reality, and their particle, or explosion techniques show to have come a long way, very nicely. For example, when a bomb impacts, there is a very nicely detailed explosion, but it doesn't seem to be... 2D particles, but rather a perfectly executed 3D effect, that looks believable, stays lingering, and fades off realistically. Would it be possible to create such an effect and note cause frame loss? Which is another thing I noticed, it doesn't cause lag of any sort. Maybe test out a series of different approaches for better explosion effects in Dev branch just for experimenting? Thoughts?

I am not sure if we are talking about Project Reality for Battlefield or Arma. Could you post a link to that video? It would be probably more obvious with video example. Thanks!

Share this post


Link to post
Share on other sites

Hey Darkdruid,

first i love the new moduls and associated therewith conveniences.

i have a question to the effects modul /ammunition/ 82mm motar

when i set this modul comes after a short time the 82mm impact. Is it possible to repeat this impact any after a time ?

maybe with a init-set : "switchmove or loop"

that would be great to simulate a battlefield.

Thank you Stephsen

Share this post


Link to post
Share on other sites

Is there a way to change the path of the textures for the particle effects p3d's in a legal way (to make custom effects and replace for instance universal.paa etc. in a mod)?

If not, is there a unbinarized version of the particles p3d somewhere?

If not again, do someone has some infos about what the p3d must contain (in order to reproduce similar ones)?

EDIT: in fact, there is nothing fancy to do for those interested: just make a plan in Object Builder, apply your favorite particle texture and you are good to go.

To use it, pack it in your addon (nothing needed in the Config file) and access it by changing the paths in the particles arrays you are using.

Still some questions I didn't have time to investigate:

-Are there some subtleties regarding the size of the plan

-In Blastcore and the vanilla game, the path to the p3ds is registered in the CfgCloudetsShapes. Why is that (it seems to work without it)?

Edited by super-truite

Share this post


Link to post
Share on other sites

Is there a way to monitor the number of particle created in real time? It could be really useful in order to make particle hungry effects.

I could compute the number of particles I create via script, but some are created after building destructions, if a player throw a smoke grenade etc.

Share this post


Link to post
Share on other sites
Yes, you are right. Thanks for feedback! This shouldn't break MP functionality. I have fixed it and the fix should be in the dev branch next week.

I didn't think so either. I need to look at my notes as why I had to modify these 'defaults' in order for it to work, but I think it was something to do with particle effect initialization and errors until the specified variables could be registered if that makes sense. Indeed as I said in the initial post, it also seemed strange to me that this would break it as well?!

Could you please check it one more time and report it on Feedback Tracker in case you can still reproduce this issue? Thanks!

Apologies DarkDruid, I should've done that in the first place rather than here. I'll try get onto it in the next week with my script examples. In short, I've gotten it to work in MP by cut-pasting and modifying the BIS functions. But despite it now "working in MP" there is now a significant performance problem due to RPT spam with the following message:

Ref to nonnetwork object 5b932b00# 1780169: empty.p3d

From my research this relates to the createVehicle command, which makes sense given the particleEffect generator, but I have to look at that code again.

Edited by mad rabbit

Share this post


Link to post
Share on other sites

Is the way cannon fire effect is produced different in A3 and A2?

We're building a versatile multi-barrel addon but have not managed to move the cannon fire particles with the projectile. Is it possible to get a hold of the cannonfired effect and move it along the projectile?

Share this post


Link to post
Share on other sites
Hey Darkdruid,

first i love the new moduls and associated therewith conveniences.

i have a question to the effects modul /ammunition/ 82mm motar

when i set this modul comes after a short time the 82mm impact. Is it possible to repeat this impact any after a time ?

maybe with a init-set : "switchmove or loop"

that would be great to simulate a battlefield.

Thank you Stephsen

I don't think there is support for this directly in the module. But you should be able to create a loop in your scripts and create this module every few seconds.

-In Blastcore and the vanilla game, the path to the p3ds is registered in the CfgCloudetsShapes. Why is that (it seems to work without it)?

These were used like default textures in case the texture defined directly in the effect was not found. But most of them is not used anymore.

Is there a way to monitor the number of particle created in real time? It could be really useful in order to make particle hungry effects.

I could compute the number of particles I create via script, but some are created after building destructions, if a player throw a smoke grenade etc.

This new exe should be helpful in this matter: https://community.bistudio.com/wiki/Arma_3_Diagnostics_Exe

Is the way cannon fire effect is produced different in A3 and A2?

We're building a versatile multi-barrel addon but have not managed to move the cannon fire particles with the projectile. Is it possible to get a hold of the cannonfired effect and move it along the projectile?

Yes, cannon fire effect is created different way in A3. This effect was created by scripted particle effects in A2 and now it is created via config. There is still support of the old way used in A2. If you are porting some stuff from A2 or creating new stuff based on A2 scripts, you can simply use the old way.

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

×