GradientsFrom Globulation2Glob2 directs globs around by means of gradients. For example, to find the nearest wheat field a glob moves to the adjacent square with the highest wheat gradient repeatedly until it hits a wheat square. This is referred to as a "hill-climbing" algorithm. Each cell on the map has a "gradient" defined for each player, for swimming and non-swimming globs, for each of the following actions:
In other words, there are (width * height * TotalPlayers * 2 * (2 + TotalResources + TotalBuildings) cell gradient values defined. Gradients are first defined for individual squares in various functions, then those values are propagated around using the Map::propagateGradient() function. Gradients are reduced by one for every square away from a target item (e.g. a wheat square for the wheat gradient). At least for the Guard Area this approach has a serious problem as warriors will always only find the closest guarding area patch and ignore all others. | ||