Basic Elements (GBE) - bringing the system to life
As we have seen the GCS does nothing out of itself. In order to
get functionality one has to create agents, forms (and most likely
influences). Some basic classes of this kind are already available
and can be found in the GBE (G Basic Elements) library.
The kind of classes you will find in this library mostly has to do
with virtual worlds - world creation, element hierarchy management,
physics, ... soon this library will also provide you with
agents for evolution aspects.
Deterministic Random World Generation
World creation is an interesting topic, some of the required
functionality is already implemented. The class
GBE::GDynamicGeneratorAgent class
provides functionality to generate a randomised
universe based on a deterministic random generator. As this
allows for a huge universe to be created, the generator can
create just as much as the current active elements (whether
they are intelligent computer driven beings or human users)
require. As these active elements start to explore other
parts of the universe the generator brings these parts
into existence - and by the time passed these parts
can determine in what state they have evolved (age of solar
systems or planets,...). Parts of the universe that are not
inhabited by active elements are just put to "sleep" to save
computing power. This is sadly a limitation we have, but it
will have only a minimal (if at all) effect on the overall
simulation if handled correctly.
Now, if the G System is about evolution, how does this get along
with a randomised universe? This is rather a philosophical
question but as it must occur to some readers we will answer
(part of it) it here. First we need to distuingish between
form representation and physiological aspects of the universe.
The deterministic random world generation is in the first
sense a means to determine where to place what kind of elements.
It is a completely different topic how these elements behave
after their creation, which is not in any way determined by
the generator. Also, if for example the generator determines
that on a certain location in a solar system a planet should
be placed then the planet is not necessarily just there but
the created element can just be a divine energy in the area
of the planet that slowly evolves into a planet - for example
by attracting asteroids, fragments of dead planets, ...
So the determination that on a certain location a planet should
be does not clash with the way how this planet comes into existance.
Element hierarchy management
Another agent, GBE::GReparentAgent,
handles the hierarchical structure of elements. As discussed
earlier, the universe is represented in a highly hierarchical
structure - which is indeed necessary to allow for huge
universes to be functional. Thus a human being may be part of a
house while being inside. But if the human being walks out,
it will be part of the city or the surrounding landscape. In
order to handle the hierarchy change properly, the reparent
agent observes positional changes and notifies all affected
elements when a change occurs. Details can be found in the
API documentation.