Skip to main content

Game standard events

Last updated on January 30, 2025

Overview

A game standard event is a type of game telemetry that has a predefined structure with associated formats and properties that are ready to use directly from the game SDK. It enables you to see player progression, rewards, and resources directly within AccelByte Gaming Services (AGS) dashboards.

This event is associated with your game titles. It should be used for title-specific information, such as players' mission status, match info, level information, weapon pickups, death reasons, etc. Developers must call event functions and instruments corresponding to your game design.

Mission Events

Mission events are designed to measure the progress of tasks, quests, or collections of objectives.

They aim to answer questions such as:

  • Which missions do players favor?
  • Which missions did players that churned early on interact with?
  • How long do missions take to complete?
  • Which missions have a high failure rate?
note

Although there is an overlap between missions and matches, they are designed as separate events to facilitate extensibility in different directions without complicating comprehension and maintenance.

mission_Started

Use this event to track the start of a mission and its details. It should be triggered when the task is obtained by the player or when the tutorial is started.

FieldTypeOptionalDescription
userIDstringNoUnique ID of the user.
missionIDstringNoUnique ID of the mission, such as its game asset ID.
missionTypestringYesFor categorization purposes, e.g., solo, group, pvp, raid, etc.
missionInstanceIDstringNoA unique ID generated for each mission attempt.
missionNamestringYesHuman-readable or non-localized player-facing name.
missionLocationstringYesCategorizes the mission. Could be the ID or name of a map.
missionDifficultystringYesOptional category for difficulty level.

mission_Step_Ended

Use this event to track important milestones in lengthy missions with multiple sequential steps, such as multi-step story missions and tutorials.

FieldTypeOptionalDescription
userIDstringNoUnique ID of the user.
missionIDstringNoUnique ID of the mission.
missionInstanceIDstringNoUnique ID for the specific mission instance.
missionStepintegerNoStep number starting at 1.
missionStepNamestringYesOptional name for understanding the specific mission step.

mission_Ended

This event should be triggered when a mission reaches an end state. For example, when the mission has been completed or the tutorial ends.

FieldTypeOptionalDescription
userIDstringNoUnique ID of the user.
missionIDstringNoUnique ID of the mission.
missionInstanceIDstringNoUnique mission instance ID.
missionSuccessboolNoTrue if the mission was successful; otherwise, false.
missionOutcomestringYesOptional subcategory to describe the success or failure.

Matchinfo Events

Matchinfo events aim to track both solo gameplay (e.g., stages) and multiplayer matches, including important game-specific parameters and results. This includes information for tracking the start and end of matches, as well as player-specific data.

matchinfo

This event describes the start time when gameplay begins and any match-related parameters.

FieldTypeOptionalDescription
timestamptimestampNoThe timestamp of when the match started.
matchinfoIDstringNoUnique identifier for the match.
matchIDstringYesMatch ID from matchmaking system, if available.
gameModestringYesGame mode category, e.g., PVP, solo, etc.
matchDifficultystringYesOptional category for match difficulty.

matchinfo_Player

This event details information about an individual player participating in a match.

FieldTypeOptionalDescription
userIDstringNoUnique ID of the player.
matchinfoIDstringNoUnique identifier for the match.
matchIDstringYesMatch ID from matchmaking system, if available.
teamstringYesPlayer's team designation, e.g., A, B, attacker, defender.
classstringYesThe player's character class.
rankstringYesThe player's rank, if applicable.

matchinfo_Ended

This event tracks when match gameplay ends and includes the global match result.

FieldTypeOptionalDescription
matchinfoIDstringNoUnique identifier for the match.
matchIDstringYesMatch ID from matchmaking system, if available.
endReasonstringNoReason the match ended, e.g., victory, failure, abandoned.
winnerstringYesThe winning team, if applicable.

Use this event to track the appearance of popups, such as context-sensitive tutorials or store offers.

FieldTypeOptionalDescription
userIDstringNoUnique ID of the user.
popupIDstringNoUnique ID of the popup.
popupTypestringYesType of popup, e.g., tutorial, offer.
popupNamestringYesHuman-readable, non-localized player-facing name of popup.

Progression Events

entity_Leveled

This event is used to track increases in account-wide stats or progression of entities within the game.

FieldTypeOptionalDescription
entityTypestringNoType of entity that leveled up.
userIDstringYesUnique ID of the user.
entityIDstringYesID of the entity that leveled up.
levelStatstringYesStat being increased (e.g., level).
levelChangeintegerYesThe increase in level.
levelCurrentintegerYesThe level after the increase.

entity_Dead

Use this event to understand the frequency and circumstances under which entities die or are destroyed.

FieldTypeOptionalDescription
entityTypestringNoType of entity that died.
userIDstringYesUnique ID of the user.
entityIDstringYesID of the entity that died.
deathDayintegerYesIn-game day the death occurred.
deathLocationstringYesThe location where the death occurred.
deathTypestringYesThe type of death (e.g., self, player, and environment).
deathSourcestringYesSource of the death (e.g., player, NPC).

Resource Events

resource_Flow

Use this event to track changes to gameplay resources and items.

FieldTypeOptionalDescription
userIDstringNoUnique ID of the user.
flowTypestringNoThe flow type, e.g., sink or source.
transactionIDstringNoUnique identifier for the transaction.
transactionTypestringNoType of transaction (e.g., traded, consumed).
resourceNamestringNoName of the item or currency being transacted.
amountstringNoThe amount of resource transacted.
endBalancestringNoThe remaining balance after the transaction.

Send Game Standard Events using the Game SDK (WIP)

The AGS Game SDK supports sending Game Standard Events out of the box in a very simple way. You can call the appropriate functions for each of the events. Below is a brief overview of how to use this feature.

Unreal Engine example

FOnlineSubsystemAccelByte* OnlineSubsystem = GetABSubsystem(TestSubsystemName);
const FUniqueNetIdAccelByteUserPtr UserId;
const auto GameStandardEventInterface = OnlineSubsystem->GetGameStandardEventInterface();
bool bIsSent = false;
const int32 LocalUserNum = 0;

// Example: Send Mission Started Event
bIsSent = GameStandardEventInterface->SendMissionStartedEvent(LocalUserNum
, UserId
, FMissionId(TEXT("Test"))
, FMissionInstanceId(FGuid::NewGuid().ToString())
, FAccelByteModelsMissionStartedOptPayload{});

Other example events:

// Send Mission Step Ended Event
bIsSent = GameStandardEventInterface->SendMissionStepEndedEvent(LocalUserNum
, UserId
, FMissionId(TEXT("Tutorial"))
, FMissionInstanceId(FGuid::NewGuid().ToString())
, FMissionStep(2)
, FMissionStepName(TEXT("Tutorial")));

// Send Mission Ended Event
bIsSent = GameStandardEventInterface->SendMissionEndedEvent(LocalUserNum
, UserId
, FMissionId(TEXT("Test"))
, FMissionInstanceId(FGuid::NewGuid().ToString())
, FMissionSuccess(false)
, FMissionOutcome(TEXT("Fail")));

// Send Match Info Event
bIsSent = GameStandardEventInterface->SendMatchInfoEvent(LocalUserNum
, FMatchInfoId(TEXT("TestMatch")));

// Send Resource Flow Event
bIsSent = GameStandardEventInterface->SendResourceFlowEvent(LocalUserNum
, UserId
, EAccelByteFlowType::source
, FAccelByteTransactionId(FGuid::NewGuid().ToString())
, FTransactionType(TEXT("Test"))
, FResourceName(TEXT("Gold"))
, FResourceAmount(TEXT("10"))
, FResourceEndBalance(20));

Unreal Engine SDK APIs

Here is a list of all available functions you can use to send different types of events in Unreal Engine:

  • SendMissionStartedEvent(FAccelByteUserId userId, FMissionId missionId, FMissionInstanceId missionInstanceId, FAccelByteModelsMissionStartedOptPayload optionalParameters)
  • SendMissionStepEndedEvent(FAccelByteUserId userId, FMissionId missionId, FMissionInstanceId missionInstanceId, FMissionStep missionStep, FMissionStepName missionStepName)
  • SendMissionEndedEvent(FAccelByteUserId userId, FMissionId missionId, FMissionInstanceId missionInstanceId, FMissionSuccess missionSuccess, FMissionOutcome missionOutcome)
  • SendMatchInfoEvent(FMatchInfoId matchInfoId, FAccelByteModelsMatchInfoOptPayload optionalParameters)
  • SendMatchInfoPlayerEvent(FAccelByteUserId userId, FMatchInfoId matchInfoId, FAccelByteModelsMatchInfoPlayerOptPayload optionalParameters)
  • SendMatchInfoEndedEvent(FMatchInfoId matchInfoId, FMatchEndReason endReason, FAccelByteModelsMatchInfoEndedOptPayload optionalParameters)
  • SendPopupAppearEvent(FAccelByteUserId userId, FPopupEventId popupId, FAccelByteModelsPopupAppearOptPayload optionalParameters)
  • SendEntityLeveledEvent(FEntityType entityType, FEntityId entityId, FAccelByteUserId userId, FAccelByteModelsEntityLeveledOptPayload optionalParameters)
  • SendEntityDeadEvent(FEntityType entityType, FEntityId entityId, FAccelByteUserId userId, FAccelByteModelsEntityDeadOptPayload optionalParameters)
  • SendResourceFlowEvent(FAccelByteUserId userId, EAccelByteFlowType flowType, FAccelByteTransactionId transactionId, FTransactionType transactionType, FResourceName resourceName, FResourceAmount resourceAmount, FResourceEndBalance endBalance)