I think the best solution is what you mentioned in your 1st post: create (uniform) zones, and add them properties like what resource is there. They can be made after map is generated, by cycling through resource actors, get their position and assign to a zone. Then mark the zones as discovered/unknown, that can change runtime. It can be enhanced by putting some pathfinding data into the zone system, thus finally you can simply use potential fields to get resource zones and storage zones to move the gatherer out to collect and back to supply the resource…