ALiVEOS / ALiVE.OS

ALiVE Open Source GPL v2
http://alivemod.com/
Other
157 stars 82 forks source link

Inconsistent LOGCOM issues #387

Closed Burdy323 closed 7 years ago

Burdy323 commented 7 years ago

Prerequisites

Description

Despite the OPCOM having multiple Custom HQ's with high priority, the LOGCOM generally is inconsistent when it comes to reinforcing them. Further more, it appears that infantry placed down with the Custom Obj's are for the most part ignored by the LOGCOM.

Snippets of an RPT where I found the AI to be reinforcing, however, through a single objective which was not any of the custom HQ's & sitting idle in the base : https://ufile.io/6u1go

Extra things to note :

HeroesandvillainsOS commented 7 years ago

Can you elaborate more about this LOGCOM issue with waypoints? The post isn't super clear. Are you saying the problem is, any BCR group never gets waypoints at all? In all cases? So eventually it's a profile sandwich and all new groups just stay in one spot?

Burdy323 commented 7 years ago

There are two main issues -

HeroesandvillainsOS commented 7 years ago

Can you read Tupolov's post in #365 about BCR's and waypoints and see if this answers your question and solves your problem?

Burdy323 commented 7 years ago

Yeah I checked that out. That could be apart of the problem, but we are talking 30-45 minutes will go by and 40 groups stacked on a single objective without anything going on (whilst, as I said above, ignoring the custom resupply points).

HeroesandvillainsOS commented 7 years ago

Regarding custom obj's and HQ's, how I understand it is, custom obj's will only establish HQ's if an HQ's object is contained within obj area. It also needs to be very high priority (like a number of 999). I'm not an expert on these, but what I can say is, this ticket needs to be clearer. What are you expecting to happen at your custom HQ? Are you trying to spawn a composition or have an HQ marker show up in debug or both?

HeroesandvillainsOS commented 7 years ago

@tupolov

Burdy323 commented 7 years ago

I have custom objectives with priority set @ 999, HQ's present, debugger showing HQ's present, groups spawned via the custom objective's, and the custom objective's being placed within the placement zone for the mil placement modules with practically zero logistics being brought through them.

I could attach the mission, but it does require the following via the workshop :

Burd's IFA3 Airborne ALIVE Factions (http://steamcommunity.com/workshop/filedetails/?id=940093669) WW2_OBJECTS IFA3_AIO_LITE Faces of war ALiVE CBA_A3 CUP Terrains - Core

HeroesandvillainsOS commented 7 years ago

I mean can't you set up a vanilla ALiVE CBA only logistics test? I know it's not fun but I do this all the time. :) This way you can see the default behavior and also have your ticket resolution expedited. Without this, don't expect quick dev help on this unless they happen to notice the issue offhand while testing other things themselves.

marceldev89 commented 7 years ago

Setting logistics to static (I believe) and placing the module close to a custom objective should use that objective as an insertion point. Not sure how the dynamic setting handles this but it should pick whatever has the highest priority AND is "captured" (i.e. 1 or more groups occupying that objective).

Burdy323 commented 7 years ago

I will when I have some more time a little later.

However, reading the RPT - notice that essentially everything from 41 mins on is just the logistics module. Not sure if this normal behavior to only have the log module feeding anything back and not OPCOM. Further more, notice that the reinforcements from around 41-50 min have no destination set, whilst 50-end all have the same destination.

Burdy323 commented 7 years ago

And yeah I have been using dynamic so I will be sure to check out static.

HeroesandvillainsOS commented 7 years ago

I don't think they should just stack and never get waypoints with Dynamic cust obj's whether Static works for you or not. It would be nice to get a repro with just ALiVE CBA whether a workaround exists or doesn't exist.

Burdy323 commented 7 years ago

Tried doing a run through with static instead of dynamic - and within 30 minutes the Independant Commander was down from 50 groups to around 12, with 11 of those 12 huddled around two objectives (one was custom) without waypoints.

Photo : http://imgur.com/a/e1TnM RPT : https://ufile.io/simx4

I'll try to replicate it in vanilla but thats what I have so far in the meantime

Burdy323 commented 7 years ago

Vanilla Repro!

Tried to replicate the issue by using the mostly same placement of objectives/markers.

You''ll notice that by half an hour in, the blufor will be down to around 10 squads, and the logistic rate is brutally slow. Also, you'll notice that they ignore basically all of the custom objective's when it comes to resupplying. Finally, you'll notice that whilst the occasional unit moves out, majority will simply stack in the base.

Some things that differ from this version to the IFA3 version, is that the LOGCOM does reinforce consistently (albeit, painfully slow) - this could be due too the fact that this faction has air units and the IFA3 faction does not? I set the air logistics to nothing via the staticdata.sqf on the IFA3 version, so not sure if that causes the LOGCOM to bug out.

The instinctual reaction would be to increase the number of units spawned initially as well as the combat zone, however, a lot of custom maps simply cannot support that as they're quite small. Omaha V2, for instance, is around the size of that combat zone I setup in this repro.

Perhaps, add some controls to manually increase the speed of logistics - this would be greatly appreciated. Also, if I may add, I've noticed that para dropped reinforcements seem to be a new thing this past update... An option to disable that would also be quiet nice (as onlooking a crowded omaha beach with 30 rangers falling from the sky in parachutes can be quiet.. Stupid looking ;) ).

bug%20repro.Stratis.zip

marceldev89 commented 7 years ago

I can't test for the time being but I've noticed that in your last RPT (the static logistics session) the (custom) objective closest to the logistics module isn't actually controlled by your side/faction.

Burdy323 commented 7 years ago

Yeah that's one thing I noticed - the OPCOM just completely abandons the custom HQ's. But they aren't occupied by the enemy faction, either.

Also, does the position of the logistics module on the map matter? Because i am under the assumption that it doesn't, so I just throw it in the middle of the ocean (for organizing sake)

marceldev89 commented 7 years ago

When the logistics is set to static it selects the objective closest to the logistics module as the insertion point so it matters in that case. When the module is set to dynamic it doesn't matter because it selects the highest priority occupied objective.

I've also checked your first RPT and it seems to be selecting custom objectives as insertion points just fine.

EDIT: To make sure a custom objective is occupied you can set it to spawn 2 or more (infantry) groups on mission start.

Burdy323 commented 7 years ago

Okay, thank you for clearing that up - if that isn't on the wiki - definitely wanna add that tidbit.

I do spawn the custom objectives with between 2-8 infantry groups. Within 15 minutes they're unoccupied

In regards to the custom objective being used for resupply - the logcom generally doesn't use them, and if it does, it seems at most it'll only use a single objective for logistics (despite there being over 8)

marceldev89 commented 7 years ago

What I said about static and dynamic is written about on the wiki at http://alivemod.com/wiki/index.php/Military_Logistics under the "Reinforcement Type" thingy.

When set to dynamic it always selects the highest priority objective. If you have 8 custom objectives with priority set to 999, chances are it will always select the same objective due to how the sorting function works. It will only start selecting other objectives if the enemy has captured the previously used objective.

Burdy323 commented 7 years ago

Alright cool, thanks for clearing that up for me.

So would there be any theoretically possible way in the logcom using more than one custom objective?

HeroesandvillainsOS commented 7 years ago

Burdy can you try making sure these reinforcements despawn and see if they still stack and don't move to new objectives in a timely manner?

Just make sure you're not within spawn distance and watch the virtual groups with debug and see if their behavior improves.

Burdy323 commented 7 years ago

@HeroesandvillainsOS

Just tried my custom mission w/ mods & the virtual AI debug on. Decided to try running the mission with only Custom Obj's spawning in units. Running all the Custom Obj's combined for a total of around 60-70 spawned infantry groups initially (on the Independent side). By the 30 min mark, the independent side was down to about 15 groups. Four of these groups had move orders. The map was getting marked by the logcom for logistics but nothing really appeared to be happening, as I let it run for another 10 minutes on x4 speed with the same amount of groups appearing on the map. This was all happening outside of the spawn distance, as well.

RPT : https://ufile.io/jocjv

EDIT : So ran it again with some minor tweaks - and it appeared that I got it to work by removing my custom air logistic commands within the staticdata.sqf.

However, I guess the big issue now is that the reinforcing rate appears to be painfully slow. The logistics come in, but seldom (despite the highest settings), leaving the map barren after the first minutes of combat.

It would much appreciated if there was a way to customly define the speed of logcom insertions, as well as manually define custom HQ's as insertion points (so I guess a hybrid of static - where you could drop something into the init line of the custom obj module for it to act as a permanent insertion point). That way, you could combine modules to act as multiple insertion points and simulate reinforcements trickling in from different off map areas.

HeroesandvillainsOS commented 7 years ago

@burdy323 I personally think it would be best to first demonstrate, with ALiVE and CBA only (please, the devs will NOT look at this unless there are no outside mods), the slow rate of Logistics. If you are genuinely holding these objectives, and only getting resupplied at 25% strength, then there is a problem.

We currently have three choices for BCR replacement. None of them are this slow. Can you please demonstrate this and attach the rpt and mission here?

Burdy323 commented 7 years ago

I am trying to replicate the effect in vanilla with questionable results. Which leads me to wonder if the problem could be the map/custom faction.

One thing I notice between the two test runs, is that when I do vanilla I get crossroad notifications for reinforcements arriving where as with the mods I get nothing. What could be the reason for this?

HeroesandvillainsOS commented 7 years ago

Hard to say. If I was you I'd run the test a few more times just to be sure vanilla is working as intended. If you can't repro, I'd then try adding a super basic vanilla ORBAT faction into the mix and seeing if the issue returns.

Burdy323 commented 7 years ago

Alright will do.

Another thing I'll add in regards to the modded mission (on Omaha v2), is that I see a lot of the time the virtual BCR's spawning off in the corner of the map on the water, and then immediately disappearing.

HeroesandvillainsOS commented 7 years ago

Like in #322 ?

Burdy323 commented 7 years ago

Afraid not, its generally relative to the position of the custom objective.

Burdy323 commented 7 years ago

I think I have (sort of) found the issue.

It appears to be linked to custom factions. Specifically in my case, the Air Transport Assets within the logistics module.

Unless the module is set to side, the LOGCOM (for me) was either A) not requesting logistics at all or B) repeatedly requesting AIR logistics despite the faction not having any air units. By setting it to side, the LOGCOM was able to reinforce by air via using default A3 helicopters.

Now, this is a fix yet also a problem. The fix is that yes it is reinforcing now, but the problem is, is that in my case I wanted the trucks to be the only form of resupply.

Another thing to note, is that as soon as I would place ALIVE_factionDefaultAirTransport into my staticdata and define a plane for resupply (as my second guess would be to allow the units to parachute down via a skytrain or something), the LOGCOM would break again. So I assume that the AirTransport for LOGCOM has to be a helicopter?

marceldev89 commented 7 years ago

Yeah ALIVE_factionDefaultAirTransport needs to be a helicopter. I'll take a look at the side vs faction thing.

Burdy323 commented 7 years ago

Alright, cool.

Having the ability to "fake" air logistics (e.g have the opcom be requesting air logistics but instead of an air unit flying in and dropping the group off, the group just spawns at its destination) would be great especially for these smaller push scenarios, jungle maps, and even for counter insurgency scenarios.

marceldev89 commented 7 years ago

From the first RPT you posted I see LOGCOM only using the STANDARD and AIRDROP modes. STANDARD is supposed to be a convoy (i.e. by land) and AIRDROP is where reinforcements parachute in. I don't see LOGCOM deciding to use a helicopter in any way. There is a small bug that's causing an error during (and possibly interferes with) the LOGCOM request. This only happens when ALIVE_factionDefaultAirTransport and/or ALIVE_sideDefaultAirTransport contain vehicles that are not helicopters. If you remove that class you added to ALIVE_factionDefaultAirTransport the error should stop happening.

I guess this still doesn't contain a solution for your problem though. :thinking:

marceldev89 commented 7 years ago

Can you run the snippet below in the debug console during a mission that's showing the symptoms you're talking about? You can get the output from the RPT by searching for BURDY_DBG.

{
    private _opcom = [_x, "opcomID"] call ALiVE_fnc_hashGet;
    private _side = [_x, "side"] call ALiVE_fnc_hashGet;
    private _factions = [_x, "factions"] call ALiVE_fnc_hashGet;
    private _startForceStrength = [_x, "startForceStrength"] call ALiVE_fnc_hashGet;
    private _currentForceStrength = [_x, "currentForceStrength"] call ALiVE_fnc_hashGet;

    diag_log format ["BURDY_DBG: OPCOM: %1 %2 %3 startForceStrength: %4 currentForceStrength: %5", _opcom, _side, _factions, _startForceStrength, _currentForceStrength];
} forEach OPCOM_instances;
Burdy323 commented 7 years ago
18:08:03 "BURDY_DBG: OPCOM: 42134811 GUER [""LIB_101AB"",""LIB_US_RANGERS"",""LIB_US_TANK_TROOPS""] startForceStrength: [89,0,0,2,0,0,0,0]"
18:08:03 "BURDY_DBG: OPCOM: 44264809 WEST [""LIB_WEHRMACHT1"",""LIB_PANZERWAFFE""] startForceStrength: [56,0,0,2,0,0,0,0]"
marceldev89 commented 7 years ago

Oops.. forgot an essential item. Can you run the above code again? I've edited it little bit. :)

marceldev89 commented 7 years ago

Also, make sure that the mission is at a point where it fails to deliver the reinforcements and what not. So make sure that your side lost a good amount of troops before running the code.

Burdy323 commented 7 years ago

Alright,

So I had "ALIVE_factionDefaultAirTransport = [] call ALIVE_fnc_hashCreate;" within my staticdata.sqf left over. The reason was, that whilst the independent faction was having issues pertaining to unwanted air insertions, the west faction was perfectly alright and had no airbound reinforcements - so I assumed that the command nullified aircraft as it was creating an empty array. Removing "ALIVE_factionDefaultAirTransport = [] call ALIVE_fnc_hashCreate;" Appeared to fix this, and now both sides are receiving STANDARD reinforcements from the logcom.

However.

Just ran the mission for about 30 minutes on x4 speed. I noticed that (as mentioned in the OP) both factions logistics were stacking up at the main reinforcement point - leading to the mission becoming a complete standstill. This was not happening when I had "ALIVE_factionDefaultTransport = [] call ALIVE_fnc_hashCreate;" in my staticdata.sqf. Also, the opcom was calling in the occasional AIR request still.

Attached the RPT (and give me 30 minutes I'll run the mission again for you). RPT.txt

marceldev89 commented 7 years ago

Hmm not much interesting in that RPT. It seemingly seems to be doing what it's supposed to be doing besides the reinforcements getting stuck on the reinforcement point. :(

Burdy323 commented 7 years ago

Okay, ran the mission again.

Spoke too soon. This time, despite the debugger showing "ML insertion", the independent side got 0 reinforcements. The west actually got reinforcements and moved out this time, however.

I think the issue is related too the trucks & standard insertions causing the LOGCOM/OPCOM to bug like this, because as I said, things actually appear to work properly when I have helicopters flying around (but sadly, that completely destroys the world war 2 atmosphere lmao).

As you can see in the RPT, Independent was down to 14 groups with absolutely nothing filtering in RPT.txt

Burdy323 commented 7 years ago

As I said earlier, is there a way to "fake" the helicopter insertions, so the units just appear at their intended destinations? Most success I have had was with the helicopter insertions, just wish I could have those without the actual helicopters lol.

I feel like even when the trucks are delivering units, something always goes wrong due to A3 AI (e.g units not being dropped off, trucks piling up in buildings with units in them, etc).

marceldev89 commented 7 years ago

Can you attach the mission and a list of the required mods? I'll take a further look at it tomorrow.

is there a way to "fake" the helicopter insertions

There isn't. If you want that you could use a unit spawner or zeus to manage it manually instead.

Burdy323 commented 7 years ago

Sure, required mods are (all on the workshop) : Burd's IFA3 Airborne ALIVE Factions (http://steamcommunity.com/workshop/filedetails/?id=940093669) WW2_OBJECTS IFA3_AIO_LITE Faces of war ALiVE CBA_A3 CUP Terrains - Core

Night_of_Nights_ALIVE.I44_Omaha_V2.zip

I lowered the plane launcher time from 610 seconds to 30 so ignore the countdown ;)

And that's a shame. How would a unit spawner work with the cache system? Figured it would be near impossible to try and track a group in the cache system and then have something else spawn it when it was killed

Burdy323 commented 7 years ago

Also another thing to note before you try it : I couldn't get dynamic logistics working. So you may want to take a look at that as well.

marceldev89 commented 7 years ago

Just in case you're waiting for some feedback, it'll be a day later. :smile:

Burdy323 commented 7 years ago

Yeah no worries, take your time.

I was thinking as well in terms of manually spawned solutions to avoid logcom - could triggering a spawngroup fnc when the amount of profiles gets below a number (detected via trigger) be an easy solution?

marceldev89 commented 7 years ago

Yeah I guess that could work. There are a couple of ALiVE functions that can handle them but I don't know them of the top of my head. They should be in the x_lib category in the function viewer or at https://github.com/ALiVEOS/ALiVE.OS/tree/master/addons/x_lib/functions/groups. This isn't the place to discuss this though. Probably best to get on our forum at http://alivemod.com/forum/ for that. :)

Burdy323 commented 7 years ago

Yeah, of course. Thanks for the info though!

Keep me in the loop about what you find in my mission

marceldev89 commented 7 years ago

So I've been watching the static LOGCOM for a good hour at 4x speed and it seemed to work fine. Profiles spawned in at the insertion point, moved to their staging point and started doing whatever they needed to do. I've also watched the dynamic LOGCOM for nearly an hour at 4x speed and I've got similar results. The dynamic method is a bit more complex in that when there aren't enough objectives left it might stop doing reinforcements altogether. This map might be too small for the dynamic method to work as intended.

The only issue I've seen happening was that LOGCOM was requesting infantry reinforcements for factions that don't have any infantry groups (e.g. LIB_US_TANK_TROOPS). This might slow down or interfere with the process a bit but all in all it seemed to work fairly well.

Also, the calls to ALiVE_fnc_pauseModule and AliVE_fnc_unpauseModule should be spawned instead of called. Saw some errors popping up about that. Shouldn't affect LOGCOM though.

Nice mission though! You've put in a lot of effort. :smile:

EDIT: I did test this using a development build but I don't think anything related to that has been changed since the last release.

Burdy323 commented 7 years ago

Thank you!

Do you mind if I could have the version of the mission that you tested back (if you made any changes) and run the test? Also the dev build?

And finally, were you getting any results like I was, where the map would be down to less than a quarter of the original reinforcement count for the Allies for a period of time?

marceldev89 commented 7 years ago

The only changes I made were those call vs spawn for the (un)pauseModule call thingies.

Yeah for a little while the Allies got fairly low on their count and then it picked up fairly quickly again (didn't notice this with the static method). Can't tell what that was without going deep diving in the code.

Also, I've noticed that there was some stuff off map on the left and right. What is placed down there?