This is the mail archive of the xconq7@sources.redhat.com mailing list for the Xconq project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

plan_transport


 I thought I would review the current problems and proposed fixes.
 I originally planned on sending this only to some people, but I think
 others probably could provide some valuable feedback.

The problems are:
- ferries are not built as they should be
  because the normal pathway where the task return a TASK_FAILED when it
  can no longer go forward, the ai calls the impassable function and
  sets a flag so that a ferry is assigned for construction, no longer
  works. The reasons why this no longer works as well are:
  - There is a bug in the path code so transportation is forbidden
  - The pathfinding returns impassable if no ferries are available, so
    they are never scheduled to be built because no paths ever require them.
- ferries are not assigned as they should be.
  (Actually this was a problem with the pre-path code.)
  - ferries are often assigned to react to enemy intrusions, even air
    attacks over impassable terrain, or to attack battleships and
    aircraft carriers.
  - A task is assigned to a full ferry before it calls the function that
    checks where all the current occupants are going and it goes to the
    middle of an ocean before returning to drop off its occupants.
  - ferries sometimes move a hex when an occupant has been scheduled to
    board, causing the occupant to disappear into the ocean.

Proposed solution.
 A solution to these problems (attribution to Hans here) would be as follows.
 - implement a PLAN_TRANSPORT for ferries, so they are permanently
   assigned to transportation duties, though of course offensive units
   will be transported by them.
 - implement a TRANSPORT_TASK as well, so that human players can asign a
   unit to ferrying, and units will move across islands and seas without
   all that bookkeeping. So a PLAN_TRANSPORT will activate a
   TRANSPORT_TASK.
 - Have only two tasks that do movement, the moveto task and the pickup
   task. The pickup task is only used by the ferry. The hit-unit and
   occupy tasks push moveto tasks. Only the moveto task hails a ferry.
 - When the moveto task needs to board a ferry, it hails it in the task
   code, scheduling a ferry if one exists. If one doesnt, it returns a
   TASK_FAILED and higher level ai code determines the failure reason
   and schedules a ferry to be built, and reassigns the unit to another
   task.
 - ai code also inspects the schedule of units waiting for a ferry, and
   if there is too much of a queue, or any sort of a queue, ensures that
   enough ferries are being build to handle them.
 - If a ferry has been waiting round for some large number of moves
   without any action, it returns a TASK_FAILED and gets reassigned to
   something offensive.
 - Something needs to be added to the ai code so that it can distinguish
   a simple ferry from something offensive, like an aircraft carrier or
   bireme/trireme. This is asking a lot but perhaps some simple
   heuristic could fix this. So a bireme would not go onto
   PLAN_TRANSPORT, but instead grab an archer to help it in sea-battles.
 - The pathfinding would need to be somewhat extended here. It need so
   consider going from A to B using ferry type C, extending the state
   space it explores for possible solutions from simple x,y position.
 - consideration could be given to implementing refueling behavior, 
   a boring detail for the human player,
   while extending the pathfinding state space.

   This is my "wishlist". I will attempt to implement it in stages, so
   that a partial implementation may suffice for a 7.5 release, comments
   invited,
    Peter.
   


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]