Table of Contents
- 1. Interactions Model
- 2. Completable
- 3. Reachable
- 4. Variable
- 5. Alternative
- 6. Device
- 7. Target
- 8. Event
- 9. Compound interaction
- 10. Measure
- 11. Game Message
- 12. Summary
- 13. xAPI Mapping
A serious game is defined by a finite set of game objects. A game object represents an element of the game on which players can perform one or several types of interactions. Some examples of player's interactions are:
- start or complete (interaction) a level (game object)
- increase or decrease (interaction) the number of coins (game object)
- select or unlock (interaction) a power-up (game object)
A gameplay is the flow of interactions that a player performs over these game objects in a sequential order.
Using JsonSchema, a single interaction has the following structure:
{
"title": "Interaction",
"type": "object",
"properties": {
"player": {
"type": "object",
"description": "The player that generated the interaction"
},
"action": {
"type": "string",
"description": "The type of interaction performed by the player"
},
"object": {
"type": "string",
"description": "Objective of the player's action"
},
"value": {
"type": "object",
"description": "Parameters of the action"
},
"timestamp": {
"type": "string",
"description": "Date and time at which the interaction occurred, formatted according to ISO 8601 including its time zone."
}
},
"required": ["player", "action", "object", "timestamp"]
}
The rest of the document defines the set of game objects and interactions considered by the RAGE Serious Games Interactions Model.
A completable is something a player can start, progress and complete in a game, maybe several times.
Types included in the xAPI Profile
Identifier | Definition |
---|---|
Serious-game | Represents the game as a whole. A game is started the first time you play it, and is completed when you complete a basic story loop. |
Level | Represents a level within a structure level in the game. |
Quest | Represents an accomplishable challenge or mission presented inside a game. |
Types under consideration
Identifier | Definition |
---|---|
Session | Represents a play session. Starts when the player connects to the game and ends with she disconnects. |
Stage | ... |
Combat | ... |
Story Node | ... |
Race | ... |
Completable | A completable with no special semantics. |
Actions included in the xAPI Profile
The player initialized the completable.
John Doe initialized "Levels/World 1-1" at "May 24, 2016 15:03:17 UTC"
The player made progress in a completable.
value
is a mandatory float indicating the absolute progress in the completion. Its value must be between[0, 1]
.
John Doe progressed 0.5 in "Levels/World 1-1" at "May 24, 2016 15:05:45 UTC"
The player finished a completable.
value
is an optional identifier indicating the ending of the completion, in the case a completable can be finished in several ways. Each identifier should represent and independent ending.
// John Doe completed the game accessing to a good ending
John Doe completed with "Princess Rescued" in "Super Mario Bros." at "Jan 20, 2016 12:35:13 UTC"
// John Doe game overed in the game
John Doe completed with "Game Over" in "Super Mario Bros." at "Jan 20, 2016 12:35:13 UTC"
- A completed action MUST be preceded by a started action of the same completable object.
- A completed action MUST be emitted before emitting a started action of an already started completable object.
- A progressed action with value
0
is not equivalent to a started action. - A progressed action with value
1
is not equivalent to a completed action.
- Is completed / Times completed
- Progress evolution
- Endings count
- Times to complete
- Mean, max and min time to complete
A reachable is a virtual space inside the game world a player can access or skip once or multiple times.
Types included in the xAPI Profile
Identifier | Definition |
---|---|
Screen | A screen in the game, e.g., the start menu, the options menu. |
Area | A general area within the game, that can contain several zones. |
Zone | A concrete zone within the game. |
Cutscene | A non-interactive cutscene in the game (e.g., a video). |
Reachable | A reachable with no special semantics. |
Actions included in the xAPI Profile
The player entered in the reachable.
John Doe accessed "Screens/Sound Menu" at "Jan 10, 2016 7:47:47 UTC"
The player skipped a reachable deliberately.
John Doe skipped "Cutscenes/Intro video" at "Sep 3, 2016 9:17:37 UTC"
- A skipped action MUST be preceded by a accessed action of the same reachable.
- Times accessed
- Time spent in it
- Times skipped
- Time to be skipped
- Access order (navigation tree)
A variable is a meaningful value inside the game world a player can set, increase or decrease.
Types included in the xAPI Profile
Identifier | Definition |
---|---|
Health | Value indicating health of the player (e.g., number of hearts, energy bar). |
Position | x, y, z the position in the map. |
Types under consideration
Identifier | Definition |
---|---|
Score | Value indicating the level of success of the player in the game. |
Currency | E.g., coins. |
Attempt | E.g., remaining lives. |
Variable | A variable with no special semantics. |
Actions under consideration
The player set a value in a variable.
value
is a string, a boolean, a number or an object, with the current value for the variable.
// John Doe turned off music
John Doe set false "Preferences/Music" at "May 7, 2016 11:22:57 UTC"
The player increased/decreased a value in a variable.
value
is a number with the increase/decrease for the variable.
// John Doe took 2 coins
John Doe increased 2 "Currencies/Coins" at "May 7, 2016 11:22:57 UTC"
// John Doe lost a life
John Doe decreased 1 "Attempts/Lives" at "May 7, 2016 11:24:17 UTC"
An alternative is a decision the player faces in the game, where she has to choose only one option among several. Options in alternatives can be unlocked.
Types included in the xAPI Profile
Identifier | Definition |
---|---|
Question | A question with several options. |
Menu | An options menu. |
Dialog-tree | An alternative presented during a conversation with an non-playable character. |
Types under consideration
Identifier | Definition |
---|---|
Path | ... |
Arena | E.g., the race in course in a race game, the stadium in a football game, a mini-game in Mario Party. |
Alternative | An alternative with no special semantics. |
Actions included in the xAPI Profile
The player selected an option in an alternative.
value
is the identifier of the selected option.
John Doe selected "Tutorial Mode" "Menu/Start" at "Dec 31, 2016 13:05:12 UTC"
The player unlocked an unavailable option in an alternative.
value
is the identifier of the unlocked option.
John Doe unlocked "Combat Mode" "Menues/Start" at "Sep 13, 2016 14:13:12 UTC"
A device is a piece of hardware the player interacts with to control the outputs of the game.
Types included in the xAPI Profile
Identifier | Definition |
---|---|
Mouse | A mouse device whose clicks and movement affects the action in an activity. |
Keyboard | A keyboard with keys. |
Controller | A game pad with several buttons and pads. |
Touchscreen | A touchscreen the player can press. |
Types under consideration
Identifier | Definition |
---|---|
Mouse Button 1 | Main button in a mouse (usually left button). |
Mouse Button 2 | Secondary button in a mouse (usually right button). |
Touch Screen N | A touch screen, usually in a mobile device. N is the finger index (for multi touch). |
Actions included in the xAPI Profile
The player pressed a button, a key or a position in a device.
value
is the value of the button, key or position pressed by the player. If the value is a position, it should be in the game coordinates system, not in the screen coordinates system.
John Doe pressed (50, 247) "Mouse Button 1" at "Jan 21, 2016 19:43:22 UTC"
John Doe pressed "Button_X" "Controller" at "Jan 21, 2016 19:43:42 UTC"
The player released a button, a key or a position in a device.
value
of the button, key or position released by the player. If the value is a position, it should be in the game coordinates system, not in the screen coordinates system.
John Doe released (59, 267) "Mouse Button 1" at "Jan 21, 2016 19:43:13 UTC"
John Doe released "Button_X" "Controller" at "Jan 21, 2016 19:43:43 UTC"
- A pressed action must be eventually followed by a released action over the same device. A pressed cannot be emitted if there is a pending released action.
A target is a game element the player can interact with.
Types included in the xAPI Profile
Identifier | Definition |
---|---|
Enemy | An opponent inside the game. |
Non-player-character | Non-player character. |
Item | A collectable. |
Types under consideration
Identifier | Definition |
---|---|
UI | A control within the UI. |
Weapon | ... |
Vehicle | ... |
Actions included in the xAPI Profile
The player interacted with a target inside the game world.
John Doe interacted "NPC/Villager" at "May 1, 2016 19:43:48 UTC"
The player used a a target inside the game world.
John Doe used "Item/HealthPotion" at "May 24, 2016 19:43:31 UTC"
Actions under consideration
The player touched (or clicked) a target inside the game world (e.g., an UI control).
value
is the optional position of the player touch/click. It should be in the game coordinates system.
John Doe touched "UI/StartButton" at "May 15, 2016 19:43:31 UTC"
The player eliminated a target inside the game world.
John Doe killed "Enemy/Goomba" at "May 24, 2016 19:43:29 UTC"
The player lost a life/attempt.
John Doe died because "Enemy/Goomba" at "May 24, 2016 19:43:18 UTC"
The player collected a target inside the game world.
John Doe collected "Weapon/LightSword" at "May 24, 2016 19:43:51 UTC"
This type of action is intended to cover those custom interactions not covered in the rest of the model.
None.
Actions under consideration
The player executed the custom interaction.
John Doe performed "Event/Jump"
To express a complex interaction, formed by simple interactions.
None.
Actions under consideration
The complex interaction began. All subsequent interactions will belong to the compound interaction, until an ended action is emitted.
Marks the end of tye complex interaction.
// John Doe bought a health potion and recovered health
John Doe began "Buy health potion" at "May 24, 2016 19:43:11 UTC"
John Doe decreased 20 "Currency/Coins" at "May 24, 2016 19:43:11 UTC"
John Doe collected "Items/Health Potion" at "May 24, 2016 19:43:11 UTC"
John Doe used "Items/Health Potion" at "May 24, 2016 19:43:11 UTC"
John Doe increased 5 "Health/HP" at "May 24, 2016 19:43:11 UTC"
John Doe ended "Buy health potion" at "May 24, 2016 19:43:11 UTC"
- All the interactions are emitted at the same exact timestamp
- A compound interaction can have sub-compound interaction
Used by the game engine to log debug and performance data.
Types under consideration
Identifier | Definition |
---|---|
Memory | Memory usage. Value should be an absolute measure. |
CPU | CPU usage. Value should be a percentage measure. |
Frame rate | Frame rate of the game at a given moment. |
Load time | Load time for a concrete task, in seconds. |
Actions under consideration
The game engine measured a value for a given performance metric.
John Doe measured "LoadTime/Scene1" 0.2 at "May 24, 2016 19:43:37 UTC"
Used by the game engine to log some error in the game.
Types under consideration
Identifier | Definition |
---|---|
Info | Relevent events with no meaningful consequences for the game. |
Debug | A message with debug purposes. |
Warning | An undesired happening in the game. |
Error | Something that was not supposed to happen. |
Critical | Something that should never happen, and it is critical for the correct functioning of the game. |
Actions under consideration
John Doe threw "Error/Exception" "ArrayIndexOutBounds es.eucm.countrix.Countrix.java:90"
Actions included in the xAPI profile
Object | Action | Value | Value mandatory | Value Type | Value constraints |
---|---|---|---|---|---|
Completable | initialized | No | |||
progressed | Progress | Yes | Float | between [0, 1] |
|
completed | Ending Identifier | No | String | - | |
Reachable | accessed | No | |||
skipped | No | ||||
Alternative | selected | Option Id. | Yes | String | |
unlocked | Option Id. | Yes | String | ||
Device | pressed | Press value (button, key, position) | Yes | Integer, Position | Position must be in world coordinates |
released | Press value (button, key, position) | Yes | String, Position | Position must be in world coordinates | |
Target | interacted | No | |||
used | No |
Actions under consideration
Object | Action | Value | Value mandatory | Value Type | Value constraints |
---|---|---|---|---|---|
Variable | set | value | Yes | Boolean, Number, String | |
increased | value | Yes | Number | ||
decreased | value | Yes | Number | ||
Target | touched (clicked) | Touch position | No | Position | Position must be in world coordinates |
killed | No | ||||
died because | No | ||||
collected | No | ||||
Event | performed | Custom value | |||
Compound interaction | began | Compound interaction Id. | Yes | String | |
ended | No | ||||
Measure | measured | Measure value | Yes | String | |
Game Message | threw | Error message | No | String |
Objects included in the xAPI Profile
Objects under consideration
Verbs included in the xAPI Profile
Identifier | IRI |
---|---|
initialized | http://adlnet.gov/expapi/verbs/initialized |
progressed | http://adlnet.gov/expapi/verbs/progressed |
completed | http://adlnet.gov/expapi/verbs/completed |
accessed | https://w3id.org/xapi/seriousgames/verbs/accessed |
skipped | http://id.tincanapi.com/verb/skipped |
selected | https://w3id.org/xapi/adb/verbs/selected |
unlocked | https://w3id.org/xapi/seriousgames/verbs/unlocked |
pressed | https://w3id.org/xapi/seriousgames/verbs/pressed |
released | https://w3id.org/xapi/seriousgames/verbs/released |
interacted | http://adlnet.gov/expapi/verbs/interacted |
used | https://w3id.org/xapi/seriousgames/verbs/used |
Verbs under consideration
Values included in the xAPI Profile
Parameter | Extension IRI | Value |
---|---|---|
Health | https://w3id.org/xapi/seriousgames/extensions/health | Number between [0, 1] |
Position | https://w3id.org/xapi/seriousgames/extensions/position | Object with attributes x, y and z |
Progress | https://w3id.org/xapi/seriousgames/extensions/progress | Number between [0, 1] |
Values under consideration
Parameter | Extension IRI | Value |
---|---|---|
Variable value / Device button | https://rage.e-ucm.es/xapi/ext/value | Number, String, Boolean, Object |
Variable increase/decrease | https://rage.e-ucm.es/xapi/ext/value | Number |
Measure label | https://rage.e-ucm.es/xapi/ext/label | String |
initialized
John Doe initialized "Levels/World 1-1" at "May 24, 2016 15:03:47 UTC"
{
"actor": { "..." },
"verb": {
"id": "http://adlnet.gov/expapi/verbs/initialized"
},
"object": {
"id": "http://example.com/games/SuperMarioBros/Levels/World1-1",
"definition": {
"type": "http://curatr3.com/define/type/level"
}
},
"timestamp": "2016-05-24T15:03:47Z"
}
progressed
John Doe progressed 0.5 in "Levels/World 1-1" at "May 24, 2016 15:05:49 UTC"
{
"actor": { "..." },
"verb": {
"id": "http://adlnet.gov/expapi/verbs/progressed"
},
"object": {
"id": "http://example.com/games/SuperMarioBros/Levels/World1-1",
"definition": {
"type": "http://curatr3.com/define/type/level"
}
},
"result": {
"extensions": {
"https://rage.e-ucm.es/xapi/ext/progress": 0.5
}
},
"timestamp": "2016-05-24T15:05:49Z"
}
completed
John Doe completed with "Game Over" in "Super Mario Bros." at "Jan 20, 2016 12:35:13 UTC"
{
"actor": { "..." },
"verb": {
"id": "http://adlnet.gov/expapi/verbs/completed"
},
"object": {
"id": "http://example.com/games/SuperMarioBros/Levels/World1-1",
"definition": {
"type": "http://curatr3.com/define/type/level"
}
},
"result": {
"extensions": {
"https://rage.e-ucm.es/xapi/ext/value": "Game Over"
}
},
"timestamp": "2016-01-20T12:35:13Z"
}
accessed
John Doe accessed "Screens/Sound Menu" at "Jan 10, 2016 7:47:47 UTC"
{
"actor": { "..." },
"verb": {
"id": "http://activitystrea.ms/schema/1.0/access"
},
"object": {
"id": "http://example.com/games/SuperMarioBros/Screens/SoundMenu",
"definition": {
"type": "https://rage.e-ucm.es/xapi/seriousgames/activities/Screen"
}
},
"timestamp": "2016-01-10T07:47:47Z"
}
skipped
John Doe skipped "Cutscenes/Intro video" at "Sep 3, 2016 9:17:37 UTC"
{
"actor": { "..." },
"verb": {
"id": "http://id.tincanapi.com/verb/skipped"
},
"object": {
"id": "http://example.com/games/SuperMarioBros/Cutscenes/IntroVideo",
"definition": {
"type": "https://rage.e-ucm.es/xapi/seriousgames/activities/Cutscene"
}
},
"timestamp": "2016-09-03T09:17:37Z"
}
set
John Doe set false "Preferences/Music" at "May 7, 2016 11:22:57 UTC"
{
"actor": { "..." },
"verb": {
"id": "https://rage.e-ucm.es/xapi/seriousgames/verbs/set"
},
"object": {
"id": "http://example.com/games/SuperMarioBros/Preferences/Music",
"definition": {
"type": "https://rage.e-ucm.es/xapi/seriousgames/activities/Preference"
}
},
"result": {
"extensions": {
"https://rage.e-ucm.es/xapi/ext/value": false
}
},
"timestamp": "2016-05-07T11:22:57Z"
}
decreased
John Doe decreased 1 "Attempts/Lives" at "May 7, 2016 11:24:47 UTC"
{
"actor": { "..." },
"verb": {
"id": "https://rage.e-ucm.es/xapi/seriousgames/verbs/decreased"
},
"object": {
"id": "http://example.com/games/SuperMarioBros/Attempts/Lives",
"definition": {
"type": "https://rage.e-ucm.es/xapi/seriousgames/activities/Attempt"
}
},
"result": {
"extensions": {
"https://rage.e-ucm.es/xapi/ext/value": 1
}
},
"timestamp": "2016-05-07T11:24:47Z"
}
selected
John Doe selected "Tutorial Mode" "Menu/Start" at "Dec 31, 2016 13:05:12 UTC"
{
"actor": { "..." },
"verb": {
"id": "http://adlnet.gov/expapi/verbs/preferred"
},
"object": {
"id": "http://example.com/games/SuperMarioBros/Alternatives/Menu_Start",
"definition": {
"type": "https://rage.e-ucm.es/xapi/seriousgames/activities/Alternative"
}
},
"result": {
"response": "Tutorial Mode"
},
"timestamp": "2016-12-31T13:05:12Z"
}