メインコンテンツに移動

プレーヤーの年齢を取得

年齢収集に関する管轄区域の要件

新しい Session を作成するための最初のステップは、現地の規制によりゲームがプレイヤーの生年月日を尋ねる必要があるかどうかを判断することです。age-gate/get-requirements は、shouldDisplay フィールドで年齢ゲートが必要かどうかを返し、さらに現在の管轄区域で表示できる年齢ゲートの種類、ゲームの最低年齢、現在の場所での市民年齢、および現在の場所でのデジタル同意年齢などの情報も返します。

Getting the users age in Unreal C++
void UKidWorkflow::GetUserAge(const FString& Location, TFunction<void(bool, bool, 
const FString&)> Callback)
{
// /age-gate/get-requirements は、何を行うべきかを判断するために使用されます。
// - 年齢ゲートを表示するかどうか
// - 許可されている年齢ゲートの種類
// - digitalConsentAge、civilAge、および minimumAge を取得する
// - 年齢保証が必要かどうか
// - 年齢ゲートが必要な場合、年齢ゲートを表示
// - Callback() を呼び出し、年齢、年齢ゲートが表示されたかどうか、および年齢保証が必要かどうかを渡します。

FString Url = BaseUrl + TEXT("/age-gate/get-requirements?jurisdiction=") + Location;

HttpRequestHelper::GetRequestWithAuth(Url, AuthToken,
[this, Location, Callback](FHttpResponsePtr Response, bool bWasSuccessful)
{
if (bWasSuccessful && Response.IsValid())
{
TSharedPtr<FJsonObject> JsonResponse;
TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(Response->GetContentAsString());
if (FJsonSerializer::Deserialize(Reader, JsonResponse))
{
bool bShouldDisplay = JsonResponse->GetBoolField(TEXT("shouldDisplay"));
bool bAgeAssuranceRequired = JsonResponse->GetBoolField(TEXT("ageAssuranceRequired"));

// Extracting extra information about the jurisdiction.
// Can be used to further customize the age gate.
int32 DigitalConsentAge = JsonResponse->GetIntegerField(TEXT("digitalConsentAge"));
int32 CivilAge = JsonResponse->GetIntegerField(TEXT("civilAge"));
int32 MinimumAge = JsonResponse->GetIntegerField(TEXT("minimumAge"));

// Extracting methods array
const TArray<TSharedPtr<FJsonValue>>& ApprovedAgeCollectionMethods =
JsonResponse->GetArrayField(TEXT("approvedAgeCollectionMethods"));

TSet<FString> Methods;
for (const TSharedPtr<FJsonValue>& Value : ApprovedAgeCollectionMethods)
{
Methods.Add(Value->AsString());
}

if (bShouldDisplay)
{
ShowAgeGate(Methods, [this, DigitalConsentAge, Callback,
bAgeAssuranceRequired](const FString& DOB)
{
// Only verify ages higher than the digital consent age
int32 Age = CalculateAgeFromDOB(DOB);
Callback(true, bAgeAssuranceRequired && Age >= DigitalConsentAge, DOB);
});
}
else
{
Callback(false /* ageGateShown */, false /* ageAssuranceRequired */, TEXT(""));
}
}
}
});
}

もし /age-gate/get-requirements のレスポンスで shouldDisplay が false だった場合、年齢ゲートは表示されず、プレイヤーの生年月日は定義されません。この場合でも、ゲームは /session/get-default-permissions を呼び出して、その管轄区域の デフォルト権限 を取得し、Session を作成します。これは、その管轄区域では年齢に基づいて権限が異ならないことを意味します。ゲーム内の一部の機能は、管轄区域に基づいてすべての年齢層に対して禁止される場合があるため、ゲームは機能を有効にできるかどうかを確認するために Session 権限を参照する必要があります。

年齢ゲートの表示

年齢ゲートが必要な場合(shouldDisplay = true)、年齢ゲートのUIを表示し、ユーザーは続行するために生年月日を入力する必要があります。

age gate

特定の管轄区域では、年齢ゲートにスライダーを含めることができるか、または明確な生年月日を要求する必要があるかが決められています。年齢を収集するために許可されている方法は、/approvedAgeCollectionMethods フィールドで指定されています。

年齢保証の処理

プレイヤーが成人またはティーンと見なされる年齢を入力した場合、一部の管轄区域では年齢保証が必要になることがあります。これらの管轄区域では、/age-gate/get-requirements API から返される ageAssuranceRequired フィールドが true になります。この場合、ユーザーが生年月日を入力した後、ゲームはその場所のデジタル同意年齢を超える場合、入力された年齢を確認する必要があります。年齢推定は、顔のスキャンや書類確認を使用して行うことができます。年齢推定に失敗した場合や、プレイヤーが入力した年齢が推定された年齢範囲の最も低い値を下回る場合、プレイヤーはその範囲の最小年齢と見なされます。プレイヤーは保護者の同意を必要とするか、ゲームで設定された最低年齢によっては、完全にブロックされることに