UE5) 플레이팹 로그인

모듈 추가

플레이팹 플러그인 내부 기능을 코드에다 갖다 쓰려면 일단 모듈부터 추가하자.

 "PlayFab", "PlayFabCpp", "PlayFabCommon","JsonUtilities","Json"

JSON 모듈도 같이 추가했는데, 플레이팹 내부 DB를 건드릴 때 사용하기 때문에 같이 추가해줬다.


플레이팹 초기화

플레이팹과 상호작용하기 위해서는 PlayFabClientAPI가 필요하다.

그리고 이 API는 게임이 종료될 때 까지 유효한것 같다(추측임)

그런고로, 어디서인가 ClientAPI를 받아서 가지고 있다가

필요할때마다 접근해서 사용하면 되겠다.

나같은 경우는 플레이어 컨트롤러 내부에 컴포넌트 하나 만들어서 붙였다.

  1. PlayFabClient 초기화
PlayFabClientPtr PlayFabClient = nullptr;

어딘가에 플레이팹 클라이언트를 저장할 변수를 선언한다.

  1. 클라이언트 API를 가져와 저장한다.
if (PlayFabClient.IsValid() == false)
{
		PlayFabClient = IPlayFabModuleInterface::Get().GetClientAPI();
		GetMutableDefault<UPlayFabRuntimeSettings>()->TitleId = APP_ID;
}

여기에 들어가는 APP_ID가 타이틀 ID다.

기억이 안난다면 이전 포스트를 참고.


이메일을 통한 계정생성

초기화된 ClientAPI를 이용해서 이메일 계정을 생성해보자.

request 구조체 변수에다가,

생성할 계정 메일주소 및 비밀번호, 유저이름을 받아서 저장한 뒤.

플레이팹 클라이언트 내부 RegisterPlayFabUser함수에다가 전달해주면 된다.

플레이팹 클라이언트 내부 함수를 살펴보면 이메일뿐만 아니라 다양한 계정 연동 기능이 있으니 확인해보면 좋을 듯 하다.

그리고 두번째, 세번째 인자로 델리게이트를 받는데

선언을 참고해서 로그인 성공시 혹은 실패시 할 행동을 정의해서 넘겨주면 된다.

생성된 계정 확인

위에서 만든 계정이 정말 추가되었는지 확인해보자.

개발자 페이지에 내 타이틀 세부정보에 접속한 뒤, 플레이어 항목으로 들어가자.

ex_screenshot

검색 페이지가 열릴텐데, 아무것도 입력하지 않고 검색을 눌러보면

내가 생성한 계정 정보가 나오고, 이름을 누르면 세부정보를 확인할 수 있다.

위에서 설정한 UserName변수값은 마스터플레이어 계정(우하단)에 PlayFab사용자 이름에 작성되어있다.


이메일을 통한 로그인

생성한 계정으로 로그인을 해 보자.

아까랑 거의 비슷한 구조다.

플레이팹 클라이언트 내부의 특정 함수를 호출하고,

필요한 파라미터를 생성해서 넘겨주면 된다.

성공적으로 로그인 했다면, 같이 전달한 델리게이트가 호출될 것이고,

실패한 경우에는 전달한 델리게이트에 들어가는 변수(const FPlayFabCppError&) 내부에 에러 코드와 메시지가 있으니

확인해본 후 조치하면 된다.