This is the first step in a larger project to add play/pause buttons to the Liberation UI so the mission can be generated at any point. docs/design/turnless.md describes the plan. This adds an option to fast forward the turn to first contact before generating the mission. None of that is reflected in the UI (for now), but the miz will be generated with many flights in the air. For now "first contact" means as soon as any flight reaches its IP. I'll follow up to add threat checking so that air-to-air combat also triggers this, as will entering a SAM's threat zone. This also includes an option to halt fast-forward whenever a player flight reaches a certain mission-prep phase. This can be used to avoid fast forwarding past the player's startup time, taxi time, or takeoff time. By default this option is disabled so player aircraft may start in the air (possibly even at their IP if they're the first mission to reach IP). Fuel states do not currently account for distance traveled during fast forward. That will come later. https://github.com/dcs-liberation/dcs_liberation/issues/1681
6.3 KiB
Turnless Campaign
This outlines a path for us converting Liberation from turn based into a turnless campaign game like BMS.
Hard problems
We can't simulate combat
We can't feasibly simulate the details of combat, nor can we generate a mission mid-engagement. The mission editor does not support generating aircraft mid-maneuver, or with any SA.
To avoid that problem, instead of simulating the combat we put the group in a "freeze" at the moment the engagement begins. Any frozen groups are spawned wherever they were frozen so simulation can be deferred to DCS. Each freeze will have a deadline for completion, at which point a simple strength-based autoresolve will take place.
After a frozen engagement is resolved (whether in sim or automatically), if the mission objective has not been achieved a mission abort will be evaluated.
We don't know where the roads are
We don't know where the in-game roads are, so we can't precisely simulate the location of convoys as they move, nor the amount of time they will take to move between bases.
Time can be solved by just having the campaign designer encode the travel time in the campaign. The ME will estimate it for them so it’s simple to do. Spawn locations cannot be made precise, but we can have campaign designers define several waypoints along the route and spawn the convoy at the most appropriate one.
SAM engagement zones are huge
The large threat zone of many SAMs would cause most of the map to be a frozen engagement.
To avoid that, SAMs will not cause frozen engagements, but will be simulated at a basic level. Each SAM will track a group, and when in range will periodically “shoot”, and those shots will have a chance to kill an aircraft in the targeted group.
Systems that need to change
AI Commander
Theater state tracking for the HTN becomes much more complicated since it needs to always be able to replan based on pending plans. This shouldn't be too bad since RndName's PR did similar and the plan to continue that should work here. The commander needs to learn to abort missions that are no longer viable.
Transports
With turns gone, transports can longer move one link per turn. See the entry in "hard problems" above. To begin with we can pick an arbitrary time per link and just always spawn the transport at the origin regardless of where they ought to be.
Turn based systems
A number of systems that act in a number of turns become time based:
- Runway repair
- Unit delivery
- Weather changes
- Pilot replenishment
- Income
Procurement could be made simpler if we do away with cash in favor of fixed replenishment rates.
Front line advancement
Front line combat is happening continuously so we need to simulate its movement and losses on the front line.
Mission generation
The mission generator needs to be able to generate aircraft in specific locations, with partial fuel, and possibly with some weapons expended.
Mission result processing
Last known positions need to be recorded, as do weapon inventory and fuel states.
UI
Frozen combats need to be immutable to the player.
Missions in progress need to be made cancelable.
The map needs to show the locations of in-progress missions, including frozen engagements.
There needs to be a UI to examine frozen engagements.
Roadmap
This roadmap is ordered so that we can attempt to make this change in phases that may take more than a single release. It is not focused on providing the best gameplay experience ASAP, but on being able to approach this gradually rather than freezing all other development or branching and a painful merge.
Front-line progress rework
Add auto-resolve for the front line, adjust progress estimates based on stances and not just kills (an enemy in retreat is less likely to be killed, but still gives up ground).
Add play from first-contact option
Add simulation of the mission from the start of the turn up to the first engagement. Generate the mission from that point.
Add fuel expenditure estimation for travel to start location
Adjust fuel quantities at the start of the mission to account for travel.
Add UI to display simulation to first contact
Before removing turns, add play/pause buttons to the game that will simulate the mission up to the first engagement. Once play is pressed no changes may be made to the ATO.
When the turn ends it behaves like the normal end of turn. The ATO is reset and the new turn is planned.
Add mission abort option for players
Add the option to abort flight and packages for players. The AI won’t use this yet but it will be needed once engagement simulation is added.
Add simulation for frozen combats
Allows play to proceed through engagements. The AI will abort missions that are unlikely to succeed after each combat is resolved.
Estimate fuel/weapon use simulation for frozen combats
Improve behavior for groups that have completed an auto-resolved combat by estimating their fuel and ammo use. This could be used to check if the mission should be aborted.
Add player options to create new packages after pressing play
Allow players to create new flights as the mission simulates. This would be the most effective way to add intercept missions.
Make planning real-time
Make the AI planner periodically reevaluate missions to add to the ATO. It will still plan as many missions as possible up front so that the DCS side of the mission can run as long as possible, but it could make use of aircraft that had aborted or returned.
Time-based systems instead of turn based
Move the systems that are currently based on turns to be based on duration. Each turn is assumed to be six hours since there are four turns in a day.
Time between turns based on mission duration
Change the turn duration to be based on the length of the mission played.
Track end positions of aircraft, remove turns
If we can track the status of missions after the simulation ends we can continue where we left off. Do that, and remove the concept of turns.
Track ammo/fuel status of aircraft at the end of the mission
Improve post-simulation realism by tracking the ammunition and fuel spent.
Add turnaround times for landed aircraft
Once aircraft returning from a mission land, a timer starts to track the turnaround time before they'll be ready to redeploy as opposed to being instant.