Home

Awesome

Serious Games Interactions Model

<!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->

Table of Contents

<!-- END doctoc generated TOC please keep comment here to allow auto update -->

1. Interactions Model

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:

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.

2. Completable

A completable is something a player can start, progress and complete in a game, maybe several times.

2.1. Predefined types

Types included in the xAPI Profile

IdentifierDefinition
Serious-gameRepresents 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.
LevelRepresents a level within a structure level in the game.
QuestRepresents an accomplishable challenge or mission presented inside a game.

Types under consideration

IdentifierDefinition
SessionRepresents a play session. Starts when the player connects to the game and ends with she disconnects.
Stage...
Combat...
Story Node...
Race...
CompletableA completable with no special semantics.

2.2. Actions

Actions included in the xAPI Profile

2.2.1. initialized

The player initialized the completable.

	John Doe initialized "Levels/World 1-1" at "May 24, 2016 15:03:17 UTC"

2.2.2. progressed progress

The player made progress in a completable.

	John Doe progressed 0.5 in "Levels/World 1-1" at "May 24, 2016 15:05:45 UTC"

2.2.3. completed ending

The player finished a completable.

	// 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"

2.3. Requirements and considerations

2.4. Metrics

3. Reachable

A reachable is a virtual space inside the game world a player can access or skip once or multiple times.

3.1. Predefined types

Types included in the xAPI Profile

IdentifierDefinition
ScreenA screen in the game, e.g., the start menu, the options menu.
AreaA general area within the game, that can contain several zones.
ZoneA concrete zone within the game.
CutsceneA non-interactive cutscene in the game (e.g., a video).
ReachableA reachable with no special semantics.

3.2. Actions

Actions included in the xAPI Profile

3.2.1. accessed

The player entered in the reachable.

	John Doe accessed "Screens/Sound Menu" at "Jan 10, 2016 7:47:47 UTC"

3.2.2 skipped

The player skipped a reachable deliberately.

	John Doe skipped "Cutscenes/Intro video" at "Sep 3, 2016 9:17:37 UTC"

3.3. Requirements and considerations

3.4. Metrics

4. Variable

A variable is a meaningful value inside the game world a player can set, increase or decrease.

4.1. Predefined types

Types included in the xAPI Profile

IdentifierDefinition
HealthValue indicating health of the player (e.g., number of hearts, energy bar).
Positionx, y, z the position in the map.

Types under consideration

IdentifierDefinition
ScoreValue indicating the level of success of the player in the game.
CurrencyE.g., coins.
AttemptE.g., remaining lives.
VariableA variable with no special semantics.

4.2. Actions

Actions under consideration

4.2.1. set value

The player set a value in a variable.

	// John Doe turned off music
	John Doe set false "Preferences/Music" at "May 7, 2016 11:22:57 UTC"

4.2.2. increased/decreased value

The player increased/decreased a value in a 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"

4.3. Requirements and considerations

4.4. Metrics

5. Alternative

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.

5.1. Predefined types

Types included in the xAPI Profile

IdentifierDefinition
QuestionA question with several options.
MenuAn options menu.
Dialog-treeAn alternative presented during a conversation with an non-playable character.

Types under consideration

IdentifierDefinition
Path...
ArenaE.g., the race in course in a race game, the stadium in a football game, a mini-game in Mario Party.
AlternativeAn alternative with no special semantics.

5.2. Actions

Actions included in the xAPI Profile

5.2.1. selected

The player selected an option in an alternative.

	John Doe selected "Tutorial Mode" "Menu/Start" at "Dec 31, 2016 13:05:12 UTC"	

5.2.2. unlocked

The player unlocked an unavailable option in an alternative.

	John Doe unlocked "Combat Mode" "Menues/Start" at "Sep 13, 2016 14:13:12 UTC"

5.3. Requirements and considerations

5.4. Metrics

6. Device

A device is a piece of hardware the player interacts with to control the outputs of the game.

6.1. Predefined types

Types included in the xAPI Profile

IdentifierDefinition
MouseA mouse device whose clicks and movement affects the action in an activity.
KeyboardA keyboard with keys.
ControllerA game pad with several buttons and pads.
TouchscreenA touchscreen the player can press.

Types under consideration

IdentifierDefinition
Mouse Button 1Main button in a mouse (usually left button).
Mouse Button 2Secondary button in a mouse (usually right button).
Touch Screen NA touch screen, usually in a mobile device. N is the finger index (for multi touch).

6.2. Actions

Actions included in the xAPI Profile

6.2.1. pressed button/key/position

The player pressed a button, a key or a position in a device.

	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"

6.2.2. released button/key/position

The player released a button, a key or a position in a device.

	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"

6.3. Requirements and considerations

6.4. Metrics

7. Target

A target is a game element the player can interact with.

7.1. Predefined Types

Types included in the xAPI Profile

IdentifierDefinition
EnemyAn opponent inside the game.
Non-player-characterNon-player character.
ItemA collectable.

Types under consideration

IdentifierDefinition
UIA control within the UI.
Weapon...
Vehicle...

7.2. Actions

Actions included in the xAPI Profile

7.2.1. interacted

The player interacted with a target inside the game world.

	John Doe interacted "NPC/Villager" at "May 1, 2016 19:43:48 UTC"

7.2.2. used

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

7.2.3. touched position

The player touched (or clicked) a target inside the game world (e.g., an UI control).

	John Doe touched "UI/StartButton" at "May 15, 2016 19:43:31 UTC"

7.2.4. killed

The player eliminated a target inside the game world.

	John Doe killed "Enemy/Goomba" at "May 24, 2016 19:43:29 UTC"

7.2.5. died because

The player lost a life/attempt.

	John Doe died because "Enemy/Goomba" at "May 24, 2016 19:43:18 UTC"

7.2.6. collected

The player collected a target inside the game world.

	John Doe collected "Weapon/LightSword" at "May 24, 2016 19:43:51 UTC"

7.3. Requirements and considerations

7.4. Metrics

8. Event

This type of action is intended to cover those custom interactions not covered in the rest of the model.

8.1. Predefined types

None.

8.2. Actions

Actions under consideration

8.2.1. performed

The player executed the custom interaction.

	John Doe performed "Event/Jump"	

8.3. Requirements and considerations

8.4. Metrics

9. Compound interaction

To express a complex interaction, formed by simple interactions.

9.1. Predefined types

None.

9.2. Actions

Actions under consideration

9.2.1 began

The complex interaction began. All subsequent interactions will belong to the compound interaction, until an ended action is emitted.

9.2.2 ended

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"

9.3. Requirements and considerations

9.4. Metrics

10. Measure

Used by the game engine to log debug and performance data.

10.1. Predefined types

Types under consideration

IdentifierDefinition
MemoryMemory usage. Value should be an absolute measure.
CPUCPU usage. Value should be a percentage measure.
Frame rateFrame rate of the game at a given moment.
Load timeLoad time for a concrete task, in seconds.

10.2. Actions

Actions under consideration

10.2.1. measured

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"

10.3. Requirements and considerations

10.4. Metrics

11. Game Message

Used by the game engine to log some error in the game.

11.1. Predefined types

Types under consideration

IdentifierDefinition
InfoRelevent events with no meaningful consequences for the game.
DebugA message with debug purposes.
WarningAn undesired happening in the game.
ErrorSomething that was not supposed to happen.
CriticalSomething that should never happen, and it is critical for the correct functioning of the game.

11.2. Actions

Actions under consideration

11.2.1 threw

	John Doe threw "Error/Exception" "ArrayIndexOutBounds es.eucm.countrix.Countrix.java:90"

11.3. Requirements and considerations

11.4. Metrics

12. Summary

Actions included in the xAPI profile

ObjectActionValueValue mandatoryValue TypeValue constraints
CompletableinitializedNo
progressedProgressYesFloatbetween [0, 1]
completedEnding IdentifierNoString-
ReachableaccessedNo
skippedNo
AlternativeselectedOption Id.YesString
unlockedOption Id.YesString
DevicepressedPress value (button, key, position)YesInteger, PositionPosition must be in world coordinates
releasedPress value (button, key, position)YesString, PositionPosition must be in world coordinates
TargetinteractedNo
usedNo

Actions under consideration

ObjectActionValueValue mandatoryValue TypeValue constraints
VariablesetvalueYesBoolean, Number, String
increasedvalueYesNumber
decreasedvalueYesNumber
Targettouched (clicked)Touch positionNoPositionPosition must be in world coordinates
killedNo
died becauseNo
collectedNo
EventperformedCustom value
Compound interactionbeganCompound interaction Id.YesString
endedNo
MeasuremeasuredMeasure valueYesString
Game MessagethrewError messageNoString

13. xAPI Mapping

13.1. Objects

Objects included in the xAPI Profile

IdentifierIRI
Serious-gamehttps://w3id.org/xapi/seriousgames/activity-types/serious-game
Levelhttps://w3id.org/xapi/seriousgames/activity-types/level
Questhttps://w3id.org/xapi/seriousgames/activity-types/quest
Screenhttps://w3id.org/xapi/seriousgames/activity-types/screen
Areahttps://w3id.org/xapi/seriousgames/activity-types/area
Zonehttps://w3id.org/xapi/seriousgames/activity-types/zone
Cutscenehttps://w3id.org/xapi/seriousgames/activity-types/cutscene
Healthhttps://w3id.org/xapi/seriousgames/extensions/health
Positionhttps://w3id.org/xapi/seriousgames/extensions/position
Questionhttp://adlnet.gov/expapi/activities/question
Menuhttps://w3id.org/xapi/seriousgames/activity-types/menu
Dialog-treehttps://w3id.org/xapi/seriousgames/activity-types/dialog-tree
Mousehttps://w3id.org/xapi/seriousgames/activity-types/mouse
Keyboardhttps://w3id.org/xapi/seriousgames/activity-types/keyboard
Controllerhttps://w3id.org/xapi/seriousgames/activity-types/controller
Touchscreenhttps://w3id.org/xapi/seriousgames/activity-types/touchscreen
Enemyhttps://w3id.org/xapi/seriousgames/activity-types/enemy
Non-player-characterhttps://w3id.org/xapi/seriousgames/activity-types/non-player-character
Itemhttps://w3id.org/xapi/seriousgames/activity-types/item

Objects under consideration

IdentifierIRI
Sessionhttps://rage.e-ucm.es/xapi/seriousgames/activities/Session
Stagehttps://rage.e-ucm.es/xapi/seriousgames/activities/Stage
Combathttps://rage.e-ucm.es/xapi/seriousgames/activities/Combat
Story Nodehttps://rage.e-ucm.es/xapi/seriousgames/activities/StoryNode
Racehttps://rage.e-ucm.es/xapi/seriousgames/activities/Race
Completablehttps://rage.e-ucm.es/xapi/seriousgames/activities/Completable
Reachablehttps://rage.e-ucm.es/xapi/seriousgames/activities/Reachable
Scorehttps://rage.e-ucm.es/xapi/seriousgames/activities/Score
Currencyhttps://rage.e-ucm.es/xapi/seriousgames/activities/Currency
Attempthttps://rage.e-ucm.es/xapi/seriousgames/activities/Attempt
Variablehttps://rage.e-ucm.es/xapi/seriousgames/activities/Variable
Pathhttps://rage.e-ucm.es/xapi/seriousgames/activities/Path
Arenahttps://rage.e-ucm.es/xapi/seriousgames/activities/Arena
Alternativehttps://rage.e-ucm.es/xapi/seriousgames/activities/Alternative
Mouse Button 1https://rage.e-ucm.es/xapi/seriousgames/activities/MouseButton1
Mouse Button 2https://rage.e-ucm.es/xapi/seriousgames/activities/MouseButton2
Touch Screen Nhttps://rage.e-ucm.es/xapi/seriousgames/activities/TouchScreenN
UIhttps://rage.e-ucm.es/xapi/seriousgames/activities/UI
Weaponhttps://rage.e-ucm.es/xapi/seriousgames/activities/Weapon
Vehiclehttps://rage.e-ucm.es/xapi/seriousgames/activities/Vehicle
Memoryhttps://rage.e-ucm.es/xapi/seriousgames/activities/Memory
CPUhttps://rage.e-ucm.es/xapi/seriousgames/activities/CPU
Frame ratehttps://rage.e-ucm.es/xapi/seriousgames/activities/Framerate
Load timehttps://rage.e-ucm.es/xapi/seriousgames/activities/Loadtime
Infohttps://rage.e-ucm.es/xapi/seriousgames/activities/Info
Debughttps://rage.e-ucm.es/xapi/seriousgames/activities/Debug
Warninghttps://rage.e-ucm.es/xapi/seriousgames/activities/Warning
Errorhttps://rage.e-ucm.es/xapi/seriousgames/activities/Error
Criticalhttps://rage.e-ucm.es/xapi/seriousgames/activities/Critical

13.2. Verbs

Verbs included in the xAPI Profile

IdentifierIRI
initializedhttp://adlnet.gov/expapi/verbs/initialized
progressedhttp://adlnet.gov/expapi/verbs/progressed
completedhttp://adlnet.gov/expapi/verbs/completed
accessedhttps://w3id.org/xapi/seriousgames/verbs/accessed
skippedhttp://id.tincanapi.com/verb/skipped
selectedhttps://w3id.org/xapi/adb/verbs/selected
unlockedhttps://w3id.org/xapi/seriousgames/verbs/unlocked
pressedhttps://w3id.org/xapi/seriousgames/verbs/pressed
releasedhttps://w3id.org/xapi/seriousgames/verbs/released
interactedhttp://adlnet.gov/expapi/verbs/interacted
usedhttps://w3id.org/xapi/seriousgames/verbs/used

Verbs under consideration

IdentifierIRI
sethttps://rage.e-ucm.es/xapi/seriousgames/verbs/set
increasedhttps://rage.e-ucm.es/xapi/seriousgames/verbs/increased
decreasedhttps://rage.e-ucm.es/xapi/seriousgames/verbs/decreased
touchedhttp://future-learning.info/xAPI/verb/pressed
killedhttps://rage.e-ucm.es/xapi/seriousgames/verbs/killed
died becausehttps://rage.e-ucm.es/xapi/seriousgames/verbs/died
collectedhttps://rage.e-ucm.es/xapi/seriousgames/verbs/collected
performedhttps://rage.e-ucm.es/xapi/seriousgames/verbs/performed
beganhttps://rage.e-ucm.es/xapi/seriousgames/verbs/began
endedhttps://rage.e-ucm.es/xapi/seriousgames/verbs/ended
measuredhttps://rage.e-ucm.es/xapi/seriousgames/verbs/measured
threwhttps://rage.e-ucm.es/xapi/seriousgames/verbs/threw

13.3 Values

Values included in the xAPI Profile

ParameterExtension IRIValue
Healthhttps://w3id.org/xapi/seriousgames/extensions/healthNumber between [0, 1]
Positionhttps://w3id.org/xapi/seriousgames/extensions/positionObject with attributes x, y and z
Progresshttps://w3id.org/xapi/seriousgames/extensions/progressNumber between [0, 1]

Values under consideration

ParameterExtension IRIValue
Variable value / Device buttonhttps://rage.e-ucm.es/xapi/ext/valueNumber, String, Boolean, Object
Variable increase/decreasehttps://rage.e-ucm.es/xapi/ext/valueNumber
Measure labelhttps://rage.e-ucm.es/xapi/ext/labelString

13.4 Example statements

13.4.1 Completable

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"
}

13.4.1 Reachable

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"
}

13.4.2. Variables

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"
}

13.4.3. Alternatives

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"
}