This is the most basic version of the Swarm AI project. It is the first version
to be published on the website. It has many restrictions, some of which will be
removed with subsequent basic versions (definitions of the different versions can
be found on the project page). The list of restrictions for this version can be
found in the Limitations section below.
Bots (A) have the task of picking up bricks (b) from brick dispensers (B) and placing
them at objective zones (O). The simulation ends once all objective zones have been filled.
Bots are assigned a priority to allow them to solve disputes - for example, if two bots are
going to crash into each other, the bot with the lower priority will calculate a new path which
avoids getting in the way of the bot with higher priority, which will continue on its original
The 'tick time' refers to the number of milliseconds between each move.
For example, if the tick time is 1000, then a bot will move every 1000ms,
or in other words, it will move one position per second. Picking up or
placing bricks also takes one tick.
- Bots will not collide
- Bots will not make the same section as another bot
- Bots will stop once all sections have been built
- If a bot starts performing the same objective as another bot it will not
immediately realise. (Will be fixed in future basic version).
- If a bot knows it will collide with another bot, it will
currently completely recalculate a route to avoid the shared tile, even if waiting one tick
would solve the collision. This also means that a bot may take more moves than
necessary to get to its next position. This will be fixed in an advanced version.
Bots cannot deal with chokepoints (each objective needs to have x number
of paths leading to it for x number of bots) - in an advanced version they will be able to
back out of chokepoints to a 'safe' position to allow a higher-priority bot to pass before them.
Bots cannot travel over an objective zone to reach another objective zone. This
means that all objective zones must have at least one side next to a ground tile. This
will be fixed in a future basic version. This is a prerequisite to fixing the next limitation...
If an objective zone is surrounded by other objective zones, the bots will not
realise that the zone may become unreachable. This will be fixed in a future basic version.
Currently the objectives are sorted at the start, and are performed in that
order even if another objective is closer. This doesn't technically matter,
unless we get to the stage where an objective must be built to allow another
to be built (for example, a 3D structure would be built from the bottom up).