Forums » Suggestions

A suggestion to correct convoy behaviours

Jan 26, 2011 PaKettle link
Currently convoys tend not to act as a group. Convoys frequently scatter themselves across multiple sectors due to speed differances and jump points that are not close to each other. Convoys also do not react to attacks or damage to ships and literally ignore all threats to themselves.

My suggestion is to create a two level threading arrangement. The top level group thread will handle overall logic and control while separate sub-threads/ship threads handle individual ships.

In the case of a typical convoy mission a convoy thread would be spawned. It would plot the route, obtain or determine the composition of the group and determine the overall convoy speed based on the slowest ship.

Once the thread determined it was ready it would spawn separate ship thread(s) and pass only a single jumps worth of information to each ship. If a player is involved a single jump could also be plotted. The main thread would then wait until all the ships signaled that they arrived at the jump point. At this point a jump command would be executed for all npcs. After the jump a new jump location would be handed out to the sub-threads and so on.

The group thread would also need to be able to verify or determine the status of each ship in the convoy both by return signals or timeout to prevent the thread from locking due to missing or failed ships. Within the main thread logic could be added to alter the convoys course and behaviour based on ship damage, player conduct and a few random events such as ships joining the convoy or ships departing for repairs.

The group thread would also need to be able to maneuver ships from separate starting points, integrate them into the convoy and then route them to separate final destinations. This would allow sorting convoys into more appropriate groups with similar travel speeds by grouping large heavy ships together and smaller faster ships into thier own separate convoy. This type of sorting is more in line with real convoy distributions. Also groups with higher then normal cargo values could be assigned additional escorts.

Each ship thread would handle ship maneuvering to reach its current goal, reporting the ships arrival and condition, and some low level damage avoidance logic. Most of the code for this could be reused from the current programming. Most of the aspects to ship threads are self apparent so I will skip elaboration......

Note: In order to make this suggestion work without a lot of corner cases I am defining a single npc as a group of 1 so that all npcs can be handled consistantly.
Jan 27, 2011 abortretryfail link
Wouldn't this give you the ability to 'route' convoys away from ion storms, effectively removing all the risk involved in the escort missions?
Jan 27, 2011 Alloh link
I have proposed a much simpler implementation that would also work.

-Make all ships in convoy be tagged sequentially, ordered by speed. The slowest ship is 1. I'll call it "flagship".
---If flagship is destroyed, then the next slowest/biggest becomes flagship.

-Convoy logic becomes:
---Flagship plots inertial route to avoid roids (inside sectors, not jumping)
---Every ship follows the Flagship until jump point or WH.

-On starting point and after every jump, convoy gets one additional stage:
---Flagship slows down to 1/2 speed during (5...15)sec (small delay), plot route and accelerate to full speed.
---Every ship forms up with Flagship

Ok, here comes major difference: Starting point. A typical voy with a cappie now does disband due the faster ships already have a headstart. As I propose, instead of heading to jump point, every ship would group up with the capital ship, and depart as an assembled voy. And keeps that way until destination sector.

One more important aspect, but it probably deserves its own topic, is giving convoys some memory. At least make them remember who attacked them on previous sector!
Jan 27, 2011 PaKettle link
Abortretryfail ... maybe but only if allowed by design.
Mar 27, 2011 ryan reign link
+1