Flow to use the default developer dashboard
- Visualizations we want to see
- Analysis performed to obtain the visualizations
- xAPI traces required for the analysis
- Tracker calls
The complete description of the visualizations included in the default dashboard available for developers
can be seen on the developer dashboard wiki page. As a recap, the visualizations are the following:
- Number of times each cutscene has been accessed
- Number of times each completable has been completed
- Correct/Incorrect alternatives selected in questions
- Number of players
- Number of times each accessible has been accessed
- xAPI verbs use over time
- Total number of times each xAPI verb has been used
- Times each video has been seen or skipped
- Times in completables
- Traces received over time
The following sections summarize the process to obtain these visualizations from the end backwards, that is, from the visualizations we want to achieved, we go back to the analysis that need to be performed to obtain those visualizations, then to the Experience API (xAPI) traces that are required for those analysis and finally, the calls that developers need to make to the tracker and the specific parameters required in those calls to successfully obtain those xAPI traces.
From the xAPI traces collected, information about the version of the game and the game-play of the student is added (a student can have multiple game-plays). Also, information from the xapi-seriousgames JSON structure is extracted. This information is transformed to a simple JSON document that is then analyzed by the RAGE Analytics Real-time.
The real-time analysis uses two indices: sessionId
containing the traces for the Kibana visualizations (each trace will contain a timestamp
field with a correct formatted trace) and results-sessionId
containing the gameplay state per player. The previous JSON is sanitized to obtain the the document used by Kibana to create the visualizations.
-
Number of times each cutscene has been accessed:
Theresults-sessionId
index stores how many times an accessible (e.g. cutscene) has been accessed by the player. For each accessed (Accessible) trace, we count the amount of different targets have been made (group by target). -
Number of times each completable has been completed:
Theresults-sessionId
index stores how many times a completable has been initialized or completed by the player. For each completed (Completable) trace, we count the amount of different targets have been made (group by target). -
Correct/Incorrect alternatives selected in questions:
Theresults-sessionId
index stores how many times an alternative has been selected by the player. For each selected (Alternative) trace, we count the different responses made (group by response). -
Number of players:
Theresults-sessionId
index stores how many times a completable (e.g. the game) has been initialized by the player. For each trace, the name of the player is extracted from thename
field and add if to the documentgameplayId
. -
Number of times each accessible has been accessed:
Theresults-sessionId
index stores how many times an accessible has been accessed by the player. For each accessed (Accessible) trace, we count the amount of different targets have been made (group by target). -
xAPI verbs use over time:
For each trace received, we extract the fields gameplayId and event (xAPI verb). Then, we extract the field timestamp and add it to the document per 'gameplayId' (player). -
Total number of times each xAPI verb has been used:
For each trace received, we extract the fields gameplayId and event (xAPI verb). -
Times each video has been seen or skipped:
Theresults-sessionId
index stores how many times an accessible has been accessed or skipped by the player. For each accessed or skipped (Accessible) trace, we count the amount of different targets have been made (group by target). -
Times in completables:
Theresults-sessionId
index stores the completables completed by the player and the time taken to complete them. -
Traces received over time:
For each trace received, we extract the fields gameplayId and event. Then, we extract the field timestamp and add it to the document per 'gameplayId' (player).
The previous analysis required some statements in xAPI, detailed below.
All traces sent by a player will have two fields: actor
with a subfield name
containing the player unique id; and another field timestamp
containing the date of the trace in a date format.
-
Number of times each cutscene has been accessed:
-
verb
: accessed -
object
: name of the cutscene-
definition
:-
type
: cutscene
-
-
-
-
Number of times each completable has been completed:
-
verb
: completed -
object
: name of the completable
-
-
Correct/Incorrect alternatives selected in questions:
-
verb
: selected -
object
: name of the alternative (question) -
result
:-
success
: true if correct; false if incorrect
-
-
-
Number of players:
-
verb
: initialized -
object
: name of the full game-
definition
:-
type
: game
-
-
-
-
Number of times each accessible has been accessed:
-
verb
: accessed -
object
: name of the accessible
-
-
xAPI verbs use over time:
-
verb
: any xAPI verb
-
-
Total number of times each xAPI verb has been used:
-
verb
: any xAPI verb
-
-
Times each video has been seen or skipped:
-
verb
: accessed or skipped -
object
: name of the accessible (video)-
definition
:-
type
: cutscene
-
-
-
-
Times in completables:
-
verb
: completed -
object
: name of the completable -
result
:-
extensions
:-
time
: time spent in the completable
-
-
-
-
Traces received over time:
- Any valid trace received.
To track the previous xAPI statements, the adequate calls need to be made to the tracker. For instance, for the tracker implementation in Unity, the following tracker calls are required:
-
Number of times each cutscene has been accessed:
Tracker.T.Accessible.Accessed(cutsceneId, Accessible.Cutscene);
-
Number of times each completable has been completed:
Tracker.T.Completable.Completed(CompletableId, Completable.Completable);
The general type is Completable.Completable; this can be particularized for other types of completables (e.g. Completable.Level or Completable.Quest). -
Correct/Incorrect alternatives selected in questions:
Tracker.T.Alternative.Selected(questionId, response, Alternative.Question);
andTracker.T.setSuccess(success);
where success is a boolean value. -
Number of players:
Tracker.T.Completable.Initialized(GameId, Completable.Game);
-
Number of times each accessible has been accessed:
Tracker.T.Accessible.Accessed(cutsceneId, Accessible.Accessible);
The general type is Accessible.Accessible; this can be particularized for other types of accessibles (e.g. Accessible.Screen or Accessible.Cutscene). -
xAPI verbs use over time:
Any valid call made to the tracker with a valid xAPI verb. -
Total number of times each xAPI verb has been used:
Any valid call made to the tracker with a valid xAPI verb. -
Times each video has been seen or skipped:
Tracker.T.Accessible.Accessed(videoId, Accessible.Cutscene);
and
Tracker.T.Accessible.Skipped(videoId, Accessible.Cutscene);
As videos can be skipped, they are of type Accessible.Cutscene. -
Times in completables:
Tracker.T.Completable.Completed(CompletableId, Completable.Completable);
andTracker.T.setVar(time, timeValue)
where timeValue is the time spent in the completable. The general type is Completable.Completable; this can be particularized for other types of completables (e.g. Completable.Level or Completable.Quest). -
Traces received over time:
Any valid call made to the tracker.
- Home
- Game developers Guide
- Analytics developers Guide
- Analytics users Guide
- System Overview
- Tracker
- A2
- Analytics Real-time
- Analytics Front-end
- Analytics Back-end
- Game Storage Server
- Upgrading RAGE Analytics
- Wiki Style Guide