dcs-liberation / dcs_liberation

DCS World dynamic campaign.
GNU Lesser General Public License v3.0
712 stars 185 forks source link

Flights that interrupt fast forward past their ingress waypoint are generated with no waypoint actions to attack their target #2802

Closed Starfire13 closed 1 year ago

Starfire13 commented 1 year ago

Affected versions

Development build

Build information

DCS Liberation 7.0.0 Build 4808 Git revision 1ac36d03da164238d7dd6f4851efe3941cd8a7f8

Description

It is possible for the flight that triggers "fast forward to first contact" to be generated at a location past its ingress waypoint, meaning it is generated without the usual attack target task and such that's placed on the ingress waypoint.

Potential workarounds are to either:

  1. Interrupt fast forward shortly before the flight that triggers first contact gets to its ingress waypoint (this may be more difficult than the latter because you're essentially getting to an ingress polint and then "reversing time" slightly).

  2. Add the waypoint actions from the ingress waypoint to waypoint 0 for any flights triggering first contact that get generated after their ingress waypoint.

Save game and other files

I'm attaching two different save files here.

The first one uses a player flight set to cold start at 22 min to interrupt fast forward before the F-16 SEAD flight gets to its ingress waypoint. SEAD Test Manual Stop at +22 min #4808.liberation.zip

This second save is set to fast forward the mission till first contact (which is a little past the 24 minute mark). SEAD Test Auto Stop at First Contact #4808.liberation.zip

DanAlbert commented 1 year ago

Correct. The attack happened (and failed, because success isn't implemented) at the IP. This is https://github.com/dcs-liberation/dcs_liberation/issues/2036

DanAlbert commented 1 year ago

(or I've misunderstood the description)

Starfire13 commented 1 year ago

Auto-resolve is turned off. Essentially, it's just the very first flight (or flights if they all hit their ingress waypoint around the same time) that will encounter this problem.

DanAlbert commented 1 year ago

Gotcha. I think I can imagine how that happened... will look into fixing soonish.

magnuscodes commented 1 year ago

Add the waypoint actions from the ingress waypoint to waypoint 0 for any flights triggering first contact that get generated after their ingress waypoint.

By waypoint actions, do you mean this bit here? If so, which waypoint needs this in order to work? image

magnuscodes commented 1 year ago

@Starfire13 I think I understand the issue after playing around with the two save files you posted. Regarding the first option, instead of reversing, would it not be possible to filter out all SEAD flights(?) and determine the earliest TOT for their ingress point so the first contact interrupts like half a minute before it reaches that.

I was messing around with the debugger on your SEAD Test Auto Stop at First Contact #4808.liberation.zip and I see that the simulation ticks every second and determines the state and decide if it should interrupt(?)

thought maybe I could filter out all the flights for those that having a SEAD air tasking order and figure out their TOT over the ingress point but it doesn't seem to carry that information over from the UI. I do see that the escort_start_time is set to ~144 seconds before reaching the ingress point TOT so maybe we can use that for interrupting the fast-forward.

image image

Starfire13 commented 1 year ago

This doesn't just affect flights with SEAD tasking. It will affect whichever flight is the one that intterupts fast forward.

magnuscodes commented 1 year ago

This doesn't just affect flights with SEAD tasking. It will affect whichever flight is the one that intterupts fast forward.

So meaning we will need to figure out what flight has the earliest TOT over their ingress point and interrupt like half a minute before then?

Starfire13 commented 1 year ago

So meaning we will need to figure out what flight has the earliest TOT over their ingress point and interrupt like half a minute before then?

Hmm? TOT and ingress point are different things. The flight is supposed to reach its target at the TOT, after the ingress point.

Starfire13 commented 1 year ago

The easiest way I can think of to do this is to interrupt fast forward once any flight hits their ingress waypoint, and then let waypoint 0 inherit all the waypoint actions that would have been placed on the ingress waypoint.

magnuscodes commented 1 year ago

Hmm? TOT and ingress point are different things. The TOT is after the ingress point.

Sorry for the confusion, I meant the time at which the flight reaches the ingress point.

The easiest way I can think of to do this is to interrupt fast forward once any flight hits their ingress waypoint, and then let waypoint 0 inherit all the waypoint actions that would have been placed on the ingress waypoint.

What is waypoint zero at this point in time? Is it what the ingress point would have been or the very first waypoint i.e. airfield?

Starfire13 commented 1 year ago

What is waypoint zero at this point in time? Is it what the ingress point would have been or the very first waypoint i.e. airfield?

There is no longer any waypoint at the airfield (well, apart from the landing waypoint at the end) because the flight is being generated in mid air. The waypoints before the point they are generated at are not created (e.g. Hold, Join, etc). If fast forward is being interrupted at the ingress point, then waypoint 0 would be where the ingress waypoint would have been.

DanAlbert commented 1 year ago

The easiest way I can think of to do this is to interrupt fast forward once any flight hits their ingress waypoint,

This is the current behavior.

and then let waypoint 0 inherit all the waypoint actions that would have been placed on the ingress waypoint.

And this is the part that's supposed to happen, but isn't happening. My guess is that because the flight is generated just after the IP, rather than at the IP.

DanAlbert commented 1 year ago

Not a regression from 6 (right?). Moving to 8 so we can get the apache fix out more quickly.

Starfire13 commented 1 year ago

Nope. As far as I'm aware the issue exists in both 6 and 7.

DanAlbert commented 1 year ago

Thanks. I really wanted to get to this one for 7 but I don't think we can delay the apache fix :(

Starfire13 commented 1 year ago

Understandable, and we're on the same page about not delaying release cos of the broken Apache.

DanAlbert commented 1 year ago

I think this was actually incidentally (or perhaps intentionally?) fixed by https://github.com/dcs-liberation/dcs_liberation/commit/f86709ebd0c00992456e83ded211bbc53573e9e6. iptasks.liberation.zip is a fresh game that ought to have the same problem but it doesn't.

Starfire13 commented 1 year ago

Yeah, this does appear fixed in the sense that waypoint 0 is now inheriting the attack command from ingress if it is generated past the ingress point. However, at least for anti-ship, the aircraft are actually flying away from the target towards Split, and thus have to turn around and fly back to engage their target.

Image

Vectron's Claw #5470 Fast Forward Test.liberation.zip