The placement move generator can probably be improved (see src/place.c, find_to_location). It should search nearby blocks of the proper type, with the range limit interpreted as how many block locations of that type it can search over.
Current Behaviour
Sufficiently common blocks will be searched as above (using the placement grid). Less common ones will be swapped randomly (one if case) or could be locked down early due to the range limit.
Possible Solution
Could search blocks in their own, custom grid space respecting the range limit within that space, and then map back to the full grid.
Context
May be impacting placement quality on heterogenous devices.
Proposed Behaviour
The placement move generator can probably be improved (see src/place.c, find_to_location). It should search nearby blocks of the proper type, with the range limit interpreted as how many block locations of that type it can search over.
Current Behaviour
Sufficiently common blocks will be searched as above (using the placement grid). Less common ones will be swapped randomly (one if case) or could be locked down early due to the range limit.
Possible Solution
Could search blocks in their own, custom grid space respecting the range limit within that space, and then map back to the full grid.
Context
May be impacting placement quality on heterogenous devices.