Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add various task types: destroy, defend, clear, occupy, evacuate, refuel #20

Open
birgersp opened this issue Oct 14, 2016 · 4 comments
Open
Assignees

Comments

@birgersp
Copy link
Owner

Issue by birgersp
Friday Oct 14, 2016 at 13:47 GMT
Originally opened as jkhoel/dcs-mission-intel#20


Add flexibility to task force class so tasks can include

Destroy
Destroy buildings

Defend
Stay in zone for some time

Clear
Actively take out enemies in zone

Occupy
Same as defend, but large portion of units are idle and won't return enemy fire immidiately. Also consider adding a rule not to fire at enemy units if they are outside of current zone (avoid provocation).

Evacuation
Same as occupy, but retreat to a "safe zone" if attacked (or, if attacked by overwhelming force)

Refuel/rearm
Make units "paralyzed", if attacked, don't return fire until some time has passed. Wait for refueling trucks etc.(?)

@birgersp
Copy link
Owner Author

Also add speed and formation configuration of unit performing tasks

@birgersp
Copy link
Owner Author

-- Create task force and add objectives directly
autogft.TaskForce:new(country.id.USA)
	:addUnitSpec(4, "M-1 Abrams")
	:addUnitSpec(4, "M-1 Abrams")
	:addStagingZone("USBase1") -- Set "USBase1" as a staging zone
	:enableReinforcementTimer(600) -- Reinforce task force from staging zones every 10 min
	:beginObjectives() -- (Objectives)
	:flagCondition("task1Flag", 1) --Firstly: wait for flag (some trigger)
	:transport("Combat1") -- Move to "Combat1" (full speed)
	:defend("Combat1", 1200) -- Defend zone for 20 min
	:clear("Combat1") -- Clear zone of enemy units
	:transport("Combat2") -- Move to "Combat3" (full speed)
	:defend("Combat2", 1800) -- Defend zone for 30 min
	:clear("Combat2") -- Clear zone of enemy units
	:flagCondition("task1Flag", 2) -- Wait for some mission flag
	:transport("USBase1") -- Move to "USBase1" (full speed)
	:release() -- Make units available to be absorbed into a different task zone
	:endObjectives() -- (End of objectives)
	:reinforce() -- Reinforce the task force

@birgersp
Copy link
Owner Author

birgersp commented Jan 3, 2017

Forum discussion:

I've been doing some testing and concept design of an objective-based task force system. Where each objective has a condition. Once the condition is fullfilled, the task force moves on to the next objective. But there are a couple of "issues"

Consider the task force has the following objectives:

  • Transport to "task1"
  • Clear "task1"
  • Defend "task1" for 30 min
  • Refuel
  • Transport to "task2"
  • Clear "task2"
  • Defend "task2" for 2 hours
  • Transport to "base"
  1. What should happen if the enemy suddenly appears in a previously captured zone? For instance, what if the enemy captures "task1" while the task force is attacking "task2"?
  2. Does it really make sense to reinforce objective-based task forces? Lets say a task force is destroyed when it was refueling, should the reinforcements go refuel with the rest of the task force? Maybe it would be better to have "reinforcing" as an objective instead...

All in all, there are potentially big (logical) differences between the current "use" of task force and the new system.
I'm considering to keep the current system, and perhaps make a new module for objective-based task forces instead. I would add other mechanisms to replace "reinforcing", and the task force will ignore what happens to "task1" once it is moving to take "task2".

Conclusions for initial design:

  • Task forces have a list of tasks, each task represents a zone, some parameters and some condition (flags) to be completed
  • Task force groups must move through each task zone when advancing, even though the task may be cleared
  • A task may be to control a zone. Such a task may be re-enabled when previously cleared, if enemy units re-appear in it (i.e. control is lost)

Example use:

autogft_TaskForce:new()
  :setCountry(country.id.RUSSIA)
  :addBaseZone("STAGING1")
  :addGroup(4, "T-90")
  :setUseRoads(true) -- Use roads (when advancing to the next zones)
  :addControlZone("task1") -- Capture this zone (retreat if re-taken)
  :addIntermidiateZone("task2") -- Use this zone as waypoint when advancing
  :setUseRoads(false) -- Don't use roads for the next task zones
  :addObjectiveZone("task3") -- Capture this zone (ignore if re-taken)

@birgersp birgersp self-assigned this Jan 8, 2017
birgersp added a commit that referenced this issue Jan 8, 2017
Groups will now move through previously captured zones when advancing as
described in #20.
birgersp added a commit that referenced this issue Jan 8, 2017
Groups will now move through previously captured zones when advancing as described in #20.
@birgersp
Copy link
Owner Author

Blocked by #83

@birgersp birgersp changed the title Add task force flexibility: different task types Add various task types: destroy, defend, clear, occupy, evacuate, refuel Mar 1, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant