ILLISIS / Constructron-Continued

Other
13 stars 21 forks source link

spider can't build #130

Closed flameSla closed 1 year ago

flameSla commented 1 year ago

watch the video https://user-images.githubusercontent.com/39356103/217126785-4628c46b-1a4f-4476-bd4c-f8f64e3cb8c2.mp4

the BP that was used during construction bp.txt

ILLISIS commented 1 year ago

Hi

Is it requesting the items?

flameSla commented 1 year ago

I don't know, I didn't look at the moment of the error and I didn't save with the error in the video, the construction zone does not reach the substations

ILLISIS commented 1 year ago

I have tried to reproduce the issue with the bp you provided and I cannot.

there is a 5% construction range margin built in and looking at the chunk size compared to the build area it is more ample coverage in one construction point.

Unfortunately, without more information I cannot go any further sorry. A save file with the issue in progress would be the best information you could give.

flameSla commented 1 year ago

it turned out to reproduce the bug [gps=-66.3,1504.3] save https://1drv.ms/u/s!Ame84aAqTAKXhQagSb11pKEcv8gq?e=7f7AL3

ILLISIS commented 1 year ago

The cause of this is easy. The spiders are too fast and their roboport radius in too little, especially for the margin to have any effect - we are talking about 1 tile with the chance that it could have over shot the position 4 tiles.

It is not an easy fix for code and adding the logic to ensure it is standing on the right spot is easy but causes issues elsewhere.

So my only recommendation is to add more roboports and use less exoskelletons.

flameSla commented 1 year ago

So my only recommendation is to add more roboports and use less exoskelletons.

more roboports -> more construction queue -> longer build fewer legs -> slower to move -> longer to build

flameSla commented 1 year ago

it is possible to forcibly reduce the speed of the spider before the construction point

local spider = game.player.selected
if spider.grid.inhibit_movement_bonus == false then
    spider.toggle_equipment_movement_bonus()
end
flameSla commented 1 year ago

or you can rigidly set the "equipment-grid" for the spider so that the player cannot change the number of legs and roboports

ILLISIS commented 1 year ago

There is very little need for Constructrons to be faster.. you are already so far ahead of robot construction though in this sparse case perhaps so.. but with the issues you are experiencing you are between a rock and a hard place.

If I understand you correctly, more roboports does not equal longer builds, they may stand in the one spot building longer yes, but with less range you are adding positions which in turn creates the very issue you have reported.

I am aware of inhibiting the movement speed function, you need to detect the proximity to a way point and then activate it.. then you also need a trigger toggle it again. Overall that alone doesn't work as well as you would think.

flameSla commented 1 year ago

what is the optimal number of robots and exoskeletons?

ILLISIS commented 1 year ago

A job chunk is 80x80 and so is the range of 4 roboports, I generally have two fusion reactors and one exoskeleton and the last four slots you can fill with batteries although I don't think it's totally needed.

Also further to the above, the go_to_position action actually has constructron.grid.inhibit_movement_bonus = (distance < 32)