본문 바로가기

게임 개발/바다 위 고양이

게임 개발 #1 Playfab + google 로그인 기능

시작하며

해당 프로젝트는 사실 작년에 어느 정도 개발을 했었다. 개발 도중 서버의 필요성을 느끼고 플레이팹을 프로젝트에 사용하고자 하였다. 그런데 이때 구글 플레이 콘솔 업데이트가 있었는지 검색해서 나오는 관련 글들을 따라하려고 해도 묘하게 내가 조작하고 있는 화면과 모습이 달랐다. 이것 때문에 프로젝트는 흐지부지되고 말았고, 이번에 다시 시도하게 되었다.

 

준비하기
 

플레이팹 + 구글ㅣPlayFab

PlayFabManager.Cs 소스입니다 using System.Collections; using System.Collections.Generic; using UnityEngine; using PlayFab; using...

goraniunity2d.blogspot.com

 

구글로그인 + 플레이팹(1)

구글계정을 이용하여 사용자를 인증하고 그 정보로 플레이팹에 사용자 정보를 저장하기로함. 사용자 정보를 저장하기 위해서 Playfab을 사용하기로함. Playfab에 사용자를 구분하기위해 구글 로그

stealnewspaper.tistory.com

 

구글 로그인

순서

chickenlovercompany.notion.site

유니티 프로젝트에 구글 + 플레이팹 로그인 기능을 넣기 위해서는 구글 개발자 계정 생성, 구글 플레이 콘솔 세팅 등 여러 절차가 필요하다. 이러한 절차는 위의 링크들의 도움을 받았다. 위의 링크들을 참고할 때 주의사항은 구글 플레이 관련으로 파일을 깃허브에서 다운 받을 때 가장 최근 버전 말고 무조건 링크에서 명시한 버전으로 받아야 한다.

 

화면 구성

임시로 만든 화면으로 구글 로그인, 구글을 사용한 플레이팹 로그인, 이메일로 플레이팹 로그인/ 회원가입과 관련된 UI들이다. 구글과 관련된 로그인 기능은 유니티에서 확인할 수 없기에 테스트를 편하게 하기 위해 이메일을 사용한 플레이팹 로그인/회원가입도 화면에 포함했다.

 

코드

1. 구글 로그인, 구글을 사용한 플레이팹 로그인

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

using TMPro;

using GooglePlayGames;
using GooglePlayGames.BasicApi;

using PlayFab;
using PlayFab.ClientModels;

public class LoginLogout : MonoBehaviour
{
    public TextMeshProUGUI t;
    public Text GoogleStatusText;

    public string playFabId; // 서버에서 타이틀데이터 가져올 때 사용
    public bool gameStart = false;

    void Start()
    {
        // GPGS 플러그인 설정
        var config = new PlayGamesClientConfiguration.Builder()
            .AddOauthScope("profile")
            .RequestServerAuthCode(false)
            .Build();

        PlayGamesPlatform.InitializeInstance(config);
        PlayGamesPlatform.DebugLogEnabled = true;
        PlayGamesPlatform.Activate(); //GPGS 시작.
    }

    public void GoogleLogin()
    {
        PlayGamesPlatform.Instance.Authenticate(SignInInteractivity.CanPromptAlways, (success) =>
        {
            if (success == SignInStatus.Success)
            {
                t.text = "Success";
            }
            else
                t.text = "Failed";
        });
    }

    public void GoogleLogout()
    {
        ((PlayGamesPlatform)Social.Active).SignOut();
        t.text = "logout";
    }

    // 구글로 플레이팹 로그인
    public void OnSignInButtonClicked()
    {
        Social.localUser.Authenticate((bool success) => {
            if (success)
            {
                GoogleStatusText.text = "Google Signed In";

                var serverAuthCode = PlayGamesPlatform.Instance.GetServerAuthCode();

                PlayFabClientAPI.LoginWithGoogleAccount(new LoginWithGoogleAccountRequest()
                {
                    TitleId = PlayFabSettings.TitleId,
                    ServerAuthCode = serverAuthCode,
                    CreateAccount = true
                }, (result) =>
                {
                    GoogleStatusText.text = "Signed In as " + result.PlayFabId;

                    playFabId = result.PlayFabId;
                    gameStart = true;
                }, OnPlayFabError);
            }
            else
            {
                GoogleStatusText.text = "Failed login";
            }

        });
    }

    private void OnPlayFabError(PlayFabError error)
    {
        Debug.LogError(error.GenerateErrorReport());
    }

    // 로그인 상태일 때 게임 시작 가능
    public void sceneChange()
    {
        if (gameStart)
        {
            DataManager.Instance.GetUserData(playFabId);

            SceneManager.LoadScene("loading");
        }
    }
}

구글 로그인과 구글을 사용한 플레이팹 로그인은 프로젝트에서 사용할 기능이므로 한 파일에 구현하였다. 해당 코드는 플레이팹의 공식 문서의 코드를 참고했으며, 나중에 좀더 수정할 예정이다. 성공적으로 로그인된 상태에서만 게임이 시작하기를 원했기에 bool gameStart 변수를 선언하여 이 변수가 true일 때만 씬이 넘어갈 수 있도록 했다. 또한 나중에 플레이팹에서 데이터를 가져올 때 사용하기 위해 playfabId 변수 또한 선언해서 로그인이 성공하면 해당하는 값을 이 변수에 저장하도록 했다.

 

 

Unity에서 Google Play 게임 로그인으로 PlayFab 인증 - PlayFab

Unity에서 Google Play 게임 로그인을 사용한 PlayFab 인증의 예제를 안내합니다.

learn.microsoft.com

 

2. 이메일로 플레이팹 로그인/ 회원가입

 

플레이팹 로그인 회원가입ㅣPlayFab

타입1 - 커스텀 아이디로 로그인 using System.Collections; using System.Collections.Generic; using UnityEngine; using PlayFab; using Pl...

goraniunity2d.blogspot.com

이 기능은 유니티 상에서 테스트를 할 때만 사용할 예정이기에 1.에서 설명한 기능들을 추가한 것을 제외하면 위의 링크에서 주어진 코드에서 크게 달라진 부분이 없다.

'게임 개발 > 바다 위 고양이' 카테고리의 다른 글

게임 개발 #2 Playfab 기능 테스트  (0) 2023.08.09
게임 구상 #0  (0) 2022.04.09