From f37d08c2dde47b5d55a257cde7dc7d450d2e8194 Mon Sep 17 00:00:00 2001 From: Dave Clark Date: Tue, 16 Jan 2018 17:45:06 -0500 Subject: Push Gfe SDK #168 --- doc/html/index.html | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'doc/html/index.html') diff --git a/doc/html/index.html b/doc/html/index.html index bde4500..ef483a1 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -88,7 +88,7 @@ $(document).ready(function(){initNavTree('index.html','');});

NVIDIA GeForce Experience SDK

@@ -122,20 +122,20 @@ Using GfeSDK

Creation and Release

C++ Bindings

-
inParams.appName = "MyGame";
inParams.requiredScopes = { NVGSDK_SCOPE_HIGHLIGHTS, NVGSDK_SCOPE_HIGHLIGHTS_VIDEO, NVGSDK_SCOPE_HIGHLIGHTS_SCREENSHOT };
inParams.pollForCallbacks = false;
GfeSDK::Core* core = GfeSDK::Core::Create(&inParams, &response);
GfeSDK::Highlights* highlights = GfeSDK::Highlights::Create(core);

// After using GfeSDK

+
inParams.appName = "MyGame";
inParams.requiredScopes = { NVGSDK_SCOPE_HIGHLIGHTS, NVGSDK_SCOPE_HIGHLIGHTS_VIDEO, NVGSDK_SCOPE_HIGHLIGHTS_SCREENSHOT };
inParams.pollForCallbacks = false;
GfeSDK::Core* core = GfeSDK::Core::Create(&inParams, &response);
GfeSDK::Highlights* highlights = GfeSDK::Highlights::Create(core);

// After using GfeSDK

delete core;

C API

-
NVGSDK_HANDLE* handle;
memset(inParams, 0, sizeof(inParams));
NVGSDK_Scope scopes[] = { NVGSDK_SCOPE_HIGHLIGHTS, NVGSDK_SCOPE_HIGHLIGHTS_VIDEO, NVGSDK_SCOPE_HIGHLIGHTS_SCREENSHOT };
NVGSDK_Scope scopePermissions[3];
inParams.appName = "MyGame";
inParams.scopeTable = &scopes[0];
inParams.scopeTableSize = 3;
inParams.pollForCallbacks = false;
response.scopePermissionTable = &scopePermissions[0];
response.scopePermissionsTableSize = 3;
NVGSDK_Create(handle, &inParams, &response);

// After using GfeSDK

+
NVGSDK_HANDLE* handle;
memset(inParams, 0, sizeof(inParams));
NVGSDK_Scope scopes[] = { NVGSDK_SCOPE_HIGHLIGHTS, NVGSDK_SCOPE_HIGHLIGHTS_VIDEO, NVGSDK_SCOPE_HIGHLIGHTS_SCREENSHOT };
NVGSDK_ScopePermission scopePermissions[3];
inParams.appName = "MyGame";
inParams.scopeTable = &scopes[0];
inParams.scopeTableSize = 3;
inParams.pollForCallbacks = false;
response.scopePermissionTable = &scopePermissions[0];
response.scopePermissionsTableSize = 3;
NVGSDK_Create(handle, &inParams, &response);

// After using GfeSDK

NVGSDK_Release(handle);

Request Permissions

The Create call will inform the app if one or more scopes require user permission. If so, make this call. It will display the overlay UI.

C++ Bindings

// Got GfeSDK::CreateResponse after GfeSDK::Core::Create call
for (auto& scopePermission : response.scopePermissions)
{
if (scopePermission.permission == NVGSDK_PERMISSION_MUST_ASK)
{
params.scope.push_back(scopePermission.scope);
}
}
core->RequestPermissions(&params);

C API

-
// Got NVGSDK_CreateResponse after NVGSDK_Create call
NVGSDK_Scope scopesToRequest[3];
int n = 0;
for (int i = 0; i < response.scopePermissionTableSize; ++i)
{
if (response.scopePermissionTable[i].permission == NVGSDK_PERMISSION_MUST_ASK)
{
scopesToRequest[n++] = response.scopePermissionTable[i].scope;
}
}
params.scopeTable = &scopesToRequest[0];
params.scopeTableSize = n;
// Will display overlay UI to the user
NVGSDK_RequestPermissionsAsync(handle, &params, NULL, NULL);

+
// Got NVGSDK_CreateResponse after NVGSDK_Create call
NVGSDK_Scope scopesToRequest[3];
int n = 0;
for (int i = 0; i < response.scopePermissionTableSize; ++i)
{
if (response.scopePermissionTable[i].permission == NVGSDK_PERMISSION_MUST_ASK)
{
scopesToRequest[n++] = response.scopePermissionTable[i].scope;
}
}
params.scopeTable = &scopesToRequest[0];
params.scopeTableSize = n;
// Will display overlay UI to the user
NVGSDK_RequestPermissionsAsync(handle, &params, NULL, NULL);

Configure Highlights

This only needs to happen once ever. It is persistent. It could even happen during game installation.

C++ Bindings

-
// Must have handle to Highlights object via GfeSDK::Highlights::Create()
HighlightsConfigParams params;
params.highlightDefinitions = {
{
"highlight1",
true,
NVGSDK_HIGHLIGHT_SIGNIFICANCE_VERY_GOOD,
{
{ "en-US", "Highlight One" },
{ "es-MX", "Resalte Uno" }
}
},
{
"highlight2",
true,
NVGSDK_HIGHLIGHT_TYPE_MILESTONE | NVGSDK_HIGHLIGHTS_TYPE_STATE_CHANGE,
NVGSDK_HIGHLIGHT_SIGNIFICANCE_NEUTRAL,
{
{ "en-US", "Highlight Two" },
{ "es-MX", "Resalte Dos" }
}
},
};
params.defaultLocale = "en-US";
highlights->ConfigureAsync(&params);

C API

-
int const NUM_HIGHLIGHTS = 2;
NVGSDK_Highlight highlights[NUM_HIGHLIGHTS];
memset(highlights, 0, sizeof(NVGSDK_Highlight * NUM_HIGHLIGHTS));
NVGSDK_LocalizedPair highlight1Translation[2] = {
{ "en-US", "Highlight One" },
{ "es-MX", "Resalte Uno" }
};
highlights[0].id = "highlight1";
highlights[0].userInterest = true;
highlights[0].significance = NVGSDK_HIGHLIGHT_SIGNIFICANCE_VERY_GOOD;
highlights[0].nameTable = &highlight1Translation[0];
highlights[0].nameTableSize = 2;
NVGSDK_LocalizedPair highlight2Translation[2] = {
{ "en-US", "Highlight Two" },
{ "es-MX", "Resalte Dos" }
};
highlights[1].id = "highlight2";
highlights[1].userInterest = true;
highlights[1].highlightTags = NVGSDK_HIGHLIGHT_TYPE_MILESTONE | NVGSDK_HIGHLIGHTS_TYPE_STATE_CHANGE;
highlights[1].significance = NVGSDK_HIGHLIGHT_SIGNIFICANCE_NEUTRAL;
highlights[1].nameTable = &highlight2Translation[0];
highlights[1].nameTableSize = 2;
params.highlightDefinitionTable = &highlights[0];
params.highlightTableSize = NUM_HIGHLIGHTS;
params.defaultLocale = "en-US";
NVGSDK_Highlights_ConfigureAsync(handle, &params, NULL, NULL);

+
// Must have handle to Highlights object via GfeSDK::Highlights::Create()
HighlightsConfigParams params;
params.highlightDefinitions = {
{
"highlight1",
true,
NVGSDK_HIGHLIGHT_TYPE_ACHIEVEMENT,
NVGSDK_HIGHLIGHT_SIGNIFICANCE_VERY_GOOD,
{
{ "en-US", "Highlight One" },
{ "es-MX", "Resalte Uno" }
}
},
{
"highlight2",
true,
NVGSDK_HIGHLIGHT_TYPE_MILESTONE | NVGSDK_HIGHLIGHTS_TYPE_STATE_CHANGE,
NVGSDK_HIGHLIGHT_SIGNIFICANCE_NEUTRAL,
{
{ "en-US", "Highlight Two" },
{ "es-MX", "Resalte Dos" }
}
},
};
params.defaultLocale = "en-US";
highlights->ConfigureAsync(&params);

C API

+
int const NUM_HIGHLIGHTS = 2;
NVGSDK_Highlight highlights[NUM_HIGHLIGHTS];
memset(highlights, 0, sizeof(NVGSDK_Highlight * NUM_HIGHLIGHTS));
NVGSDK_LocalizedPair highlight1Translation[2] = {
{ "en-US", "Highlight One" },
{ "es-MX", "Resalte Uno" }
};
highlights[0].id = "highlight1";
highlights[0].userInterest = true;
highlights[0].highlightTags = NVGSDK_HIGHLIGHT_TYPE_ACHIEVEMENT;
highlights[0].significance = NVGSDK_HIGHLIGHT_SIGNIFICANCE_VERY_GOOD;
highlights[0].nameTable = &highlight1Translation[0];
highlights[0].nameTableSize = 2;
NVGSDK_LocalizedPair highlight2Translation[2] = {
{ "en-US", "Highlight Two" },
{ "es-MX", "Resalte Dos" }
};
highlights[1].id = "highlight2";
highlights[1].userInterest = true;
highlights[1].highlightTags = NVGSDK_HIGHLIGHT_TYPE_MILESTONE | NVGSDK_HIGHLIGHTS_TYPE_STATE_CHANGE;
highlights[1].significance = NVGSDK_HIGHLIGHT_SIGNIFICANCE_NEUTRAL;
highlights[1].nameTable = &highlight2Translation[0];
highlights[1].nameTableSize = 2;
params.highlightDefinitionTable = &highlights[0];
params.highlightTableSize = NUM_HIGHLIGHTS;
params.defaultLocale = "en-US";
NVGSDK_Highlights_ConfigureAsync(handle, &params, NULL, NULL);

Groups and Saving Highlights

C++ Bindings

params.groupId = "group1";
params.groupDescriptionLocaleTable = {
{ "en-US", "Group One" },
{ "es-MX", "Groupa Uno" }
};
highlights->OpenGroupAsync(&params);
params.groupId = "group1";
params.highlightsId = "highlight1";
params.startDelta = -5000; // Should be dynamic i.e. start of killstreak
params.endDetla = 2000;
highlights->SetVideoHighlightAsync(&params);
params.groupId = "group1";
params.destroyHighlights = false;
highlights->CloseGroupAsync(&params);

C API

@@ -202,7 +202,7 @@ UX Guidance

Many times a button is used to display the Highlights Summary. Suggested UX: "View \%d highlights" or "\%d new highlights". Include an icon to the left of the text. The icon to use is located in GfeSDK/redist/assets/img/img_logo_experience_512.png

Logging

-

By default, GfeSDK stores its own logs for problem triage in LOCALAPPDATA% Corporation. This behavior can be adjusted by the following calls:

+

By default, GfeSDK stores its own logs for problem triage in %LOCALAPPDATA%\NVIDIA Corporation\GfeSDK. This behavior can be adjusted by the following calls: