To simulate a large event, the historian just needs to drop a new ‘happiness’ cube that acts as a global attractor for
all NPC. More interestingly, this cube can be attached to a moving NPC — say, the priest leading a processional —
and then the other NPC will follow that priest, in the hope of getting some happiness that way.
The interactions between NPC belonging to different classes are handled by the interaction module. NPC belong
to a certain ‘class’ — nobleman, priest, peasant, merchant, foreigner, beggar and so forth — and a webpage, tied into
the interaction module (and which can also be accessed while the historian is logged in to the virtual world), will
present a matrix of behaviour between classes. Initially, simple friend/foe/neutral relationships will be available. For
example, noblemen and peasants are ‘foes’ — peasants will avoid to cross their paths with noblemen, but if they
collide for some reason (a poor action selection by the GA, or due to some unpredictable ‘glitch’ in the
communications, which did not capture the movement of the nobleman towards the peasant in time to avoid a
collision), the nobleman hits the peasant, and it loses energy. By contrast, priests are neutral towards peasants; if a
peasant collides with them, priests will grant them a blessing (raising happiness for a slight amount).
While the profiles are fixed and programmed in advance, the interaction matrix is not, and is open for the
historians to fine-tune. For instance, further development might include an analogue range, from -1.0
(‘hate/contempt’) to +1.0 (‘love/awe’). It is also possible that the interaction matrix acts as a ‘template’ for a specific
class, but gets instantiated for each individual NPC, and adjusted according to the interactions they have. In that
case, behaviour could subtly change among individuals, like having a nobleman that ordinarily does not strike
peasants even if they cross their paths. Over time, repeated behaviour like this could make peasants stop and greet
that specific nobleman when they are nearby, instead of running away, but still fear other noblemen and continue to
avoid all others. Such improvements are left for future work.
7. Expanding the concept
Further refinement of the engine can lead to more interesting behaviour modelling. A first change would be to
make each cube work only for a single NPC — when the first NPC collides with the cube, it sits down on it,
activating it, and preventing other NPCs to ‘use’ this cube. Sitting is a special function in SL/OpenSimulator which
also can trigger animations, so it could be used to give visual clues to visitors: one NPC at a money cube will
perform some kind of work by running the proper animation. A yellow cube at a tavern or market stall will animate
the avatar with eating gestures. The home cube will put the NPC to sleep.
But the point is to allow historians to create more complex behaviours. For example, imagine a NPC is working at
the docks, and the GA triggers the need to walk around in search of some energy. There might be a nearby yellow
cube, and the NPC move towards it, expecting it to be ‘free’. But in the meantime, another NPC reaches that same
spot first. The NPC now has two options: wait until the cube is free again, or search for a different one — which will
result in a loss of further energy — or return to work, or return home. Whatever the choice, it is clear that the ‘daily
routine’ of a NPC can quickly become anything but ‘routine’ — it becomes much more complex and unpredictable,
but, and this is worth noticing, it does not become random or chaotic. By identifying the current active goals from a
web backend, historians can see what is currently been triggered, and see if the expected behaviour is consistent with
the simulation parameters — but changing conditions will often lead to surprising and unpredictable results, which
will make the simulation much more convincing.
Contrast this to typical rule-based models. Most of them add a degree of ‘randomness’ to allow for diversity. But
human observers will quickly understand the patterns: NPCs will attempt to repeat their usual tasks over and over
again, but, at some point, they might not (because of the random factor). Bogdanovych et al. [44] use this approach,
by breaking up specific goals in sections, which NPCs are expected to follow, but allow for exceptions to be
simulated using a random number generator, forcing NPCs to temporarily follow a different set of rules instead.
In the scenario described in this article there is nothing that tells the NPC ‘you have to go to work first, then wait
a bit, move to the nearest tavern, get back to work, and if you have energy left and feel unhappy, seek a place of
entertainment before returning home’ — all this would require lots of rules to be written beforehand, and, no matter
how ‘simple’ these rules are (or how easy to assemble them together using a programming language), it still means
that historians would have to painfully assemble them and model each interaction for all cases and exceptions.
Instead, the proposed framework offers an alternative way to accomplish similar simulation detail without the
pain of complex programming. Historians only need to drop cubes around, move them into place, set a slider, and
To simulate a large event, the historian just needs to drop a new ‘happiness’ cube that acts as a global attractor for
all NPC. More interestingly, this cube can be attached to a moving NPC — say, the priest leading a processional —
and then the other NPC will follow that priest, in the hope of getting some happiness that way.
The interactions between NPC belonging to different classes are handled by the interaction module. NPC belong
to a certain ‘class’ — nobleman, priest, peasant, merchant, foreigner, beggar and so forth — and a webpage, tied into
the interaction module (and which can also be accessed while the historian is logged in to the virtual world), will
present a matrix of behaviour between classes. Initially, simple friend/foe/neutral relationships will be available. For
example, noblemen and peasants are ‘foes’ — peasants will avoid to cross their paths with noblemen, but if they
collide for some reason (a poor action selection by the GA, or due to some unpredictable ‘glitch’ in the
communications, which did not capture the movement of the nobleman towards the peasant in time to avoid a
collision), the nobleman hits the peasant, and it loses energy. By contrast, priests are neutral towards peasants; if a
peasant collides with them, priests will grant them a blessing (raising happiness for a slight amount).
While the profiles are fixed and programmed in advance, the interaction matrix is not, and is open for the
historians to fine-tune. For instance, further development might include an analogue range, from -1.0
(‘hate/contempt’) to +1.0 (‘love/awe’). It is also possible that the interaction matrix acts as a ‘template’ for a specific
class, but gets instantiated for each individual NPC, and adjusted according to the interactions they have. In that
case, behaviour could subtly change among individuals, like having a nobleman that ordinarily does not strike
peasants even if they cross their paths. Over time, repeated behaviour like this could make peasants stop and greet
that specific nobleman when they are nearby, instead of running away, but still fear other noblemen and continue to
avoid all others. Such improvements are left for future work.
7. Expanding the concept
Further refinement of the engine can lead to more interesting behaviour modelling. A first change would be to
make each cube work only for a single NPC — when the first NPC collides with the cube, it sits down on it,
activating it, and preventing other NPCs to ‘use’ this cube. Sitting is a special function in SL/OpenSimulator which
also can trigger animations, so it could be used to give visual clues to visitors: one NPC at a money cube will
perform some kind of work by running the proper animation. A yellow cube at a tavern or market stall will animate
the avatar with eating gestures. The home cube will put the NPC to sleep.
But the point is to allow historians to create more complex behaviours. For example, imagine a NPC is working at
the docks, and the GA triggers the need to walk around in search of some energy. There might be a nearby yellow
cube, and the NPC move towards it, expecting it to be ‘free’. But in the meantime, another NPC reaches that same
spot first. The NPC now has two options: wait until the cube is free again, or search for a different one — which will
result in a loss of further energy — or return to work, or return home. Whatever the choice, it is clear that the ‘daily
routine’ of a NPC can quickly become anything but ‘routine’ — it becomes much more complex and unpredictable,
but, and this is worth noticing, it does not become random or chaotic. By identifying the current active goals from a
web backend, historians can see what is currently been triggered, and see if the expected behaviour is consistent with
the simulation parameters — but changing conditions will often lead to surprising and unpredictable results, which
will make the simulation much more convincing.
Contrast this to typical rule-based models. Most of them add a degree of ‘randomness’ to allow for diversity. But
human observers will quickly understand the patterns: NPCs will attempt to repeat their usual tasks over and over
again, but, at some point, they might not (because of the random factor). Bogdanovych et al. [44] use this approach,
by breaking up specific goals in sections, which NPCs are expected to follow, but allow for exceptions to be
simulated using a random number generator, forcing NPCs to temporarily follow a different set of rules instead.
In the scenario described in this article there is nothing that tells the NPC ‘you have to go to work first, then wait
a bit, move to the nearest tavern, get back to work, and if you have energy left and feel unhappy, seek a place of
entertainment before returning home’ — all this would require lots of rules to be written beforehand, and, no matter
how ‘simple’ these rules are (or how easy to assemble them together using a programming language), it still means
that historians would have to painfully assemble them and model each interaction for all cases and exceptions.
Instead, the proposed framework offers an alternative way to accomplish similar simulation detail without the
pain of complex programming. Historians only need to drop cubes around, move them into place, set a slider, and
การแปล กรุณารอสักครู่..
