This is a cooperation between Wizardry and Steamworks and Rachel A. Umoren to create a contagion-like game for health-education purposes. The main idea is to create a game where various avatars can come in contact with various real-life agents that affect their health. There are certain "negative" area-of-effect (AoE) agents, that make the avatar loose health over time (HoT) and there are other "positive" agents, that make the avatar gain health over time.
For example, the following positive AoE agents are defined:
Value | Description |
---|---|
-2 | wandering of falling in slum water |
-3 | entering a bus |
-3 | riding on a motorcycle |
-1 | standing next to animals |
respectively, the following negative AoE agents are defined:
Value | Description |
---|---|
+3 | sitting in a global health office |
+2 | sitting in a classroom area |
The following rules are defined:
100
health and experiences no regeneration of that health.The elegance of the presented solution comes from the fact that the objects that trigger effects do not have to contain scripts. Just giving primitives on a simulator a special name will be picked-up by the overhead display text. Furthermore, the mini-language that is placed in the name field of the object allows to define both positive and negative effects. Finally, the script uses fast-recursive functions that are able to process surrounding events very fast; a lot of the technolgy comes from the collection of snippets in the Wizardry and Steamworks FUSS LSL repertoire.
The cleanest implementation we found, that is able to grant further expansions on the same scheme of "positive" and "negative" AoE agents, was to have a primitive attached to each participating avatar that dynamically adjusts the health by scanning the surroundings.
This is an elegant solution because it requires only one script placed in the avatar's overhead health display and allows builders to create custom primitives and easily add effects.
The following is an example of an AoE agent, in this case a cow:
that triggers an AoE on the avatars overhead display. As you can observe, the name of the cow object is special: it contains a comma-separated list of values that the overhead display reads when it is in close proximity of the cow.
Technically speaking, the overhead display script from the code section reads the specially crafted name of the object and then interprets it. This is done with the quick-description reader which is altered to interpret any string.
The syntax is a comma-separated values of names to keys, for example:
parameter_1=key_1,parameter_2=key_2,...
and the currently implemented parameters are given by:
Parameter | Description | Example |
---|---|---|
name | the name of the effect | name=cow |
health | the amount of health that will be added to the health of an approaching agent (positive for addition, negative for subtraction) | health=-1 |
range | the range of the AoE, measured in meters (if an avatar is further away than this range, they will not be affected) | range=5 |
Reading the parameters for the previous example, the cow object has the following parameters defined:
name=cow,health=-1,range=5
which means that the cow object will trigger a cow
effect, decreasing the health of the avatar by 1
per second if that avatar is in a 5
meter radius from the avatar.
This allows you to create AoEs with positive effects, for example:
name=hospital,health=5,range=10
which would mean that when the avatar is in a 10
meter range from the hospital object, the avatar will gain 5
health units per second.
You can create stressors (environment effects that are harmful) and anti-stressors (environment effects that are beneficial) which will substract, respectively add points to the health-HUD. This is very easily achieved by playing on the parameters described in the area of effect section.
In this example, we create two boxes, the red one being a stressor and the green one being an anti-stressor. As you can see from the illustration, either one of them either adds or subtracts health from the HUD
by specifying a positive health=5
or a negative value health=-5
in the object's name.
Keep in mind that the graphical representation can be anything you want it to be, just that the name is set to a list of parameters.