Jump to content
Sign in to follow this  
sickboy

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

Recommended Posts

Finally started working on my own AI-Enhancement, instead of using/cheering up old works like the GroupLink etc.

Working title for the AI Module is atm:

NAI... New AI ... how original smile_o.gif

What I am planning for v0.1:

[*] Alert Management based on Hit and Fired eventHandlers, using together with the nearTargets feature to build a list of perceived enemies and positions of them. Since im using the perceived position of enemy, there will be no cheating possible by the AI unless engine bugs. In future versions, Alerts might be triggered on more variables.

[*] Combining the Alerts of the AI-Groups that report Enemies into a list, which then will be read by (at first) a basic dispatch script that will decide which AI-groups (based on a few variables) will give support and investigate the alarm position.

[*] It will work for all sides, based on an "AI-group vs Enemy Individual" logic.

[*] Most parameters will be configurable to give mission makers a wide variety of options and configure it as they see fit.

[*] Modular design, seperating the alert generation from dispatch/response, leaving a lot of options for future ideas... Possibly creating dispatch/response actions through the use of FSM etc.

[*] Will be available as module for AI-Manager aswell as usable in any mission, possibly also coming available as addon that can be used in a toned down form to cheer up every mission played, without need to edit it.

Next versions will be expanded and build on the base framework I am creating right now.

No ETA, but stay tuned...

I'm progressing nicely, trying to produce a good code logic that can sustain expanding upon aswell as configurable to be as friendly to server-CPU (or incase of single player, the player-CPU) as possible.

Share this post


Link to post
Share on other sites

I am very close to releasing a beta of my NAI project, which showcases the use of the nearTargets function.

I wrote the script with the following things in mind:

[*] Control over CPU-load

[*] Control over the script by settings/parameters

[*] Good flow of information that will not cause problems like potentially overwriting values incase multiple things are happening

[*] Smart programming to calculate things only once, and making use of data arrays with index arrays that can be used to access information needed from the data arrays

[*] AI Groups vs Enemy Individuals method that allows for infinite number of players or other kind of enemies, with no limitations or need for staticly defining which group or individual is the enemy. Altough one can define AI units/groups that should not support, or enemies that should not be triggered alarms upon.

[*] Immitating the radio-flow: Unit tells to group leader he is under attack, groupleader deciding to contact the command on his side, the command processing the information and deciding the appropriate (re)action

[*] Fairplay. Because I use the nearTargets function, there is only the information available that comes from the units, and their visual and audible perception. As such we get perceived positions and information, without an all-seeing-eye that creates unfair and 'ai-cheating' situations, like knowing your position or general position, even when they are unable to see you.

[*] Possibility for others to change the modules to their taste. Most probably the dispatcher module aswell as the support-scripts would be the most likely to be customized.

[*] Ability to use the script in any mission (with or without specific parameters tuned for that mission), or as plugin in the AI-Manager, creating an extreme Dynamic play experience like DAC and beyond.

At this time there are 3 modules that process data:

[*] Mainloop - This checks all nearTargets of alerted groups. A group becomes alerted after a unit has been hit from that group, or when the group gets called in to investigate an alarm, but I intend to add more ways groups become alerted. There are timestamps of targets maintained per group, so when we later combine the lists of all the targets that the groups have, into 1 list with unique entries, we keep this list up2date only with the latest position information of the targets by the use of the timestamp. There is also a timestamp that keeps track if an enemy is still in the nearTargets list of the group, even though they do not have an updated position on him.

[*] Alarmhandler - This checks all the unique entries created by the mainloop and creates and maintains alarms based on a few parameters. At this time I only create 1 alarm per 150m diameter, so there are not multiple alarms created for targets that are close together.

[*] Dispatcher - This checks all the alarms created by the Alarmhandler and dispatches support units to the given locations. At this time this is a very basic module, but im in the process of developping this to a fully featured module which will feature the most prominent features of GroupLink, DAC, and my own inventions, but this as said is still being developped.

The hard parts were modules 1 and 2, im running these scripts atm in sequential order, processing 1 side per loop, and after finishing all sides, then carrying on that information to the next script. This way I have full control over the cpu-load, where-as multiple script instances, e.g. running per group or per side make the cpu-load very dependent on what's going on in the mission and as such you loose the control over it.

However, the dispatcher spawns a support-script per group that is going to move in to investigate the alarm position.

I am still toying with the idea to have this also in 1 sequential script, but I think it's better when these scripts run on their own per group so they can react faster and independent on the situation surrounding the group.

Share this post


Link to post
Share on other sites

Sickboy, I'm having an issue with the latest version.  I seems no matter what I do when trying to spawn a group with a trigger, the group is spawned, but only the leader of the group appears.

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">if(isServer)then{egr1=[0, [10,20], getMarkerPos "nubz1tmp", 49, 1, "nubz1", "AI:", [1, []]] call (SIX_Aim_F getVariable "fCreate")};  

The trigger works and one guy appears (always a squad leader) and walks to zone "nubz1" and does his patrol.  But he's the only one.  Whereas I think between 10 and 20 should be with him.  I've tried everything I can think of to get this to work.  The initial groups work just fine when using the Cfg_zones file, but I am trying to create spawns during a mission so that I don't have a lot of units at the beginning of the mission.  I want these to be reinforcements.  

Its very strange.

I also tried this method:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">if(isServer)then {gz1=["z1", 0, getMarkerPos "z1", 49, [3, [5,20]], [], [], [], [], "AI:", [1, []]] call (SIX_Aim_F getVariable "fCreateZone")};

I get the same result (except in this case its 3 squad leaders without a team).

Any ideas?  Or is it just not possible to spawn a group after mission start at this time?

Share this post


Link to post
Share on other sites

Heya Nubbin!

I never tried using the creation inside triggers yet, but it should be no problem whatsoever to spawn new groups after mission has started, as thats whats happening usually anyway.

I will look into the trigger thing, but first a question:

Have you by chance installed SIX_Misc addon from the 6thSense.eu "Pack1"? If so, you must make sure you have the latest version. If the SIX_Misc scripts version that is included with AI-M detects the addon, he will simply use the addon SIX_Misc instead of the mission scripts version.

Also, if you are not running the SIX_Misc addon, are you sure you have initialized the scripts version, as is done in the demo mission's init.sqf?

Update, found the problem!

It probably goes wrong because there are sleeps used in the functions. This is no problem when you call those functions from scripts, or from a spawned instance, but it is a problem when ran from a trigger or other gameInit.

Please try this:

if(isServer)then{[] spawn {egr1=[0, [10,20], getPos player, 49, 1, "z1", "AI:", [1, []]] call (SIX_Aim_F getVariable "fCreate")}};

Share this post


Link to post
Share on other sites

Great I'll try it.

I use the 6th sense mod (version.99) Does that include the latest SIX_Misc addon? I thought I read in the change log that it incorporated it.

I'll post back and let you know if that coding works

If it doesn't work thats not a big deal if it runs from a script as well, since I could just make the trigger call a script to run the spawn request.

Share this post


Link to post
Share on other sites

When you call a script from the trigger, the same problem probably arrises, as such, you would need to spawn the script anyway, and as such you can just as easy spawn the call in the trigger :P

I forgot to mention you will need a dummy at the spawn, like:

if(isServer)then{d=[] spawn {egr1=[0, [10,20], getPos player, 49, 1, "z1", "AI:", [1, []]] call (SIX_Aim_F getVariable "fCreate")}};

6thSenseMod v0.99 includes the 6thSense.eu "Pack1" latest version indeed.

Small Update on NAI, already expanded the dispatcher and group support scripts, if they are in a vehicle, they will get out at safe distance with some smoke-screen, and then investigate the alarm, if the alarm ends, they will get back in and resume as before smile_o.gif Same for choppers, they will drop in paratroopers and they also get back in if the alarm is cancelled later on smile_o.gif

There is still a lot of cleaning up todo and things to add, but I think I will release a beta pretty soon, just internal beta testing in multiplayer atm smile_o.gif

Share this post


Link to post
Share on other sites

Sickboy,

Again thanks for the response, although the same thing still happens with both code samples you provided.

in addition to adding d=[] is there anything else you meant by "adding a dummy"?

BTW very excited to hear about the new AI.

Share this post


Link to post
Share on other sites

Hmmm, I will have to look into it again then. I tried using your line from within a console, and it errored because of the sleep, hence I assumed it was the same problem for you.

I will get back to you about it.

Just for the sake of it, can you try the line in an init.sqf, let's say... with a 20 second sleep before it to see how it goes from the init.sqf, after mission has been running for 20 secs?

Share this post


Link to post
Share on other sites

You got it.  Will do in a couple hours.  Watching football right now.

if its a matter of the AI manager engine not completing its start up thats not a problem, because the triggers would likely be activated later anyway.  I'll try in the init after a 20 second delay.  And I'll try via trigger again but wait a minute before activating it (that's not something I have tried).

EDIT:

I it through the init with a 20 second delay. After 20 seconds, the group leader appeared and started his patrol. Again, no one was with him. Really quite strange. I know this is not the intended purpose of the spawn manager, but ability to spawn groups into zones would really expand its usefullness. I know I was able to do this in earlier versions - we worked through it before a couple pages back in this thread (although the syntax has changed).

I'll keep trying new things, but I'd be greatful if you were able to locate a solution.

Share this post


Link to post
Share on other sites

I found the problem:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">// Amount*Ratio (Ratio is default 1, can be used to make amounts depend on the amount of players)

//_am=floor(_am*six_aim_ratio);

//if(_am<1)then{_am=1;};

in fCreate, there is a ratio function for calculating and reducing the spawned groups based on the amount of players. I think it must have been counting the amount ofplayers as 0 and therefore making floor of 1 man to be created. by commenting those lines out it works as intended. This is using my computer as host. I dont' know how a dedicated server would be affected. In any case I think I'm good to go.

Share this post


Link to post
Share on other sites

Extremely sorry for not coming up with that one Nubbin! This feature was somewhere implemented along the way, let alone documented yet smile_o.gif

However, you don't need to edit the functions, just put the setting to false in SIX_AIM\c\cfg_aim.sqf

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">//six_aim_settings set [0, [true, 0.33]];  // Enable Automatic Ratio Adjustment, Ratio is used to determine number of units to generate per Group. 0.33 - Number Value, minimum Ratio--><table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">six_aim_settings set [0, [false, 0.33]];  // Enable Automatic Ratio Adjustment, Ratio is used to determine number of units to generate per Group. 0.33 - Number Value, minimum Ratio

NAI News - The NAI was tested yesterday and ppl were extremely happy with the resulting AI action smile_o.gif

I found a problem with the UPS Waypoint generation, it keeps overriding AI-Enhancement orders, from either NAI or GL2. I have just taken the waypoint generation this time and put it apart in another script, it works as a charm and stops processing as soon as a group starts supporting (at least its set up like this when NAI is used smile_o.gif)

I think I will be able to release a public beta in upcoming weekend, after some heavy cleaning up, finishing and optimizing some parts... stay tuned!

Share this post


Link to post
Share on other sites

I've been closely watching this from the shadows smile_o.gif he he

This is one of the most expected projects by me, sickboy!

Share this post


Link to post
Share on other sites

Ahh, Kroky! My fan from the shadows smile_o.gif

Nice to read ur still around smile_o.gif

I've got a little bump in my schedule due to some work at my job, but I guess I can still make a public beta happen this weekend. Upcoming week I will be mostly away for work but then im back and will work my way up to a public release version.

Share this post


Link to post
Share on other sites

So here we go... 6thSense.eu AI-Manager v0.2beta6 with NAI-Beta1!

Download:

6thSense.eu AI-M v0.2beta6 (Also a NAI-Test Mission included without AI-M)

Please remember this is Beta, bugs are to be expected, cleanups and other things still need to happen!

Wiki updated, including future plans

Changelog

[*] Added 6thSense.eu NAI, Beta

[*] Replaced GroupLink with NAI, altough you could still manually use it by creating your own mission

[*] 6thSense.eu Patrol script based on UPS Patrol Script by Kronzky is used when Grouplink or NAI is selected, otherwise UPS Patrol and AI is used

[*] New start positions (further away) for nearly every objective on nearly every island (Thanks to Alx)

[*] 6 New Objectives on Sahrani, 3 New Objectives at Southern Sahrani (Thanks to Alx)

[*] Updated Briefing to be more informative

6thSense.eu NAI: New AI Enhancement based on features known by GroupLink, DAC, etc. etc.

- Usage of NearTargets function to obtain perceived enemies and their positions, creating a fair and non-cheating AI-Enhancement.

- No "Enemy" configuration is needed, they will react to anything that is considered enemy, doesn't matter if it's an individual, a group, or multiple groups.

- 3 Scripts that handle the target checks, alarms and dispatch. Running after eachother, giving full control over cpu-load and array states and creating the illusion of chain of command and radio protocols.

[*] Mainloop: Scans nearTargets of alerted groups and keeps a simple history and sorts unique targets. Managing the targets.

[*] Alarmhandler: Uses the output of Mainloop to create alarms based on parameters. Managing the alarms.

[*] Dispatcher: Uses the output of Alarmhandler to send in support groups to alarms, using the support script. Managing the supportline.

- Debug Marker script for following alerts and alarms

- Alarms are triggered when an AI gets hit, he reports within 3-6 seconds (configurable) to group leader, he reports to command, and within 10-20 seconds there are support groups sent to the alarm area. When a unit gets killed, while his groupleader is alive, the groupleader will report within 5-20 seconds to command (configurable)

- Alarms only are created for enemies that are further than 150m apart (configurable)

- A maximum of 3 groups are dispatched per alarm, and the alarm maintainer will send in new groups when old groups do not respond any longer (configurable)

- AI will investigate the alarm position even when they have no targets yet

- AI engagement is fully controlled by ArmA's own AI-engine, which isn't as stupid as it sometimes seems ;-)

- Alarms are cancelled after 360 seconds when no more Enemies are spotted (configurable), alerts are cancelled after 180 seconds (configurable).

- Currently the following Support Enhancements are inplace for groups that are called in for support:

[*] If group is on foot or inside Tank, they will move out to the alarm position and engage

[*] If group is inside Car, they will get out at a distance from the alarm position and move further on foot

[*] If group is inside Heli Cargo, they will be parachuted by groups of 3 from the heli near the alarm

- After Alarms are cancelled, groups will continue looking around for a bit, and then move back to their original positions and waypoints, and get back in their vehicles (even the paradroppers) if they had any

Share this post


Link to post
Share on other sites

hi. i'm runing a mission , but i'm seeing that no vehicle spawn near ourgroup , and walk could be long.

is it a bug ? or feature isn't yet added ?

Share this post


Link to post
Share on other sites

Thanks for the report. Found the bug, BIS Missions still had 6thSenseMod vehicles setup to spawn :P, please redownload.

Share this post


Link to post
Share on other sites
Thanks for the report. Found the bug, BIS Missions still had 6thSenseMod vehicles setup to spawn :P, please redownload.

glad to help biggrin_o.gif.

First, we need ammo crate at start ,or weapons choice in briefing screen. maybe more type of infantry on template ? like AA soldier ... i just been raped by 2 MI17 , rocket & MG.

Secondly , non leader player seem not be able to see marker on map. not really grave, it's maybe purpose.

And third, it would be great to add a viewdistance choice, in radio menu per exemple. i tried to edit the mission and add setviewdistance in server logic but it crashed.

between: what do NAI compared to Group link 2 ? i would get my ambiance sound ,but yours don't have yet nener.gif

ps: otherwise , it rocks notworthy.gif

ps2: viewdistance works. my previous crash wasnt related to this

ps3: unit type is not a problem , i just change few of them smile_o.gif

Share this post


Link to post
Share on other sites

1; there are ammo crates at the start, but I guess not for the BIS variants yet, I will add them, but please don't forget it are simple demo missions to showcase the features, it's up to you to create real missions smile_o.gifUpdated the Beta6 Package, fixed the BIS missions to include BIS WeaponBoxes and some small objective fixes for 6thSenseMod variants

2; The objective markers are visible to all aslong as everyone is in from the start, I still have to resolve this issue.

If you are referring to the markers that specify the zones, they should be invisible to all, but if you play as Server-Client, then you will be able to see them as those markers are created locally on the server. I will be resolving this by taking a different approach but this is for the future.

3; Viewdistance choice is up to you. These are, as referred before, simple demo missions and should not be regarded otherwise smile_o.gif

NAI/GL2; NAI features are not as complete as GL2 are, NAI is also simply an AI-Enhancement, not a sound/speech enhancement. I might consider in the future creating such features, but it will be a seperate project, not a NAI or AIM module. The current beta of NAI is basicly a showcase of what can be achieved by using the nearTargets function and how much more fair this method is than having targetPositions based on knowsAbout and getPos smile_o.gif

The response features, like getting out of vehicles, parachuting etc are very basic at this time and there has been very little time put in these. Next versions will expand these features, like artillery, improvements to the current responses and expansion.

Share this post


Link to post
Share on other sites

Discontinuing this product. Asking mods to close this thread.

Thank you all for interest and support.

Dynamic AI Creator by Silola (Mapfact.net) delivers a way more professional, user-friendly, incl huge manual, and better and more complete feature base.

I am working on new product called Battle Center (which uses DAC), which is atm in Alpha, but is progressing nicely. A new thread will appear as soon as I have something concrete ready and testable smile_o.gif

Share this post


Link to post
Share on other sites

Hi Sickboy smile_o.gif

Your project sounds very interesting thumbs-up.gif

Will there be a version without Addons, or with minimum Addons?

I hope for it wink_o.gif

Greeting

Silola

Share this post


Link to post
Share on other sites

The download links no longer work. Is it possible to still get a download of this? I would like to compare this with DAC, as it seems streamlined without too many features.

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  

×