Jump to content
Sign in to follow this  
sickboy

6thSense.eu AI-Manager (Spawn, Wayp Gen, AI Enh)

Recommended Posts

Hi sickboy

first of all many thanks for your outstanding effort.

It is not easy to set up a mission: i think a better and extended help is required...

It is difficult for me to use advanced option for AI (UPS and GL2).

Why do not you make a demo mission using single groups and the advanced AI?

A question.

I have tried your 6th-AIM v0.1beta2 and i am not able to force enemy to patrol their area (they hold position and do not move..)

Is there a way to force them patrolling?

Cheers

Share this post


Link to post
Share on other sites

Thanks a lot, sickboy!

This AI-Manager rocks hard! yay.gif

Especially since my old (OFP) Random-Patrolscrips don't work anymore ... and in addition i'm a sqf-no0b confused_o.gif

So, thanks again! Great stuff! Definitly very useful!

MfG Medicus notworthy.gif

Share this post


Link to post
Share on other sites

Thanks wink_o.gif

Quote[/b] ]I have tried your 6th-AIM v0.1beta2 and i am not able to force enemy to patrol their area (they hold position and do not move..)
Waypoint generator is planned for v0.2, at this time you will have to use UPS to generate waypoints/patrols for you, this is also the reason why the 2nd AI option (GroupLink) automaticly also makes use of UPS, except it disables the AI-enhancements of UPS (Adds "NOAI" to UPS parameters).

So either use:

Grouplink:<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">_ai=["AI:", [2, ["STAT","SUPP"]]]; // Use at Zones that may only call for support, but do not give support (They will not move to Help other groups unless the fight is very close)

or:<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">_ai=["AI:", [2, ["SUPP"]]];  // Use at Zones that can call but also give support. (They will move to positions far away to deliver support if needed)

UPS-AI:<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">_ai=["AI:", [1, []]];

The current setup of AI-M is not yet prepared for Managing Units put by missioneditor or created in external scripts, other than hooking into the six_aim_stat, six_aim_supp and six_aim_nm arrays. If you add groups to those, they will be included in GroupLink smile_o.gif

Later, I hope to create arrays of groups per zone, which you can manipulate (add/remove) to add manually created groups, but this is all in the (near) future.

Additional and more proper Readme might become available after getting to a stable build or maybe after v0.2 stable.

Share this post


Link to post
Share on other sites

Ok.... Invested about 5 hours last night to split the Scripting/Code even further from the Configuration parts, aswell as tried to format the files for better readability and hope that the Result is satisfying for everyone smile_o.gif

It's advised to remove your old files/folders, and make use of the new ones because of the structural changes.

Please let me know if it's more clear now smile_o.gif

ChangeLog:

[*] Renamed the SIX folder to SIX_Base and prefixed the AIM folder to SIX_AIM

[*] Cleaned up more Code, Split Code more from Configuration.

[*] Moved AIM\cfg_Zone.sqf to AIM\c\cfg_Zones.sqf

[*] ADV Missions have some scripting inside init.sqf

First post updated

Share this post


Link to post
Share on other sites

Sickboy.

I'm not sure if the following is supported (or might supported in the future).

Can you spawn a zone, then spawn more zones later- like based on the completion of an objective or some other type of trigger?

Can you spawn 2 different zone areas and have units from one zone react to the other zone (if they are created seperately on different parts of the map?)

Share this post


Link to post
Share on other sites

I am working on systems for reducing or even putting full groups in statis until players come near those objectives, my only Concern at this time is the 'uber-viewdistance' that were're going to get after 1.06/1.07 patch.

The problem is that in OFP etc, you could easily just spawn groups etc in at 2000meter, and leave the groups reduced to only the leader to about 1300m or something similair. In ArmA this is not going to work because we are able to see in many cases about 4000meter, so in that case you would need to spawn in units at like 4500meter and leave them reduced to only the group leader to about 4000m.

Which would not really be very performance saving (You must put a lot less units in the player area now).

Solutions I have been thinking about:

- Use "Bases" as Support and Respawn Positions. These bases can be used to spawn in a chopper and this chopper can be called for support. After returning sucessfully to base after a mission, this chopper gets deleted again. If you get close to the base as a player, the chopper will be spawned before the player can see it, or not spawned at all, and the player can destroy the base so it can not be used for enemy support anymore.

- Similair idea to the above, but then for Infantry. "Station" them inside buildings... They are not really inside the buildings (= performance save), but when you come near to a city/town and an alarm goes off, they 'spawn' inside some buildings and move on the streets to patrol and move to the alarm point.

- Use a player bubble of about 6KM, nothing outside that radius is happening, maybe some scripts could run "battle simulations", letting the enemy do virtual attacks on some of the friendly bases or whatsoever, but all pure fictional (not really happening) while the results of those fictional battles still do damage to the players or enemies side in terms of amount of (support) units etc. etc.

I think a combination of the above would give us a good set of options to be able to have had 100's or 1000's of units in the battlefield over time, while only having 200-400 units in the mission at most times.

Sickboy. I'm not sure if the following is supported (or might supported in the future). Can you spawn a zone, then spawn more zones later- like based on the completion of an objective or some other type of trigger? Can you spawn 2 different zone areas and have units from one zone react to the other zone (if they are created seperately on different parts of the map?)
Heya, you can spawn in any type of zone you wish at any point of the game:

- Single Group (No real Zone)

- Single Zone (Multi-Group)

- Multiple Zones (Multi-Zone/Multi-Group)

Giving them UPS AI is fine, GroupLink at this time aswell, but there is 1 limitation at this time; you can only run 1 instance of GroupLink. You can have groups in there that either Call Support+Give Support (six_aim_supp), Only Call Support (six_aim_stat), and Call/Give Support but do not remount vehicles (six_aim_nm).

Changes planned for grouplink:

- Support Multiple Instances of the script running, creating different chains of support

- Support Multiple Player Groups

- Some More Optimizations

I will be writing my own AI Enhancement soon, so if you are missing any other feature, please let me know and I might include it in my own Enhancement.

To create a zone or group later by trigger or script, you might not want to use the 'huge' configuration method for the zones as in cfg_Zones.sqf  but use a method better suited for scripting:

http://trac.6thsense.eu:800/arma....IGroups

Quote[/b] ]Nice one Sick. Good to see ya keeping it going.
Ty m8 smile_o.gif

Share this post


Link to post
Share on other sites

How about a trigger zone based AI spawning template? I only want the AI to spawn when a player is within close proximity. And I also need a lot of independent spawn zones.

Share this post


Link to post
Share on other sites
How about a trigger zone based AI spawning template? I only want the AI to spawn when a player is within close proximity. And I also need a lot of independent spawn zones.
You can easily make it, the basics are described above, if you have any specific questions, please do ask smile_o.gif

The wiki contains help to most functions of the AI-M. More documentation will become available overtime and hopefully a proper HTML readme too smile_o.gif

Hint:

1. Create a marker, Shape: Icon, type: Empty,  size: doesn't matter

2. Create Trigger: Triggered by West, PRESENT, Once, On Activation:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">if(six_isServer)then{ ["z1",  getpos "z1tmp", "RECTANGLE", [200, 200]] call six_fCreateMarker; gz1=["z1", 1, getMarkerPos "z1", 100, [3, [5,20]], [], [], [], [], "RANDOM", "AI:", [1, ["SHOWMARKER"]]] call six_fCreateZone;};When West Units come near the trigger, the trigger will create the marker "z1" on the position of the "z1tmp" Marker. It will Create the zone "z1" with 3 infantry groups of between 5-20 units. It will use Random Start positions, and UPS-AI.

It will also create the variable: gz1   which is an array containing all the created groups in that zone, if you would like to perform scripting tasks on the group you can use that variable smile_o.gif

I am developping a system that doesn't need you to put any triggers in, while still only enabling the AI near player to activate etc. etc. (As described in 2 posts above). But the mission maker can have different purposes and reasons for not wanting to activate a certain zone till a certain moment, so I will keep options options options smile_o.gif

Share this post


Link to post
Share on other sites

Thanks.

Three more questions: biggrin_o.gif

1. Can you give me another example, this time with vehicles? tounge2.gif

2. How do I disable the initial AI spawn at mission start?

3. How can I get rid of the status message (created xxx units...)?

Share this post


Link to post
Share on other sites
Thanks.

Three more questions: biggrin_o.gif

1. Can you give me another example, this time with vehicles? tounge2.gif

2. How do I disable the initial AI spawn at mission start?

3. How can I get rid of the status message (created xxx units...)?

1. This should explain: http://trac.6thsense.eu:800/arma....IGroups

(Ps sorry for the poor Documentation at this time, I find it not only hard to write easy understandable Documentation, I also change a lot with the Alpha/Betas so it would require constant rewrite tounge2.gifWIKI Docs updated and reformatted though, hope it helps)

2. Leave SIX_AIM\c\cfg_Zones.sqf empty

3. I will make it an option, settable in SIX_AIM\c\cfg_AIM.sqf, but if you dont want it to be displayed at this time, please comment the last line of SIX_AIM\s\init.sqf:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">if(six_isClient)then{server globalchat format[localize "STR_SIX_AIM_created",six_aim_scount,six_aim_gcount,six_aim_vcount,six_aim_zcount,six_aim_btime];};

becomes

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">//if(six_isClient)then{server globalchat format[localize "STR_SIX_AIM_created",six_aim_scount,six_aim_gcount,six_aim_vcount,six_aim_zcount, six_aim_btime];};

Share this post


Link to post
Share on other sites

I can't get it to work. There's no error message, but the AI won't spawn either.

Here's what I did:

1. Created a new mission

2. Copied the contents of (BIS)_6th-AI-Man_E(BEG)-DEMO.intro

3. Cleared the zone.cfg

4. Created a trigger with the suggested script in the activation field

5. Created an empty marker and named it z1tmp

Share this post


Link to post
Share on other sites
I can't get it to work. There's no error message, but the AI won't spawn either. Here's what I did
Did you copy the Server gamelogic from my mission into yours? (Boy am I happy that BIS is adding an isServer function in ArmA soon so we don't need this godforsaken Server GameLogic any longer ;P)

Another thing, make sure you name the player group, as per example in the Demo missions, and make sure the SIX_PT array contains that variable, you will notice the init-fields of the players and the six_pt array setting in init.sqf smile_o.gif

Share this post


Link to post
Share on other sites

Nope, won't work. Maybe I'm missing something. Could you post an example mission with just a trigger and the marker? That would help.

Share this post


Link to post
Share on other sites
Nope, won't work. Maybe I'm missing something. Could you post an example mission with just a trigger and the marker? That would help.

I would possibly tonight, please send your missionsetup to sb_at_6thSense.eu so I can take a look for you smile_o.gif

In ur trigger you are using Activation by: WEST, Present?

Share this post


Link to post
Share on other sites

Hi sickboy. I've been playing the sample missions you gave out, they're very good as an indication of what can be achieved. I am a big fan of emergent behavior (evidenced by the CTI+DAC merge I did) I haven't had time to play around with making my own scenarios yet (and won't until college finishes), but here are a couple of ideas:

Zones that can be placed where AIM will not enter. This would allow for regrouping areas and a sense of "borders".

Small groups (or reduced groups by fatalities) being able to merge into new, larger groups. (I am thinking of very small groups that this would happen to, say groups where there are only 1, 2 or 3 left. But I suppose those numbers could be set by the mission designer.) I saw an OFP script that did this once.

Helos that drop paras.

Artillery support. Preceded by a sudden withdrawal of AIM elements.

Radio logic, so that the deliberate targeting of a radio operator would prevent radio backup. Obviously at least one radio troop would need to be scripted in to each patrol.

If beer were downloadable I'd send you some smile_o.gif

Share this post


Link to post
Share on other sites

Hi sickboy.

I have tried (BIS)_6th-AI-Man_(BEG)-DEMO.intro mission.

Despite the status message, no enemy unit was created in the areas.

Also verified with Troopmon.

The BIS)_6th-AI-Man_(ADV)-DEMO.intro (ADV) mission, instead, is working fine.

A question.

Could you explain how to properly use "param2" in cfg_Zones?

Cheers

Share this post


Link to post
Share on other sites
Hi sickboy.

I have tried (BIS)_6th-AI-Man_(BEG)-DEMO.intro mission.

Despite the status message, no enemy unit was created in the areas.

Also verified with Troopmon.

The BIS)_6th-AI-Man_(ADV)-DEMO.intro (ADV) mission, instead, is working fine.

A question.

Could you explain how to properly use "param2" in cfg_Zones?

Cheers

Heya m8,

Is this tested on the latest Beta? Beta3 that is? As it seems that some others already reported a green light for it, aswell as my own tests do smile_o.gif

How do you exactly mean with using the Param2 correctly?

At this time the param2 gets set at description.ext

there's 2 values, 1 and 2,   if the value is 1 it will give UPSAI otherwise it will give GroupLink AI (That's the part thats done with the if(param2==1)then{ statements etc).

You do not have to use it, but I thought it would be a nice example to show how you can give the players a choice for AI type at the start and it's extremely handy to test the effects on performance aswell as differences in the game for the AI smile_o.gif

In the ADV missions on Sara however, I worked that even further out to having different Mission Areas AND different AI choices. The implementation in the latter is a bit more complicated than the ones on the Rahmadi, so suggestion would be to keep using the ones on Rahmadi smile_o.gif

Let me hear if you have more questions or somethings not clear smile_o.gif

Quote[/b] ]Hi sickboy. I've been playing the sample missions you gave out, they're very good as an indication of what can be achieved. I am a big fan of emergent behavior (evidenced by the CTI+DAC merge I did) I haven't had time to play around with making my own scenarios yet (and won't until college finishes), but here are a couple of ideas:
Hey mate, and big .. big thanks for taking the time to comment!
Quote[/b] ]Zones that can be placed where AIM will not enter. This would allow for regrouping areas and a sense of "borders"
Very nice idea too and possible... Around v0.3 I would say
Quote[/b] ]Small groups (or reduced groups by fatalities) being able to merge into new, larger groups. (I am thinking of very small groups that this would happen to, say groups where there are only 1, 2 or 3 left. But I suppose those numbers could be set by the mission designer.) I saw an OFP script that did this once.
Nice idea, and certainly do-able. sounds like something for v0.3 smile_o.gif
Quote[/b] ]Helos that drop paras.
Default GroupLink functionality, the choppers either land or kick the paras out smile_o.gif

My own AI expansion should include para's aswell, and hopefully even from larger cargo planes at some point smile_o.gif

Quote[/b] ]Artillery support. Preceded by a sudden withdrawal of AIM elements.
Artillery is a standard feature of GroupLink but have not tested the implementation yet. But your the 2nd idea is a new one and a great one, this would be for a late stadium though.
Quote[/b] ]Radio logic, so that the deliberate targeting of a radio operator would prevent radio backup. Obviously at least one radio troop would need to be scripted in to each patrol.
Very very cool idea, this could be an optional feature, will certainly look for implementation! I only think that modern teams all have a radio communications device that can reach to the other teams in the vicinity (5km for instance) or do I have that wrong (I'm poorly educated in Military stuff smile_o.gif)
Quote[/b] ]If beer were downloadable I'd send you some
Hehehe, thanks m8 :P Maybe in a few years wink_o.gif

Share this post


Link to post
Share on other sites

problem with viewdistance , You still can use/utilize that code as maximal viewdistance can be set in mission / server settings (so anything beyond that value still counts)

and keep in mind in future we get way bigger maps than Sahrani ...

definitely keep that "feature" in yet just dynamic instead static bubble ...

Share this post


Link to post
Share on other sites
problem with viewdistance , You still can use/utilize that code as maximal viewdistance can be set in mission / server settings (so anything beyond that value still counts)

and keep in mind in future we get way bigger maps than Sahrani ...

definitely keep that "feature" in yet just dynamic instead static bubble ...

Sure such feature will surely be in, but we can put a lot more units in total in the mission if we can keep the viewdistance smaller... (you can have a higher unit-density when ur using the function, but this falls away when you go past 2500m viewdistance kind of smile_o.gif)

Share this post


Link to post
Share on other sites

Sickboy,

How often are the range checks to see if a units is "Out-of-Range"?

Instead of range, maybe you could do LOS check against terrain?

The benefit is that you can actually hide units within normal range but behind a hill.

Since we can get altitude easily in ArmA, I would simply perform some trig to get the angle and then track a logic along the path (every 100m or so) and if the logic ever goes higher than the angle, you can probably safely hide the units. Furthermore, you can institute a buffer of about 10m above the angle to spawn units before the players get to a point where LOS is possible.

Added Note: Instead of every 100m, I would personally divide the distance into 10 spots and if value is less than 100m, then use 100m, else use the divided points. Simply if performance gets low at long distances.

Share this post


Link to post
Share on other sites
Quote[/b] ]Radio logic, so that the deliberate targeting of a radio operator would prevent radio backup. Obviously at least one radio troop would need to be scripted in to each patrol.
Very very cool idea, this could be an optional feature, will certainly look for implementation! I only think that modern teams all have a radio communications device that can reach to the other teams in the vicinity (5km for instance) or do I have that wrong (I'm poorly educated in Military stuff smile_o.gif)

Me too smile_o.gif been a while since I was in the military, but I think we can assume a level of radioman dependence, as otherwise ArmA would be fundamentally all-groups-connected. Perhaps make the assumption that local radio is between group members only?

Didn't know about the Grouplink + helo paradrop thing, I didn't see it last night but I'll try & winkle that activity out of them tonight smile_o.gif

Share this post


Link to post
Share on other sites
Sickboy,

How often are the range checks to see if a units is "Out-of-Range"?

Instead of range, maybe you could do LOS check against terrain?

The benefit is that you can actually hide units within normal range but behind a hill. ...

Heya m8!

Nice signature thing you got there ^^ Thanks!

At this time, nothing is checked.

I have included my dacmon.sqf and generate.sqf which I had working with the DAC Converted to ArmA. I wanna use the technology from there but it's written months ago so I would probably rewrite most anyway smile_o.gif

The idea you talk about sounds great. I'm getting more and more acquinted with coordinates (Positions) and heights etc, but I might need some help with the mathmetical calculations for them.

I would like to evaluate the options and try some for the next versions, I guess we can make some nice combinations and options. Thanks for the feedback!

Quote[/b] ]Me too  been a while since I was in the military, but I think we can assume a level of radioman dependence, as otherwise ArmA would be fundamentally all-groups-connected. Perhaps make the assumption that local radio is between group members only?

Didn't know about the Grouplink + helo paradrop thing, I didn't see it last night but I'll try & winkle that activity out of them tonight

Roger, im looking forward to hearing more of your findings and ideas smile_o.gif

Share this post


Link to post
Share on other sites

BTW Sickboy, further to my previous (concerning manual & generated waypoints), is it possible to slip in some altitude-dependant algorithm? I mentioned before that I'd like to prevent coastal patrols in some circumstances, and I expect that sometimes I'd like to prevent ground troops climbing mountains too.

It would be nice to encourage shilkas to prefer a "band" of waypoints to make it more sensible for them to act as aircraft deterrents. Well, you know, that sort of thing, be nice to be able to encourage different sorts of behaviors.

Share this post


Link to post
Share on other sites
BTW Sickboy, further to my previous (concerning manual & generated waypoints), is it possible to slip in some altitude-dependant algorithm? I mentioned before that I'd like to prevent coastal patrols in some circumstances, and I expect that sometimes I'd like to prevent ground troops climbing mountains too.

It would be nice to encourage shilkas to prefer a "band" of waypoints to make it more sensible for them to act as aircraft deterrents. Well, you know, that sort of thing, be nice to be able to encourage different sorts of behaviors.

For sure, v0.2 is all about Waypoint Generation etc. Heights and other parameters are planned smile_o.gif

I basicly try to get to near-DAC (OFP) features and try to go beyond where needed and possible.

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  

×