|
|
(3 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
|
Glob2 directs globs around by means of gradients. For example, to find the nearest wheat fielda 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. |
|
Glob2 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: |
|
Each cell on the map has a "gradient" defined for each player, for swimming and non-swimming globs, for each of the following actions: |
|
:* Forbidden area
|
|
* Forbidden area |
|
:* Guard area
|
|
* Guard area |
|
:* Every type of resource
|
|
* Every type of resource |
|
|
* Every building |
|
|
|
|
|
In other words, there are (TotalCells * TotalPlayers * 2 * (2 + TotalResources) cell gradients defined. |
|
In other words, there are (width * height * TotalPlayers * 2 * (2 + TotalResources + TotalBuildings) cell gradient values defined. |
|
|
|
|
Every building also has a gradient map, used to guide globs to the building. |
|
|
|
|
|
|
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). |
|
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 [[solution to the guard area distribution problem|problem]] as warriors will always only find the closest guarding area patch and ignore all others. |
|
|
|
|
|
[[Category:en]] |
|
[[Category:Developer Resources]] |
|
[[Category:Developer Resources]] |
Latest revision as of 22:31, 6 June 2010
Glob2 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:
- Forbidden area
- Guard area
- Every type of resource
- Every building
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.