dcs-liberation / dcs_liberation

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

place refueling waypoints intelligently #2542

Open DanAlbert opened 1 year ago

DanAlbert commented 1 year ago

https://github.com/dcs-liberation/dcs_liberation/blob/38f4b27d107ac909459f465d98caea7b623dfe12/game/flightplan/refuelzonegeometry.py#L24

Aside from avoiding threats, they should also be placed to avoid making bizarre flight plans. The current refueling waypoint placement undoes a lot of the backtrack-avoidance that was done in 5.0 since it uses arbitrary distance and positions.

DanAlbert commented 11 months ago

This should be fairly easy now that https://github.com/dcs-liberation/dcs_liberation/issues/3085 is done.

SnappyComebacks commented 7 months ago

I started taking a look at this again after your waypoint solver improvements (though the need to do this feels quite a bit reduced due to the infinite fuel setting in the AI now, I'm still a bit disappointed with my current placement of the refuel points). At first I thought this would be somewhat simple but now after thinking a bit about it maybe not. I feel like the conditions for a refuel point would ideally be:

And now I have a bunch of questions that I don't fully know the answers to.

DanAlbert commented 7 months ago

(though the need to do this feels quite a bit reduced due to the infinite fuel setting in the AI now, I'm still a bit disappointed with my current placement of the refuel points)

In case you need more motivation, unlimited fuel doesn't actually change this much. The waypoint exists whether or not the AI will use it, and may drag the AI (and players) places they should not go.

Unlimited AI fuel offers an alternative fix: remove the refueling waypoint entirely. Players can find the tanker themselves with TACAN (or whatever system Russia uses), and the AI doesn't need it. That's optional of course, so it'd take fuel away from AI flights that might need it if players disable that option. You also still need to place some sort of refueling waypoint for the tanker itself, but it might be an easier problem if it's just for the tanker and doesn't need to be a reasonable location relative to split aside from being near and safe. I actually quite like that plan, FWIW. If that's as easy as it sounds to me, I think the regression in AI behavior when unlimited fuel is off is worth it since it cleans up flight plans considerably. Adding refueling points back to the flight plan for players is something more easily tackled post #270.

The distance and / or time on station is sufficiently large.

This isn't actually a condition in the sense of being a requirement for the solver. That wouldn't cause the waypoint to be optional when the route/TOS was short, it would cause it to be unsolvable in that case. In any case, it can't be optional (see below).

Should refuel points only exist if they are required (path sufficiently long, etc.)?

Until #270 is fixed, these can't be conditional. All flight plans of the same type will either have them or not have them. The AI tasks could be skipped conditionally, but the waypoint must always exist.

If join/split is the boundary for when the package is all together, should the refuel point be inside that boundary?

If it's placed before the split (idr how we order them currently, but you could change it if it makes sense to do so), you'll need to also move the split point, because the split point is typically the first safe location in the egress route. Placing refuel before split without moving split would mean refuel is unsafe.

It may be easier (and safer, since it'll be farther from the threat boundary) to place it after, but either option would work.

Should tankers always be planned specific to a package or can they be a resource available to a package? (Does the package determine the tanker position or does the tanker position determine the packages path?) My guess is in the real world is it could be either, depending on the mission.

The refuel waypoint was intended to match with a package refueling mission. I think currently the AI tasks are unconditional, so sometimes they'll wander a long way to find a tanker, but that's a different issue. The refuel waypoint should be roughly colocated with the package's tanker. The other kind of refueling flight (the kind that loiters over a CP and is intended to be usable by all flights), shouldn't impact this.

Should the tankers be single pass tracks (ie not racetracks)? After all the package has a scheduled time at waypoint, and they should be all headed in a single direction?

They refuel on the way out, and refueling the whole package could take quite some time. Not everyone's home base will be in the same direction, so without a racetrack the refueling would potentially drag flights an extra hundred miles farther from home. I'd keep the racetrack.

Unless we don't currently have a race track, in which case I'd say leave it as-is and we'll deal with it if it starts causing problems.