"Awareness" refers to an entity's view of the surrounding world with
regards to how the entity could navigate. We use Recast/Detour to build
a navmesh for the entity.
However, since each world can have many NPCs, each one with their own
mind, we don't want to keep a complete navmesh for each single mind.
This will quickly become expensive. Therefore we want to share
awarenesses between multiple entities of the same type. So, for example,
all fishes handled by the same ai client will share one single awareness
of the world.
This to some degree involves some cheating, since AI minds now might get
knowledge of the world they otherwise wouldn't have. We consider this to
not be such a big issue. If this is unacceptable for some worlds these
should then disable awareness sharing and take the resource hit.
The idea is that the aiclient runs in a separate process and handles all
AI functionality.
This is done by having a "possession" client which recieves possession
requests from the server, and spawns new AI clients for each request.
Unfortunately I haven't got time to properly implement updated tests for
the new classes, so in some cases I've opted for removing tests. With
more resources available it would be advantageous to implement proper
tests for all of the Comm classes, but that won't be done currently.
It's currently a copy of the Mason ruleset.
Where Mason focuses on letting the users create the world themselves,
Deeds instead focuses on allowing world authors to set up enticing
worlds with gameplay and stories. In contrast to Mason there are more
features available to the world authors which allow for automatic
creation of entities and so on.
Since if there are symbols missing in readline, these must be known to
the linker before it handled ncurses or termcap (where these symbols
then are resolved).
The reason for this is that this is the first version where there are
guarantees that the rounding method used in all calculations is uniform,
both within a process and between various platforms. Previous versions
didn't guarantee this.
There's no need to test for older GCC versions since we don't support
them anyway (as we're using C++11 features).
Note that I'm not entirely sure that this flag is needed for all recent
versions of GCC, but we'll keep it for safety's sake.
The main issue is that previous versions didn't correctly encode data in
xml, leading to loss of data when entities where persisted. Since entity
persistence is the one major feature of this release, we must require a
newer atlas version.
Minimal will not be changed, it will serve as a barren and
minimalistic ruleset that allows someone to start. Mars will be
the result of all tutorials applied to minimal.
Also reverted minimal ruleset to use moraf, to avoid additional
requirements.
The library no longer seems to be widely available, and is generally
considered obsolete. Even if it was desirable to keep it around, it
is no longer reasonably practical to keep this code from rotting.