Skip to main content

Important Concepts

To integrate k-ID into a game, the following steps need to be taken:

Getting Player Location and Date of Birth

In order to implement k-ID age verification and consent workflows, the game must acquire two pieces of information about the player: the player’s location (or jurisdiction), and the player's date of birth.

Location

While location can be self-declared by the player, the preferred way of getting location information is to invoke a service from the game that responds with information about the player’s IP address. The location string can be either an ISO 3166-1 alpha-2 country code (e.g. US) or an ISO 3166-2 subdivision code (e.g. US-CA). It is recommended to always provide the subdivision code whenever possible. This is because even if a region currently does not have localized regulations, it may have them in the future. By providing the subdivision code, we can ensure that the player's permissions can be adjusted as regulations change.

Notes:

  • Some games may have their own protections in place to detect and prevent location spoofing (e.g., through players using VPNs). Make sure that the location that is sent to the k-ID API has been validated by these tools as applicable before it is sent in order to avoid an incorrect configuration.

  • As a best practice, a player’s jurisdiction is considered static when the player first launches the game, and cannot be changed except if the customer files a support request - this is to discourage players from “forum shopping” to enable features that should otherwise be disabled in their jurisdiction.

One example to get the location for the player’s IP address is to call a service like https://ipinfo.io/json, which produces results similar to the json shown below.

{
"ip": "136.62.180.67",
"hostname": "XX-XX-XX-XX.googlefiber.net",
"city": "Austin",
"region": "Texas",
"country": "US",
"timezone": "America/Chicago",
"readme": "https://ipinfo.io/missingauth"
}

Date of Birth

The date of birth is a string that can be provided to the API in any of the following formats: YYYY, YYYY-MM, or YYYY-MM-DD. The jurisdiction determines whether a game must ask the player their age when first starting to play the game. If the jurisdiction requires that the player give an age, then a user interface element to collect the date of birth should be shown. This is called an age gate.

image

When showing an age gate, a best practice is to show a “neutral age gate”, one which does not have an age already set so the user has to take action to set an age. Additionally, if the age gate uses a slider for the age value, it is recommended by the ESRB that the maximum age in a slider age gate should be 35.

If the age gate does not need to be shown in the current jurisdiction, then the player can proceed without further checks and their date of birth will be unassigned.

If a player gives an age that requires parental consent, the game must determine what to do before consent is granted by a parent. There are several possible approaches, including blocking access entirely and waiting on the parental consent challenge screen, or granting limited access to a “data-lite” experience of the game.

In the example below, the player is blocked from continuing while a Consent Challenge window is displayed.

Challenge

Matching k-ID Permissions to Game Features

Permissions in the k-ID Global Compliance Database represent classifications of game features that are addressed in regulations in one or more jurisdisctions worldwide. Permissions are configured in the Publisher Portal for the game. Each k-ID Permission that matches a game feature should be enabled in the k-ID Developer Portal (shown below). The k-ID Permissions chosen will be presented to parents to enable or disable when they give consent for a child to play a game.

Dev Portal Permissions

Below is an example of what a parent sees when granting consent in the k-ID Family Portal.

Family Permissions

When displaying features in the game that are mapped to k-ID Permissions, the Session should be checked to see whether the feature is enabled, and whether the player is allowed to turn it on. More details about how to handle k-ID permissions are covered in the Permissions section of the documentation.

The table below lists the avaialble permissions that can be managed in the Publisher Portal:

GroupPermission
ai-customizationai-generated-avatars
ai-chatbot
communicationtext-chat-private
voice-chat
video-chat
link-to-third-party-chat
communityforums
chat-rooms-public
join-groups
virtual-events
content-moderationmature-language
mods
content-sharinggameplay-streaming
gameplay-recording
share-game-clips-screenshots
link-to-third-party-streaming-app
game-controlshaptic-feedback
movement-speed-adjustment
smooth-locomotion
disable-boundary-settings
augmented-reality
gameplaymultiplayer
pvp
leaderboard-and-rankings
marketingdirect-marketing
targeted-ads
contextual-ads
notificationpush-notifications
disable-safety-prompts
privacyprofiling
motion-data
camera-access
real-time-location-sharing
photo-video-sharing
profile-customizationcustom-username
custom-avatar
profile-visibilitypublic-profile
online-status
recommendationspersonalized-recommendations
socialpublic-friend-list
send-accept-friend-requests
social-mediashare-to-social-media
link-to-social-media-account
virtual-economyin-game-purchases
in-game-currency
loot-boxes
send-gifts
auctions
virtual-property-ownership
virtual-marketplace