beyond-all-reason / Beyond-All-Reason

Main game repository for Beyond All Reason.
https://www.beyondallreason.info/
Other
1.8k stars 302 forks source link

legion infestors overbuilding #3394

Open matthiaskrgr opened 4 months ago

matthiaskrgr commented 4 months ago

Description

1) get a couple of infestors, lets say 10 2) use them to build a large grid of new infestors, ~8x8 for example

Expected Behaviour

~64 infestors built

Actual Behaviour

many more built then designated

Reproduction steps

No response

Other

the problem seems to be that, some of the initial infestors will not be able to physically come into range in order to build the designated new ones, while other infestors will already have built them. the freshly built ones will "move out of the way" of the investors that are constructing. and then when one of the initial infestors that were given the build command comes into range and goes "huh there is no infestor here, guess i'm just gonna build a new one"

probably a problem with all units that can build other units

SethDGamre commented 2 months ago

it is indeed a consequence of the way build orders work for constructors building mobile units.

Mobile units must move out of the way in order to allow new construction. Mobile units that are built on repeat have to move out of the way to allow repeated builds. Each constructor given its own build command must maintain its own list of build orders.

It would be very difficult to change this behavior and I can't conceive of a way to make this behavior better. What you're gonna wanna do is have a single "master" infestor queued to build your 64 infestors, and command existing infestors to guard it.

New infestors automatically guard the one that built them, so it'll snowball effectively. Given this behavior, I think your issue is solved through this other method.

SethDGamre commented 1 month ago

I'm tagging this for game design team review. Fixing this issue would mean also changing the build behavior for all other non-factories building units in the entire game

SethDGamre commented 1 month ago

GDT agrees with the expected behavior in the original post.

This is a wide ranging issue that affects all build commands. it's just that buildings can't "bugger off" meaning duplicates are impossible. The implications of fixing this bug is changing how the build queue is structured such that constructors commanded to build the same things while simultaneously selected share the same specific build projects rather than having duplicate commands on specific locations.

Perhaps some kind of workaround related to suspending bugger off's conditionally can work, but I'm not very hopeful.