1. はじめに
Playfabを使ったことなかったので、環境構築してみた。 せっかくなのでUE5にて。
2. プラグインを導入
Unreal Engine クイックスタート - PlayFab | Microsoft Docs
上記クイックスタート通りにプラグインを導入。
しかし設定のプラグインにPlayfabがなかったので、Githubから直接導入。
GitHub - PlayFab/UnrealMarketplacePlugin: Source code for the PlayFab Marketplace Plugin for Unreal
まだUE5用のプラグインがなかったので、4.27でプラグイン追加。
[ProjectName]/Plugins/PlayFabPlugin
の位置に配置。
[ProjectName].build.cs のPublicDependencyModuleNamesに PlayFab
と PlayFabCpp
PlayFabCommon
を追加。
[ProjectName].uprojectで Generate Visual Studio project files
を実行してから .slnを開いて再度ビルド。
4.27のエラーがでるが、気にせずOKを押す。
3. ログイン処理
Editorから新しいアクターを作成する。
作成したアクターのCPPのコードを以下に変更。
#pragma once #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "PlayFab.h" #include "Core/PlayFabError.h" #include "Core/PlayFabClientDataModels.h" #include "LoginActor.generated.h" UCLASS() class ALoginActor : public AActor { GENERATED_BODY() public: ALoginActor(); virtual void BeginPlay() override; void OnSuccess(const PlayFab::ClientModels::FLoginResult& Result) const; void OnError(const PlayFab::FPlayFabCppError& ErrorResult) const; virtual void Tick(float DeltaSeconds) override; private: PlayFabClientPtr clientAPI = nullptr; };
#include "LoginActor.h" #include "Core/PlayFabClientAPI.h" ALoginActor::ALoginActor() { PrimaryActorTick.bCanEverTick = true; } void ALoginActor::BeginPlay() { Super::BeginPlay(); clientAPI = IPlayFabModuleInterface::Get().GetClientAPI(); PlayFab::ClientModels::FLoginWithCustomIDRequest request; request.CustomId = TEXT("GettingStartedGuide"); request.CreateAccount = true; clientAPI->LoginWithCustomID(request, PlayFab::UPlayFabClientAPI::FLoginWithCustomIDDelegate::CreateUObject(this, &ALoginActor::OnSuccess), PlayFab::FPlayFabErrorDelegate::CreateUObject(this, &ALoginActor::OnError) ); } void ALoginActor::OnSuccess(const PlayFab::ClientModels::FLoginResult& Result) const { UE_LOG(LogTemp, Log, TEXT("Congratulations, you made your first successful API call!")); } void ALoginActor::OnError(const PlayFab::FPlayFabCppError& ErrorResult) const { UE_LOG(LogTemp, Error, TEXT("Something went wrong with your first API call.\nHere's some debug information:\n%s"), *ErrorResult.GenerateErrorReport()); } void ALoginActor::Tick(float DeltaTime) { Super::Tick(DeltaTime); }
DefaultEngine.iniに以下を追加。
[/Script/PlayFabCommon.PlayFabRuntimeSettings] TitleId = XX123 DeveloperSecretKey = ASecretKeyThatNeedsRemovingOnClientBuilds
TitleIdには作成したPlayFabのアカウントのIDを入力。
作成したアクターをワールドに追加。
以下のログがでていれば、PlayFabの初期化が完了!
あとはアカウントのダッシュボードからAPIcallのSuccessが完了していれば、OK。
次はデータの取得と更新を試してみようと思う。
参考
Unreal Engine クイックスタート - PlayFab | Microsoft Docs
Unreal 4 Marketplace Plugin missing SetTitleId - Playfab Community