Jump to content
Sign in to follow this  
Undeadenemy

How Are Monster/Creature/Zombie Units Created?

Recommended Posts

Requesting information about how Monster/Creature/Zombie units are created for the various mods out there such as Ravage/Velociraptor/Max's Alien/ALIAS Anomalies.

 

Specifically, I'm curious as to how the few people who do develop these get started and what the planning process is for the entities that are out there.

  • What do you use as a base?
  • Are they using Agents as a base for these creatures and then simply applying various models/SFX (Ravage Zombies/Ghosts)?
  • How is the AI handled? Do they simply acquire a target and begin moving toward it, with a script handing out "damage" when they enter what is conceivably melee range?
  • How do the regular AI know how to handle them as hostile? Are they flagged as renegades?
  • If someone were to attempt to create an entity of this type, to be used in a multiplayer setting, what would be the pitfalls to avoid (mainly with code, but also with design in general if you know of any red-flag level bad ideas)?
  • Ravage has a nameSound associated with it's zombies, "Walker" from the Radio Protocol. How was this done?

 

For example:

I had a look at the scripting that was included in the Ravage showcase mission "Ghost Hunters". 
From that I gathered that the Ghosts are Ravage zombies with the "headless" character option and dressed in a ghille suit. 
They then have a semi-transparent texture applied to them and some render settings to adjust their material further. 
When hit, they emit a spark SFX and play a sound. 
They also have an AT-Mine attached to their pelvis, which is set with damage/collision/show model disabled, so that they don't actually explode, but they do allow the Ghost to show up on your "Ghost Detector" (a Mine Detector). 
If I remember, the mine is deleted if the Ghost is "killed".

 

I realise this is a pretty huge topic that covers a lot of areas. I'm mainly looking for a general overview and design considerations for making weird entity/creature things work. I would especially like to hear from Halek, ALIAS, Max, Ryan, etc. as all of these people have published products under their belts, though if any ARMA wizards out there can speak intelligently about how to get started down this road. That would be great too.

 

It's probably too much to ask for a tutorial/guide with pictures describing "How to Make a Generic Monster", but this is knowledge that seems to really be lacking among the community, at least that I have been able to find, and I know that it would be appreciated for those of us who aren't afraid of some scripting, if only we knew what we needed to tell ARMA to do.

  • Like 1

Share this post


Link to post
Share on other sites

Interesting topic! ^^

 

Obviously, everyone has its own process and there's more than one way to "make a monster", but I'm happy to share ideas if it can help modders out there! Although keep in mind : my own approach is rather empirical, and there're probably better ways to achieve what we're talking about (for instance using FSM files for complex behaviours).

 

Quote

What do you use as a base?

Are they using Agents as a base for these creatures and then simply applying various models/SFX (Ravage Zombies/Ghosts)?

 

Usually, zombies spawned by the Ravage modules are Agents, for two good reasons :

- Agents do not use the standard FSM routines, and are less demanding as a result. That's exactly what you need for "zombies scenarios", where we need numerous but dumb entities. The downside is that a lot of scripted commands do not work on Agents, but...

- Agents are easier to work with when you need better control of their pathfinding (which is odd, considering that agents are usually used for super dumb animals in a typical Arma scenario). To be more specific, the setDestination command is a powerful tool for Agents, with more flexibility than what we have for "classic" units : it can clear the planned path on the fly and force an immediate update. In Ravage, this is used to help zombies anticipating their target's trajectory : instead of moving to the target's position every x seconds, they re-calculate the best path to the expected "destination" of the target, based on its velocity.

 

Quote

How is the AI handled? Do they simply acquire a target and begin moving toward it, with a script handing out "damage" when they enter what is conceivably melee range?

 

Not necessarily the best method, but I just plug my own .sqf scripts to zombie entities. It will do the job for dumb monsters, but if you need more complex/dynamic behaviours, it's probably best to have a go at FSM files, but I can't help you there. ^^'

But yeah, basically that's it : targets are selected based on their visibility and proximity, zombies switch to a "chase state" (faster movements, different SFX) and an attack sequence is triggered once in range. For Ravage, a fake bullet with tweaked properties is used, rather than 100% scripted damage : the idea is to be in line with "how Arma is supposed to work", and improve compatibility with in-depth modifications like ACE.

I also added a bunch of scripts to handle their audio perception - in that area, you pretty much have to script everything yourself when working with Agents...

 

Quote

How do the regular AI know how to handle them as hostile? Are they flagged as renegades?

 

Yep. Since zombies have their own logic for target selection, it doesn't conflict with vanilla behaviour. The "fake bullet" trick also helps the AI knowing when they're being attacked/hit by a zombie, which is something you would have to script yourself with less conventional methods.

 

Quote

Ravage has a nameSound associated with it's zombies, "Walker" from the Radio Protocol. How was this done?

 

class CfgVehicles {
	class B_Survivor_F;
	class zombie : B_Survivor_F {
		nameSound = "Walker";
	};
};

https://community.bistudio.com/wiki/Arma_3_NameSound_Setup

"Walker" just happens to be an existing NameSound in Arma 3, lucky for me. ^^

 

Quote

If someone were to attempt to create an entity of this type, to be used in a multiplayer setting, what would be the pitfalls to avoid (mainly with code, but also with design in general if you know of any red-flag level bad ideas)?

 

That deserves its own thread, but IMO :

make sure you know everything you need about locality : you want to know when to execute a script server-side or client-side, what needs to be sync'd across the network or not etc (for instance, the VFX script when a player is hit by a zombie only needs to be executed on his machine)...

- always test the performance of each iteration of your scripts.

- try to stay within the "engine rules" : the less custom scripts you need, the easier it will be for everyone, including mission makers.

 

That's all I can think of right now... By the way, @R0adki11, I think this thread best suits the Editing section of the forum? 😉 

  • Like 2
  • Thanks 2

Share this post


Link to post
Share on other sites

Haleks, thank you so much for the reply, this is exactly the type of information I was looking for! I have a few follow up questions if you don't mind:

  • What SIDE are the Agents considered to be on? Do they even have a side?
  • I've done some experimenting with setting CIVILIANs as Renegade. The AI will gun them down mercilessly, but you still take a score hit for killing them. Even if your own AI Squad-leader directs you to shoot them, if you kill more than 2 or 3 of them your own squad will kill YOU. I don't know if you've found a way around this given your "Civilians as Renegade" option in your module.
  • For the "Ghost Hunters" mission, the briefing states that you have special ammo to kill the ghosts with. Is that just flavor text or do you have some code that limits damage to weapons loaded with specific classes of ammo?
  • Regarding the Ghosts, given that they inherit from the zombie class, how difficult would it be to have their nameSound be "Ghost"? (Another great piece of radioProtocol provided by Bohemia 🙂). Would AI start referring to them as both "Ghost" and "Walker" depending on whatever happened to role? Kind of like "Man" vs "Machinegunner"?

Also, yes I agree, this probably belongs in the Editing sub-forum, but I didn't notice that one at the time. Thanks again for the reply, it's been super helpful!

Share this post


Link to post
Share on other sites

This is a great topic!

 

I am in the process of updating my vDog patrol script and since the dogs are "Agents/Animals" and other Ai won't shoot at them I wanted to know you Halek does that with Ravage's zombies!?

Share this post


Link to post
Share on other sites
4 hours ago, LSValmont said:

This is a great topic!

 

I am in the process of updating my vDog patrol script and since the dogs are "Agents/Animals" and other Ai won't shoot at them I wanted to know you Halek does that with Ravage's zombies!?

 

He has the zombies flagged as renegade: https://community.bistudio.com/wiki/sideEnemy

 

Essentially, every unit has a "Rating" (score). If you kill civilians or teammates the score drops drastically, at -2000 or below, you are flagged as hostile to everyone. This also works with AI, as you can flag civilians as renegades and everything will shoot at them. He also uses a "fake bullet" to deal damage from the zombie melee attacks, so that the other AI's know they're being attacked. In your case though you might want to go with a different technique assuming you don't want the handlers shooting the guard dogs.

Share this post


Link to post
Share on other sites
On 10/17/2019 at 2:16 AM, Undeadenemy said:

Haleks, thank you so much for the reply, this is exactly the type of information I was looking for! I have a few follow up questions if you don't mind:

  • What SIDE are the Agents considered to be on? Do they even have a side?
  • I've done some experimenting with setting CIVILIANs as Renegade. The AI will gun them down mercilessly, but you still take a score hit for killing them. Even if your own AI Squad-leader directs you to shoot them, if you kill more than 2 or 3 of them your own squad will kill YOU. I don't know if you've found a way around this given your "Civilians as Renegade" option in your module.
  • For the "Ghost Hunters" mission, the briefing states that you have special ammo to kill the ghosts with. Is that just flavor text or do you have some code that limits damage to weapons loaded with specific classes of ammo?
  • Regarding the Ghosts, given that they inherit from the zombie class, how difficult would it be to have their nameSound be "Ghost"? (Another great piece of radioProtocol provided by Bohemia 🙂). Would AI start referring to them as both "Ghost" and "Walker" depending on whatever happened to role? Kind of like "Man" vs "Machinegunner"?

Also, yes I agree, this probably belongs in the Editing sub-forum, but I didn't notice that one at the time. Thanks again for the reply, it's been super helpful!

 

  • That depends on the "side" attribute of the unit/agent config : the side of the agent version of "b_survivor_f" will be WEST.
  • The Renegade unit in Ravage is configured with an "enemy" side (even though it belongs to a "civilian" faction) so you don't get a negative rating. But for regular civ units, you're gonna need more tricks, like a killed EventHandler to manage score when necessary. I think I wrote something like that for a project - I'll see if I can find it.
  • Just flavour text, but I'm considering that as an actual feature in the mod version. 😉 
  • For that you can override the zeds config with a custom addon that uses rvg_zed as a dependency. But if you want both nameSounds to be available, you will have to configure additional zed variants - which won't work too well the module design. You can also use a script instead
    _unit setNameSound "Ghost";

 

 

Share this post


Link to post
Share on other sites
14 hours ago, Undeadenemy said:

 

He has the zombies flagged as renegade: https://community.bistudio.com/wiki/sideEnemy

 

Essentially, every unit has a "Rating" (score). If you kill civilians or teammates the score drops drastically, at -2000 or below, you are flagged as hostile to everyone. This also works with AI, as you can flag civilians as renegades and everything will shoot at them. He also uses a "fake bullet" to deal damage from the zombie melee attacks, so that the other AI's know they're being attacked. In your case though you might want to go with a different technique assuming you don't want the handlers shooting the guard dogs.

 

Exactly, if I put the dogs in the renegade faction their own handlers will shoot at them.

 

So rating do works on animals? Like if I spawn a chicken and give it a rating of -2000 the other ai will shoot at them?

Share this post


Link to post
Share on other sites
34 minutes ago, LSValmont said:

 

So rating do works on animals? Like if I spawn a chicken and give it a rating of -2000 the other ai will shoot at them?

 

Yes, that's why AI can shoot at rabbits in the Rabbage scenario. Regarding your dog vs dog handlers problem, I'm not sure it's possible to change what side an agent belongs to (beyond the negative rating trick) - have you tried the join command on your dogs? If that doesn't work, I guess the last resort solution would be to try and spawn the dogs as regular units rather than agents.

  • Thanks 1

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
Sign in to follow this  

×