Skip to content

Latest commit

 

History

History
983 lines (742 loc) · 28.9 KB

README.md

File metadata and controls

983 lines (742 loc) · 28.9 KB

Serious Games Interactions Model

Table of Contents

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:

  • 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.

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

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.

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.

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

2.2.3. completed ending

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"

2.3. Requirements and considerations

  • 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.

2.4. Metrics

  • Is completed / Times completed
  • Progress evolution
  • Endings count
  • Times to complete
  • Mean, max and min time to complete

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

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.

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

  • A skipped action MUST be preceded by a accessed action of the same reachable.

3.4. Metrics

  • Times accessed
  • Time spent in it
  • Times skipped
  • Time to be skipped
  • Access order (navigation tree)

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

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.

4.2. Actions

Actions under consideration

4.2.1. set value

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"

4.2.2. increased/decreased value

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"

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

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.

5.2. Actions

Actions included in the xAPI Profile

5.2.1. selected

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"	

5.2.2. unlocked

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"

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

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).

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.

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

6.2.2. released button/key/position

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"

6.3. Requirements and considerations

  • 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.

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

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 ...

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).

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

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

  • All the interactions are emitted at the same exact timestamp
  • A compound interaction can have sub-compound interaction

9.4. Metrics

10. Measure

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

10.1. Predefined types

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.

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

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.

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

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

13. xAPI Mapping

13.1. Objects

Objects included in the xAPI Profile

Identifier IRI
Serious-game https://w3id.org/xapi/seriousgames/activity-types/serious-game
Level https://w3id.org/xapi/seriousgames/activity-types/level
Quest https://w3id.org/xapi/seriousgames/activity-types/quest
Screen https://w3id.org/xapi/seriousgames/activity-types/screen
Area https://w3id.org/xapi/seriousgames/activity-types/area
Zone https://w3id.org/xapi/seriousgames/activity-types/zone
Cutscene https://w3id.org/xapi/seriousgames/activity-types/cutscene
Health https://w3id.org/xapi/seriousgames/extensions/health
Position https://w3id.org/xapi/seriousgames/extensions/position
Question http://adlnet.gov/expapi/activities/question
Menu https://w3id.org/xapi/seriousgames/activity-types/menu
Dialog-tree https://w3id.org/xapi/seriousgames/activity-types/dialog-tree
Mouse https://w3id.org/xapi/seriousgames/activity-types/mouse
Keyboard https://w3id.org/xapi/seriousgames/activity-types/keyboard
Controller https://w3id.org/xapi/seriousgames/activity-types/controller
Touchscreen https://w3id.org/xapi/seriousgames/activity-types/touchscreen
Enemy https://w3id.org/xapi/seriousgames/activity-types/enemy
Non-player-character https://w3id.org/xapi/seriousgames/activity-types/non-player-character
Item https://w3id.org/xapi/seriousgames/activity-types/item

Objects under consideration

Identifier IRI
Session https://rage.e-ucm.es/xapi/seriousgames/activities/Session
Stage https://rage.e-ucm.es/xapi/seriousgames/activities/Stage
Combat https://rage.e-ucm.es/xapi/seriousgames/activities/Combat
Story Node https://rage.e-ucm.es/xapi/seriousgames/activities/StoryNode
Race https://rage.e-ucm.es/xapi/seriousgames/activities/Race
Completable https://rage.e-ucm.es/xapi/seriousgames/activities/Completable
Reachable https://rage.e-ucm.es/xapi/seriousgames/activities/Reachable
Score https://rage.e-ucm.es/xapi/seriousgames/activities/Score
Currency https://rage.e-ucm.es/xapi/seriousgames/activities/Currency
Attempt https://rage.e-ucm.es/xapi/seriousgames/activities/Attempt
Variable https://rage.e-ucm.es/xapi/seriousgames/activities/Variable
Path https://rage.e-ucm.es/xapi/seriousgames/activities/Path
Arena https://rage.e-ucm.es/xapi/seriousgames/activities/Arena
Alternative https://rage.e-ucm.es/xapi/seriousgames/activities/Alternative
Mouse Button 1 https://rage.e-ucm.es/xapi/seriousgames/activities/MouseButton1
Mouse Button 2 https://rage.e-ucm.es/xapi/seriousgames/activities/MouseButton2
Touch Screen N https://rage.e-ucm.es/xapi/seriousgames/activities/TouchScreenN
UI https://rage.e-ucm.es/xapi/seriousgames/activities/UI
Weapon https://rage.e-ucm.es/xapi/seriousgames/activities/Weapon
Vehicle https://rage.e-ucm.es/xapi/seriousgames/activities/Vehicle
Memory https://rage.e-ucm.es/xapi/seriousgames/activities/Memory
CPU https://rage.e-ucm.es/xapi/seriousgames/activities/CPU
Frame rate https://rage.e-ucm.es/xapi/seriousgames/activities/Framerate
Load time https://rage.e-ucm.es/xapi/seriousgames/activities/Loadtime
Info https://rage.e-ucm.es/xapi/seriousgames/activities/Info
Debug https://rage.e-ucm.es/xapi/seriousgames/activities/Debug
Warning https://rage.e-ucm.es/xapi/seriousgames/activities/Warning
Error https://rage.e-ucm.es/xapi/seriousgames/activities/Error
Critical https://rage.e-ucm.es/xapi/seriousgames/activities/Critical

13.2. Verbs

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

Identifier IRI
set https://rage.e-ucm.es/xapi/seriousgames/verbs/set
increased https://rage.e-ucm.es/xapi/seriousgames/verbs/increased
decreased https://rage.e-ucm.es/xapi/seriousgames/verbs/decreased
touched http://future-learning.info/xAPI/verb/pressed
killed https://rage.e-ucm.es/xapi/seriousgames/verbs/killed
died because https://rage.e-ucm.es/xapi/seriousgames/verbs/died
collected https://rage.e-ucm.es/xapi/seriousgames/verbs/collected
performed https://rage.e-ucm.es/xapi/seriousgames/verbs/performed
began https://rage.e-ucm.es/xapi/seriousgames/verbs/began
ended https://rage.e-ucm.es/xapi/seriousgames/verbs/ended
measured https://rage.e-ucm.es/xapi/seriousgames/verbs/measured
threw https://rage.e-ucm.es/xapi/seriousgames/verbs/threw

13.3 Values

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

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