게임에 대한 평가판 구현
게임 무료 평가판의 몇 가지 유형을 구성할 수 있습니다.
- 시간 제한 무료 평가판 - 이 평가판은 특정 달력 시간이 지난 후에 만료됩니다(예를 들어 얼마나 오래 사용했는지와 상관없이 사용자가 평가판을 다운로드한 지 7일 후).
- 사용 제한 무료 평가판 - 사용자가 특정 게임 런타임 동안 게임을 실행할 수 있도록 구성을 허용한 다음, 이후 사용자가 게임을 계속 사용하려면 해당 게임을 구입해야 합니다.
- 엄선한 평가판 - 이 평가판에는 만료 또는 게임 런타임 제한이 없지만 게임이 플레이할 수 있는 항목을 제한할 수 있습니다. 이는 데모와 유사하지만 여전히 전체 게임을 다운로드해야 합니다.
참고 항목
시간 및 사용량 기반 평가판은 사용자당 타이틀당 한 번씩 제공되며 다른 평가판 제품과 혼합되어서는 안 됩니다. 만료되거나 소진된 평가판 자격은 사용자 계정에 유지되며 동일한 게임에 대한 추가 평가판 제품을 획득할 수 없습니다. 고객이 평가판을 획득한 후에는 평가판 유형을 변경하거나 다시 설정할 수 없습니다.
참고 항목
일부 평가판은 무료이지만 특정 구독을 소유한 사용자로 제한됩니다. 이 항목은 이러한 평가판에도 적용됩니다.
참고 항목
무료 플레이 데이 제품의 일부로 실행되는 게임은 실제 평가판으로 실행되지 않지만 임시 전체 라이선스에서만 시작할 수 있습니다. 평가판 구성 및 관련 구조는 적용되지 않습니다.
파트너 센터에서 사용 제한 평가판 구성
참고 항목
적절한 권한이 있고 게임에서 제한적인 라이선스를 사용하는 경우에만 이 기능에 액세스할 수 있습니다. 자세한 내용은 Microsoft 계정 관리자에게 문의하십시오.
게임의 코드를 변경하지 않고 파트너 센터에서 사용 제한 무료 평가판을 구성할 수 있습니다. 그러나 다음 시나리오에서 코드를 추가해야 합니다.
- 평가판을 획득한 사용자의 액세스를 제한하고자 할 때
- 게임 세션 간에 게임 상태를 저장하고자 할 때. 평가판을 획득하는 데 사용한 것과 동일한 Microsoft 계정으로 게임을 구입한 경우 저장이 실행됩니다.
제출 개요 페이지에서 가격 및 가용성 페이지로 이동합니다.
무료 평가판 아래에서 드롭다운 메뉴를 열고 사용 제한을 선택합니다.
나타나는 두 번째 드롭다운 메뉴에서 사용자가 앱을 사용할 수 있는 최대 시간을 선택합니다.
저장을 선택합니다.
Microsoft Store에 게임을 게시하면 게임의 제품 페이지에 평가판 정보가 표시됩니다.
평가판을 획득한 사용자의 액세스 제한
경우에 따라 평가판 소유자만 게임을 실행하도록 허용해야 할 수 있습니다.
다른 사용자가 자신의 계정에 대한 평가판 사용 시간을 단축하는 것을 원치 않을 것이므로 이것은 사용 제한 평가판의 경우 특히 중요합니다.
XStoreGameLicense.isTrialOwnedByThisUser
속성을 확인하여 이 기능을 구현할 수 있습니다.
이것이 false
인 경우, 현재 플레이어가 진행하지 못하도록 차단하거나 적어도 직접 평가판을 얻어야 함을 알려야 합니다.
활성 평가판 라이선스를 소유한 사용자는 평가판 게임이 시작되면 다음 메시지가 표시됩니다.
다음은 이를 수행하는 방법을 보여주는 코드 예제입니다 isTrialOwnedByThisUser
.
void CALLBACK GameLicenseTrialCheck(XAsyncBlock* asyncBlock)
{
XStoreGameLicense result{};
HRESULT hr = XStoreQueryGameLicenseResult(
asyncBlock,
&result);
// Is this a trial?
if (result.isActive && result.isTrial)
{
// Is this trial owned by this user?
if (!result.isTrialOwnedByThisUser)
{
// The user can't use another user's trial time. Show an error message.
}
}
}
void QueryGameLicense(XStoreContextHandle storeContextHandle, XTaskQueueHandle taskQueueHandle)
{
auto async = new XAsyncBlock{};
asyncBlock->queue = m_asyncQueue;
asyncBlock->callback = GameLicenseTrialCheck;
HRESULT hr = XStoreQueryGameLicenseAsync(
storeContextHandle,
async);
}
원래 평가판 사용자의 게임 상태 저장
단일 플레이어 캠페인 또는 세션 간의 진행 상태를 추적하는 다른 게임 모드가 있는 Xbox L서비스 지원 게임은 연결된 저장소를 사용하여 게임 상태를 저장합니다. 그러나 제한된 평가판을 사용하는 PC 사용자는 (동일한 Xbox 계정을 사용하여) 여러 Microsoft 계정을 만들고 진행 상황을 저장하면서 시간 제한을 넘어 계속 플레이할 수 있습니다. 이 PC 시나리오에서 자세한 내용은 PC에서 일치하지 않는 스토어 계정 시나리오 처리를 참조하십시오.
이것은 게임 진행 상황이 저장될 때 XStoreGameLicense.trialUniqueId
값을 저장하여 방지할 수 있습니다.
다음 번에 사용자가 평가판을 다시 플레이할 때 첫 실행 시와 trialUniqueId
값이 일치하는지 확인할 수 있습니다.
이 코드는 게임이 게임 저장의 일부로 trialUniqueId
을(를) 저장하고 이 값을 반환하는 GetSavedTrialUniqueId
함수를 가진 것으로 가정합니다.
void CALLBACK GameLicenseTrialCheck(XAsyncBlock* asyncBlock)
{
XStoreGameLicense result{};
HRESULT hr = XStoreQueryGameLicenseResult(
asyncBlock,
&result);
// Is this a trial?
if (result.isActive && result.isTrial)
{
// Is this trial owned by this user?
if (!result.isTrialOwnedByThisUser)
{
// The user can't use another user's trial time. Show an error message.
}
else
{
// Read the trialUniqueId that was saved with the game on the first run.
char trialUniqueId = GetSavedTrialUniqueId();
if (trialUniqueId != result.trialUniqueId)
{
// Because the IDs don't match, start the game from the beginning.
}
}
}
}
개발 중인 평가판 테스트
평가판 라이선스로 게임을 테스트하려면 먼저 파트너 센터에서 평가판 라이선스로 게임을 구성해야 합니다.
Xbox
로컬 빌드의 경우 실제 라이선스를 사용하여 빌드를 허가해야 하는 시나리오 중 하나입니다. 느슨하고 패키지된 빌드의 경우 MicrosoftGameConfig에서 콘텐츠 ID 및 EKBID 재정의를 적용해야 합니다. 자세한 내용은 라이선스 테스트 사용을 참조하세요.
평가판 빌드의 실제 EKBID는 여기에서 사용해야 합니다. 이를 얻으려면 평가판 라이선스가 있는 계정으로 Microsoft Store에서 게임 빌드를 다운로드해야 합니다.
이 기능이 구성되면 스토어 XStoreGameLicense
에서 평가판 라이선스를 획득한 테스트 계정으로 시작하면 정확한 평가판 특성이 표시됩니다.
빌드를 시작하면 위와 같이 평가판 알림이 표시됩니다.
PC
이는 전체 라이선스를 사용하여 빌드를 활성화하는 방법과 동일합니다.MicrosoftGame.config에서 올바른 앱 ID를 사용하고 레지스트리 위치에서 올바른 콘텐츠 ID를 확인합니다. 그러면 빌드에서 Microsoft Store 앱, 평가판 또는 기타 로그인된 게정에 대해 라이선스를 준수합니다.