在虚幻引擎中设置 zeuz
入门
为集成 虚幻引擎 和 zeuz,我们创建了一个插件,在 虚幻商城 中可免费下载。
本教程将指导您设置虚幻引擎,安装 zeuz SDK 商城插件,并使用该插件在虚幻引擎中进行首次 API 调用。
您可使用蓝图、C++ 或同时使用两者进行首次 API 调用。
虚幻引擎设置和插件安装
- 注册并登陆虚幻引擎网页
- 下载 Epic Games Launcher
- 打开 Epic Games Launcher
- 在左侧导航栏中,选择 Unreal Engine (虚幻引擎) 页签,并点击 Library (库)
- 点击 +Add Versions (安装新版虚幻引擎)
- 选择最新的稳定版本
- 安装 zeuz SDK 插件到您的引擎中
- 在 Epic Games Launcher 中,前往 Marketplace (虚幻商城) 页面,搜索 zeuz SDK
在蓝图中使用 SDK
该部分为在蓝图中使用 zeuz SDK 的示例,教您使用该 SDK 登录到 zeuz 后端,这对于进一步的 API 调用是必需的。
- 在编辑器工具栏中,打开 Blueprints (蓝图) → Open Level Blueprint (打开关卡蓝图)
- 连接到现有的 Event Begin Play (事件开始运行) 节点 Zeuz SDK → Auth → SimpleAuthLogin
- 在 In Login 和 In Password 中输入登陆 zeuz 控制面板的用户名和密码
- 在 Endpoint 中输入 https://zcp.zeuz.io/api/v1 作为端点
- 在 Ctx Proj ID 和 Ctx Env ID 中输入 zeuz 控制面板 中您想使用的 Proj ID 和 Env ID
由于 API 调用是异步的,登录节点不会立即输出任何结果,而是由事件传递。
- 为 On Success 引脚创建一个自定义事件,并附加 Print String (打印字符串) 来显示当前登陆的 Developer ID
- 为 On Failure 引脚创建一个自定义事件,并附加 Print String (打印字符串) 来显示 Error
完成以上步骤后,点击 运行 按钮启动蓝图,运行结果会显示在游戏窗口中。
在 C++ 中使用 SDK
在 C++ 中调用 zeuz SDK 与蓝图无异,唯一的差别是蓝图的输出打印到屏幕上,而 C++ 的输出以其他形式打印。
- 保存 zeuz 控制面板中的 Proj ID 和 Env ID 到默认上下文中
- 输入用户名和密码到身份认证的输入结构中
- 绑定回调委托与 API 调用结果
- 调用 API 功能 AuthLogin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| DEFINE_LOG_CATEGORY_STATIC(LogTest, Log, All);
void TestAuth() {
FZeuzContext& ctx = FZeuzContext::Def;
ctx.ProjID = "ovDwSBfgjlXNtBOmQqkSNlFAenS";
ctx.EnvID = "uOJvpWmhzkVByequrudsOxcExaH";
FZeuzSimpleAuthLoginIn login;
login.Login = "demo@demo.com";
login.Password = "demo";
UZeuzApiSimpleAuth::FDelegateAuthLogin onresult;
onresult.BindLambda(
[](FZeuzContext Context, FString Error) {
if (!Error.IsEmpty())
{
UE_LOG(LogTest, Warning, TEXT("Error: %s"), *Error);
} else {
UE_LOG(LogTest, Warning, TEXT("Success: %s"), *Context.DeveloperID);
}
}
);
UZeuzApiSimpleAuth::AuthLogin(login, onresult, ctx);
}
|
使用在线子系统
从商城或 https://sdk.zeuz.io/ 中下载 OnlineSubsystemZeuz。
添加 OnlineSubsystem 和 OnlineSubsystemZeuz 到您的 ProjectName.Build.cs 中。
1
2
3
| PublicDependencyModuleNames.AddRange(new string[] {
"Core", "CoreUObject", "Engine", "InputCore",
"OnlineSubsystem", "OnlineSubsystemZeuz"
|
在 Config/DefaultEngine.ini 中激活在线子系统,然后设置您的 ProjID 和 EnvID。
1
2
3
4
5
6
7
| [OnlineSubsystem]
DefaultPlatformService=Zeuz
[OnlineSubsystemZeuz]
Endpoint="<<API_ENDPOINT_URL>>"
ProjID="ovDwSBfgjlXNtBOmQqkSNlFAenS"
EnvID="uOJvpWmhzkVByequrudsOxcExaH"
|
现在您可以在项目里使用 OnlineSubsystem 了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| #include "OnlineSubsystemZeuz.h"
void FZeuzUtils::AuthLoginProfile(const FString& Username, const FString& Password, const FZeuzRequestResult& RequestResult)
{
// 存储句柄的静态委托映射。
static TMap<uint32, FDelegateHandle> DelegateHandles;
// 使用身份在线子系统登录。
IOnlineIdentityPtr Identity = FZeuzOSSUtils::GetIdentityInterface();
FOnLoginCompleteDelegate OnResult;
FOnlineAccountCredentials Credentials;
Credentials.Id = Username;
Credentials.Token = Password;
// 委托的句柄是在委托发生后创建的,因此委托有一个对委托存储路径的引用。
uint32 DelegateKey = GetFreshKey(DelegateHandles);
OnResult.BindLambda([RequestResult, DelegateKey, Identity](int32 LocalUserNum, bool bSuccess, const FUniqueNetId& Id, const FString& Error) {
if (bSuccess)
{
UE_LOG(LogZeuzUtils, Display, TEXT("AuthLoginProfile - Connection success: %s"), *Id.ToString());
RequestResult.ExecuteIfBound(true);
}
else
{
UE_LOG(LogZeuzUtils, Error, TEXT("AuthLoginProfile - Error: %s"), *Error);
RequestResult.ExecuteIfBound(false);
}
if (!DelegateHandles.Contains(DelegateKey))
{
UE_LOG(LogZeuzUtils, Error, TEXT("Unable to find the OnLoginCompleteDelegateHandle"), *Error);
return;
}
Identity->ClearOnLoginCompleteDelegate_Handle(0, DelegateHandles[DelegateKey]);
DelegateHandles.Remove(DelegateKey);
});
DelegateHandles.Add(DelegateKey, Identity->AddOnLoginCompleteDelegate_Handle(0, OnResult));
bool bSentRequest = Identity->Login(0, Credentials);
if (!bSentRequest)
{
RequestResult.ExecuteIfBound(false);
}
}
|
注释和解释
一个 上下文 包含一个对项目和环境的引用,还包含一个登录会话。
在大多数情况下,只需要一个 上下文,因此存在 默认上下文 FZeuzContext::Def
。
如删除 上下文 则会使用 默认上下文。
蓝图 API 函数的调用有 On Success 和 On Failure 两种委托,无论哪种委托回调函数都会被调用。
您可以使用开发人员账号、用户账号,或 API key 及其密码来完成登录。
一个会话的有效时长为 24 小时,但 SDK 可在会话过期后自动重新登录。
2021年6月30日 该文档已更新并通过审校:更新 zeuz 控制面板的 URL
最近更新时间: October 20, 2021 (cf3b7c5e)