Kosmo_ 46 Posted November 12, 2024 HIVE_AI V4 Arma 3 version: https://forums.bohemia.net/forums/topic/290922-hive-ai-a3/ Overview HIVE is an strategic AI self commanding script. Map locations are objectives. Groups are automatically sorted into types and receive waypoints to objectives. Units such as artillery, aerial and supports are also handled. Forces ratio consideration, defensive stance when outnumbered. Infantry can garrison and be transported when needed. Usage Initialize with execVM "HIVE.sqf". Requires "HIVE_AO" marker present. Marker size "b" is radius of included locations. Requires "Functions" module. In HIVE.sqf are following configurations: HIVE_ACTIVE - Pause/unpause looping. HIVE_WEST/EAST/GUER - Can suspend side control. HIVE_DEBUG - Debug markers and messages. HIVE_ICONS - Icons for spawning. HIVE_GROUP_BLACKLIST - Remove groups from HIVE control. HIVE_LARGE/MEDIUM/SMALL - Location types to be used as objectives. HIVE_SIZE - Location sizes Files https://drive.google.com/drive/folders/1D59AmyaK4PlIWtLCcHPiBqv7P_6PTzFG?usp=drive_link Battle generator https://forums.bohemia.net/forums/topic/291063-sp-hive-battle-generator/ 3 Share this post Link to post Share on other sites
Kosmo_ 46 Posted November 14, 2024 17 hours ago, dalber24 said: I was trying it, I liked it a lot, it's very good, thanks for sharing it Thanks for trying! I am currently cooking another version of this, here's a little sneak peek /// ARTILLERY { _group = createGroup sideLogic; _battery = _group createUnit ["BIS_ARTY_LOGIC",[0,0,0], [], 0, ""]; _battery synchronizeObjectsAdd [vehicle leader _x]; vehicle leader _x synchronizeObjectsAdd [_battery]; if (side _x == WEST ) then {_x setVariable ["MARTA_customicon", ["b_art"]] }; if (side _x == EAST ) then {_x setVariable ["MARTA_customicon", ["o_art"]] }; if (side _x == RESISTANCE ) then {_x setVariable ["MARTA_customicon", ["n_art"]] }; }forEach HIVE_ART; /// _handle = [HIVE_ART select 0, TARGET, "HE", 2] call HIVE_FIREMISSION; HIVE_FIREMISSION = { _battery = (synchronizedObjects (vehicle leader (_this select 0)) select 0); _target = getPosATL (_this select 1); _type = _this select 2; _rounds = _this select 3; [_battery, _target, ["IMMEDIATE", _type, 0, _rounds]] call BIS_ARTY_F_ExecuteTemplateMission; }; 1 Share this post Link to post Share on other sites
Kosmo_ 46 Posted November 15, 2024 53 minutes ago, dalber24 said: Hey @Kosmo_, I have a question, can the AI use artillery too or is it just for the player? It's not that it's super important... but, it wouldn't be bad if the AI could also blow your ass off. Cheers Yes, the AI does use artillery in v2. More specifically "recon" type units call it in with good effect 1 Share this post Link to post Share on other sites
Kosmo_ 46 Posted November 18, 2024 Did a test of the script with ridiculous amount of 1 unit groups... https://imgur.com/a/gGF0ZPn and it seemed to perform very well ... how??? 1 Share this post Link to post Share on other sites
Kosmo_ 46 Posted November 21, 2024 2 hours ago, dalber24 said: Hey I just realized you had updated it... I was waiting for the new version, but since you hadn't said anything, I was waiting for the announcement message... I hadn't looked at the first post... I just saw it... In your last message you had not mentioned the update, you should do it, because it is usually rare when there are several messages, to see the first one. Oh yeah I basically rewrote the thing 3 times since first posting xd. But yeah I'll probably take a little bit of a break now since stalker 2 came out. All of the versions are in drive folders, I'll maybe look into making some kind of battle generator type mission utilizing the script in future. 1 Share this post Link to post Share on other sites
Kosmo_ 46 Posted November 23, 2024 Version 3.2 Added transportation handling. Vehicles without gunners, eg. trucks will be assigned to "logistics" category. All vehicles that have more free cargo seats than units in group will be available for transportation missions. Infantry that gets a waypoint that is far away (> 1000m) will be added to cargo array. Transportation missions will be assigned from this cargo pool, depending if they can fit the infantry group in question. Changed forces comparison, now counts individual units and vehicles instead of group types. 1 Share this post Link to post Share on other sites
Kosmo_ 46 Posted November 23, 2024 50 minutes ago, dalber24 said: It seems that Metro Awakening will wait a little longer... Edit: @Kosmo_ wait a minute, you're kidding me... you didn't update the files Cheers I did update the files, however I didn't update the link 🤦♂️ (fixed now) 1 Share this post Link to post Share on other sites
Kosmo_ 46 Posted November 24, 2024 Version 3.3 Added "danger close" check for artillery. Artillery will not fire at targets which have friendly units close ( <200m). Changed known enemies array, now accounts individual units instead of groups. Closest know enemies are now checked from waypoint, not squad leader position. Fixed transportation, infantry groups that stay too long in a vehicle (when strategic cycle is triggered) will now dismount instead of staying in cargo forever. Transportation missions capacity is now counted >= instead of >, eg. if there are 8 cargo seats vehicle will transport squads of max 8 instead of 7. Slowed down script looping a little, is now 120s, 240s and 360s. Infantry when side is in defensive mode will seek a building nearby (<250m) waypoint. If building is found they will receive a "HOLD" waypoint on it Time to update A3 one too I guess 1 Share this post Link to post Share on other sites
Kosmo_ 46 Posted November 25, 2024 V 3.4 Transports unit categorization changed, (no gunner, group > 2 units and seats > 1) Single seater planes/helos should be correctly categorized into air units now. Fixed typo in forces comparison, specifically _airwest was incorrectly _airswest. Removed cyclical (strategic) reset of busy array, should prevent transport waypoint never completing. Attempt at stuck prevention, every tactical cycle the radius of current wp is exponentiated. In tactical separated INF into their own section. 1 Share this post Link to post Share on other sites
Kosmo_ 46 Posted November 25, 2024 15 minutes ago, dalber24 said: Wow @Kosmo_ you are Unstoppable <---= 😎 Thanks for the update, I have a silly question, when you enter HIGH COMMAND mode, do you see yourself on the opposite side, for example, on the map if you are on the red side you see yourself blue, is that correct? I mean that's just visual if I'm not mistaken, you don't change sides or do you? Anyway, it's nothing important, just curious. Cheers No you don't change sides. I think the resistance faction being colored blue in the demo is because they're aligned to be west friendly, but not sure. Here is more info on the high command module https://community.bistudio.com/wiki/High_Command 1 Share this post Link to post Share on other sites
Kosmo_ 46 Posted November 26, 2024 V 3.5 Vehicle and armored units have their normal waypoints at "Limited" speed, making infantry keep up a little better. Made settings variables execute unscheduled, can now be changed by init fields in units etc at game start. Added transport to artillery exclusion list. Added HIVE_SUPERBUSY array. Every strategic cycle (groups in HIVE_SUPERBUSY) waypoints get placed on unit position. This should prevent transports from getting stuck. HIVE_TACTICAL now excludes units in HIVE_GROUP_BLACKLIST, exclusion should happen faster this way. Changed formation array to 6 with wedge being most likely. Added check for vehicle commander in HIVE_BUSY array, also excludes blacklisted units. 1 Share this post Link to post Share on other sites
Kosmo_ 46 Posted November 28, 2024 (edited) V 3.6 New HIVE_SPAWNING.sqf Groups can be spawned with editor placed markers. Marker name has to be from HIVE_1 to HIVE_15. Markers are "b_inf", "b_motor_inf", "b_mech_inf", "b_armor" and "b_air". Markers with b_ prefix are for west units while o_ is east and n_ is for resistance. See : https://community.bistudio.com/wiki/Arma_2:_CfgMarkers Group types to spawn correlates with marker type. Possible group types are "Infantry", "Motorized", "Mechanized", "Armor" and "Air". See : https://community.bistudio.com/wiki/Arma_2:_Operation_Arrowhead:_CfgGroups The text field in marker dictates which faction to spawn, for example of you want OA Takistan military, you type in marker text field BIS_TK. See previous link. Marker size "a" is how many groups should be spawned, multiplied by 10. For 7 groups you would set marker size "a" to 0.7. Marker size "b" is how large spawn radius should be, multiplied by 500. So if you want groups to spawn in a radius of 1000m, you set marker size "b" to 2. If you disable HIVE_ICONS in HIVE.sqf these markers will be removed after spawning. There should be an unit of an side in editor for which spawning is done. This unit can be a dummy with Probability of presence 0. Removed cyclical waypoint reset, may the AI pathfinding be merciful. 29/11 small patch for spawning script, makes "variant 1" from cfg groups more likely than others, also fixed spawning of ghost (yes very spooky) groups Edited November 29, 2024 by Kosmo_ 1 Share this post Link to post Share on other sites
zwobot 22 Posted November 30, 2024 Nice work. I put a company worth of Blufor onto I44's Omaha v2 and a reinforced platoon of Opfor into an area of 3 villages and had an instant battle ready in not more than 5 minutes. Is it possible to influence how the hive positions waypoints around the locations? For example decide whether objectives are approached in a frontal assult, flanking or envelopment? 1 Share this post Link to post Share on other sites
Kosmo_ 46 Posted November 30, 2024 5 hours ago, zwobot said: Nice work. I put a company worth of Blufor onto I44's Omaha v2 and a reinforced platoon of Opfor into an area of 3 villages and had an instant battle ready in not more than 5 minutes. Is it possible to influence how the hive positions waypoints around the locations? For example decide whether objectives are approached in a frontal assult, flanking or envelopment? Currently the positioning is either defending or attacking the nearest objective from unit, depending on forces ratio. The waypoints are placed halfway from objective to unit with a radius of 500, eventually overlapping. What do you suppose would be the criteria for flanking or envelopment, in a philosophical sense? Share this post Link to post Share on other sites
zwobot 22 Posted November 30, 2024 My thought was to have a paremeter in the scripts representing the skill of the virtual commander for each side, e. g. "Inexperienced", "Skilled", "Veteran", "Genius" The script would chose a course of action from frontal assault, left flanking, right flanking, envelopment and the selected skill would have an impact on the probability that each of the courses of action will be chosen. For example for Veteran or Genius skill the probability for selecting envelopment or flanking courses of action would be high whereas it would be low for the Inexpierienced skill. You could also skip the skill and parameterize the probability for each course of action directly. Another aspect could be to parameterize the portion of the total available units to be held back in reserve so that another dimension for virtual commander's personality would be its aggressiveness, i. e. more aggressive = less reserves and conservative personality = more reserves. The Hetman AI commander does something similar if I remember correctly. I don't know if either of this is viable with the current design of the Hive and haven't looked into the inner workings of how the assignment of waypoints to groups is coordinated. 1 Share this post Link to post Share on other sites
Kosmo_ 46 Posted November 30, 2024 1 hour ago, zwobot said: My thought was to have a paremeter in the scripts representing the skill of the virtual commander for each side, e. g. "Inexperienced", "Skilled", "Veteran", "Genius" The script would chose a course of action from frontal assault, left flanking, right flanking, envelopment and the selected skill would have an impact on the probability that each of the courses of action will be chosen. For example for Veteran or Genius skill the probability for selecting envelopment or flanking courses of action would be high whereas it would be low for the Inexpierienced skill. You could also skip the skill and parameterize the probability for each course of action directly. Another aspect could be to parameterize the portion of the total available units to be held back in reserve so that another dimension for virtual commander's personality would be its aggressiveness, i. e. more aggressive = less reserves and conservative personality = more reserves. The Hetman AI commander does something similar if I remember correctly. I don't know if either of this is viable with the current design of the Hive and haven't looked into the inner workings of how the assignment of waypoints to groups is coordinated. Very interesting thoughts! Yeah I recall Hetman having personalities which affect the tactics. I like to approach this script with the intention of bringing complex behavior from "simple" instructions. I am thinking about having an additional third "strategic" mode in addition to defensive and offensive, "maneuver". It would be triggered when there are unoccupied objectives. The thinking is that the "front line" would be shaped this way from which the situations of flanking and encirclement would emerge. The big question is whether it is better to consolidate all defenses in one place leading to a quick result (decisive loss/victory), or is it better to be spread out and thin the enemy with sporadic engagements and artillery fire (loosing ground). I suppose the same question applies to attacking, is it better to have single concentrated push or multiple skirmishes. Right now this is solved by simply the unit moving to the nearest objective, by chance and distance either forces stay concentrated or spread out. Yes and also objectives currently are considered captured even thought there is no-one present there. Obviously an area can be considered held if it is behind actually occupied areas, essentially in "shadow" of front line. Should defensive forces be held in these areas (essentially forming reserves) our should defenses be only on the actually contested objectives? Interesting dynamic, maybe these decisions could be based on terrain somehow... Share this post Link to post Share on other sites
zwobot 22 Posted November 30, 2024 That could be alternative behaviours as well influenced by the "personality" parameters. The dumb (or inexperienced) AI commander might rush into multiple objectives piecemeal without any reconnaissance. But it all sounds complicated and difficult to get done convincingly for different situations. Examining the gemoetry of the locations within the AO marker and evaluating them into a small number of categories and then having a couple of general courses of actions for each category that the AI might consider (or let the mission designer decide to choose from) and then stick to that more or less. I. e. How are the locations laid out in relation to the forces's starting positions (wide but shallow or narrow but deep or wide and deep...). The defender might deploy smaller numbers of infantry groups in frontline locations closest to the enemy starting positions while keeping a mobile reserve of mechanized infantry and armored platoons in a location further back to react with by counterattack on serious enemy attacks or breakthroughs. The offensive party on the other hand might probe along the whole frontline for a weak spot, also keeping a mobile reserve to take advantage of any weaknesses in the defensive lines (from what you explained this might already be happening alredy to some degree in the current version if you position groups in the editor opposite to locations on a wide front and keep some concentration of groups further back in the centre? Until now I've mostly played a mission with a narrow line of locations laid out west to east and the attackers lined up west of the first location. They basically ganged up on the first location with some flanking going on but that might be caused by the terrain canalizing them into a certain avenue of approach). Or the attacker might throw wave after wave onto the same objective until it is seized and try capturing objectives deeper in the defenders rear areas. I've just found the bongo moth by the way, wtf 😄 1 Share this post Link to post Share on other sites
Kosmo_ 46 Posted November 30, 2024 Version 4 HIVE.sqf Location types now categorized into large/medium/small Additional location types, "Hill" in medium and "StrongpointArea" in small Location types have a separate radius array HIVE_SIZES HIVE_STRATEGIC.sqf Simplified arrays a little Area arrays are reset every strategic cycle New strategic modes, ATTACKING, DEFENDING and MANOEUVRE MANOEUVRE is activated by ratio of captured areas to uncaptured MANOEUVRE causes groups to prioritize uncaptured objectives HIVE_TACTICAL.sqf Split tactical into TAC_WEST.sqf, TAC_EAST.sqf and TAC_GUER.sqf temporarily removed garrison behaviour from infantry Waypoint placement radius depends on the objective size Waypoints that have less distance to objective than radius are now placed from objective's center Transportation is now requested if distance to waypoint is larger than objective radius 1 Share this post Link to post Share on other sites
Kosmo_ 46 Posted November 30, 2024 57 minutes ago, zwobot said: That could be alternative behaviours as well influenced by the "personality" parameters. The dumb (or inexperienced) AI commander might rush into multiple objectives piecemeal without any reconnaissance. But it all sounds complicated and difficult to get done convincingly for different situations. Examining the gemoetry of the locations within the AO marker and evaluating them into a small number of categories and then having a couple of general courses of actions for each category that the AI might consider (or let the mission designer decide to choose from) and then stick to that more or less. I. e. How are the locations laid out in relation to the forces's starting positions (wide but shallow or narrow but deep or wide and deep...). The defender might deploy smaller numbers of infantry groups in frontline locations closest to the enemy starting positions while keeping a mobile reserve of mechanized infantry and armored platoons in a location further back to react with by counterattack on serious enemy attacks or breakthroughs. The offensive party on the other hand might probe along the whole frontline for a weak spot, also keeping a mobile reserve to take advantage of any weaknesses in the defensive lines (from what you explained this might already be happening alredy to some degree in the current version if you position groups in the editor opposite to locations on a wide front and keep some concentration of groups further back in the centre? Until now I've mostly played a mission with a narrow line of locations laid out west to east and the attackers lined up west of the first location. They basically ganged up on the first location with some flanking going on but that might be caused by the terrain canalizing them into a certain avenue of approach). Or the attacker might throw wave after wave onto the same objective until it is seized and try capturing objectives deeper in the defenders rear areas. I've just found the bongo moth by the way, wtf 😄 The changes in version 4 should see some interesting dynamics emerging. In a situation where forces are nearly equal the stance of defence and offence might get triggered my the attacking side taking heavy or important losses, essentially activating forces defending further away (that could be considered reserves). MANOEUVRE should introduce some flanking especially from defender's side. The objectives having varying sizes will make groups spread out and condense depending on terrain which is also interesting (Hills are important because units can see far away and call in artillery, while Strongpoints are essentially chokepoints on important routes). We'll see how these changes play out, even at 4x speed running scenarios can still take 30 minutes. Bongo moth FTW! 1 Share this post Link to post Share on other sites
Kosmo_ 46 Posted December 1, 2024 V4.1 Small fixes Sped up TAC a little, sleep delays only happen if unit is not in busy array Transportation is now requested if distance is radius * 2 from waypoint Re-added infantry getting waypoints to nearby building from waypoint Building has to be within objective radius Time to update A3 one once again 1 Share this post Link to post Share on other sites
Kosmo_ 46 Posted December 1, 2024 Aight so I got an idea: What if much like individual units in a squad make up squad formation, individual groups would form platoon formation. This could be extrapolated, platoons form brigade formations https://imgur.com/a/0HviUzW 1 Share this post Link to post Share on other sites
Kosmo_ 46 Posted December 1, 2024 2 hours ago, dalber24 said: wow! you are a machine, I had not tried the v4 yet, I will trying it right now.... It's a good idea, I like it, and at least one squad should be special operations, Rambo style, with a lot of skill. Or am I rambling too much already!?I wonder when you sleep... Thank you very much!! As the name implies, special operations are... special (= novel) operations (= neither strategy or tactics) xd. I don't think that will be a consideration for now, however I have observed some very interesting behavior when a helicopter is grouped with infantry. Once the helicopter receives "SAD" waypoint the infantry will dismount at first contact leading to a very cool scene. (your enthusiasm cheers me up continually, thank you too!) 1 Share this post Link to post Share on other sites
Kosmo_ 46 Posted December 3, 2024 (edited) Version 4.2 Updated HIVE_SPAWNING.sqf 30% of groups are spawned from random type, so for example infantry formations will have some supporting vehicles Group strength now changeable with rotation of marker. 90 degrees = 75% group strength, 180 = 50% and 270 = 25% Ammunition status can be changed with color of marker. Green = 75% ammo, Yellow = 50% and Red = 25% Morale (skill) can be changed with alpha of marker. 0.75 alpha = 75% skill, 0.5 alpha = 50% and 0.25 alpha = 25% Spawning markers will now have text with information, "UNITS", "AMMO" and "MORALE" Small patch 3/12 Reduced size of "Armored" groups so it makes more sense Made markers alpha to switch to 1 after spawning rotation and alpha no longer need to be exact, == changed to >= and <= Edited December 3, 2024 by Kosmo_ patch 1 Share this post Link to post Share on other sites
Kosmo_ 46 Posted December 7, 2024 Version 4.3 HIVE.sqf Additional parameter, HIVE_DEBUG2 Looping is now 600s, 300s and 150s HIVE_SPAWNING.sqf Removed opacity parameter, alpha of marker doesn't matter anymore. Morale and supply has 3 states now: High, Medium and Low Supply is now "colorGreen", "ColorYellow" and "ColorRed". Morale is now: 0 degrees, 120 degrees and 240 degrees. Exceptions list for certain factions New marker type, "b_empty". Can be used for factions which have unconventional cfgGroups structure Balancing done for different group types, infantry formations should have some chance against armored formations Reduced spawning radius to marker size * 100 BIS_fnc_findSafePos now defaults to marker position if no valid positions found HIVE_STRATEGIC.sqf Fixed issue with debug markers not updating. HIVE Battle generator: https://forums.bohemia.net/forums/topic/291063-sp-hive-battle-generator/ 1 Share this post Link to post Share on other sites
Kosmo_ 46 Posted December 10, 2024 Version 4.4 HIVE.sqf Removed StrongPointArea from locations array HIVE_TAC Made waypoint position default to target position if no suitable position at midpoint was found HIVE_SPAWNING.sqf Adjusted spawning radius to marker size * 150 Changed group type units values And maybe something else I already forgot about 1 Share this post Link to post Share on other sites