From 85d763f47eb6eb38a526c0c383f78eb936f5d61a Mon Sep 17 00:00:00 2001 From: Charu Kalani Date: Tue, 23 Jan 2018 11:10:36 -0800 Subject: Push GfeSDK #173 --- doc/html/index.html | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'doc/html/index.html') diff --git a/doc/html/index.html b/doc/html/index.html index ef483a1..1cdf245 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,28 +122,28 @@ 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

-
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_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);

+

// After using GfeSDK

+

C API

+

// After using GfeSDK

+

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);

+

C API

+

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_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);

+

C API

+

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

-
params.groupId = "group1";
{ "en-US", "Group One" },
{ "es-MX", "Groupa Uno" }
};
NVGSDK_Highlights_OpenGroupAsynchandle, (&params, NULL, NULL);
params.groupId = "group1";
params.highlightsId = "highlight1";
params.startDelta = -5000; // Should be dynamic i.e. start of killstreak
params.endDetla = 2000;
NVGSDK_Highlights_SetVideoHighlightAsync(handle, &params, NULL, NULL);
params.groupId = "group1";
params.destroyHighlights = false;
NVGSDK_Highlights_CloseGroupAsync(handle, &params, NULL, NULL);

+

C API

+

Open Highlight Summary

C++ Bindings

-
params.groupViews = {
{
"group1", 0, 0
},
{
"group2", 0, NVGSDK_HIGHLIGHT_SIGNIFICANCE_EXTREMELY_GOOD
}
};
highlights->OpenSummaryAsync(&params);

C API

-
NVGSDK_GroupView views[2] = {
{
"group1", 0, 0
},
{
"group2", 0, NVGSDK_HIGHLIGHT_SIGNIFICANCE_EXTREMELY_GOOD
}
};
params.groupSummaryTable = &views[0];
NVGSDK_Highlights_OpenSummaryAsync(handle, &params, NULL, NULL);

+

C API

+

Concepts

The GfeSDK is composed of two parts, the client/app, and the backend/server. This distribution contains GfeSDK.dll which represents the client/app part. The end-user downloads GFE onto their machine. The GFE package includes the backend pieces necessary to support the calls coming from the client. See Versioning for more information regarding this communication.

Calls made will be serialized. Therefore, if the app makes two consecutive calls to NVGSDK_Highlights_OpenGroup and then either NVGSDK_Highlights_SetVideoHighlight or NVGSDK_Highlights_SetScreenshotHighlight, before receiving the callback from open group, the set highlight call will function normally. If open group succeeded, then the set highlights calls will succeed as well. If it failed, the set highlights calls will fail, as there will be no valid group to assign them to.

-- cgit v1.2.3