each tile has its own type and cost value. first clusters are evaluated based on percentage values of their tiles. and then the cluster type and move cost is changed, or set as further processing needed.
there are cases when the cluster area is subdivided: e.g. if impassable tiles are over a level within a cluster, a flood fill checks their connectivity. if they produce a coherent area, they are cut out of the cluster, and form a new one.
walkability of neighbouring clusters is also checked, by checking all the border tiles and their out of cluster neighbours, thus determining neighbouring clusters (ordered as walkable and non-walkable)
I was a bit chaotic, because I wrote this part before summer, but this is the main process. it works at the moment, but not totally perfect, so some further tweaking will be necessary. especially when I will add buildings, which will also form separate new clusters. now only obstacles are handled.