Steam 및 Unity를 사용한 PlayFab 인증 설정

이 자습서는 SteamWorks 및 Unity 통해 Steam을 사용하여 PlayFab에 로그인하는 단계를 안내합니다.

필수 조건

시작하기 전에 다음 사항이 갖추어져 있는지 확인하세요.

PlayFab 타이틀 설정

Steam 인증에 대한 지원을 사용하려면 PlayFab Steam 추가 기능을 사용하도록 설정해야 합니다.

게임 관리자 페이지로 이동합니다.

  1. 추가 기능 메뉴 항목을 선택합니다.
  2. 사용 가능한 추가 기능 목록에서 Steam를 찾아 타이틀 링크를 선택합니다.

게임 관리자 추가 콘텐츠 탭

  1. 앱 ID를 입력합니다.
  2. 웹 API 키를 입력합니다.
  3. 그런 다음 Steam 설치를 선택합니다.

게임 관리자 Steam 추가 기능 설치

이로써 Steam 통합을 위한 PlayFab 타이틀 설정이 끝납니다.

Unity 프로젝트 설정

먼저 릴리스 페이지에서 최신 릴리스의 Steamworks.NET을 다운로드합니다.

  • 릴리스의 Unity 패키지 버전을 받아 프로젝트로 가져옵니다.
  • 패키지를 가져온 후 Unity를 닫습니다.
  • 프로젝트 루트 폴더로 이동합니다.
  • steam_appid.txt 파일을 찾습니다.
  • 파일을 열고 앱 ID 값을 고유의 값으로 바꿉니다.

Unity 프로젝트 - AppId 업데이트

Unity를 다시 열고 새로운 장면을 만듭니다.

해당 장면 내에 Steam이라는 새로운 gameobject를 만듭니다.

  1. gameobjectSteamManager 구성 요소를 추가합니다. 이 구성 요소는 Steamworks.Net의 일부입니다.
  2. SteamScript 구성 요소를 만들고 gameobject에 추가합니다.

Unity 프로젝트 - Steam 개체 추가

다음 예제에서는 SteamScript 구성 요소의 코드를 보여 줍니다.

이 예제를 제공해 준 Dylan Hunt 씨에게 감사드립니다.)

// Import all the necessary namespaces
using System;
using System.Text;
using PlayFab;
using PlayFab.ClientModels;
using Steamworks;
using UnityEngine;

public class SteamScript : MonoBehaviour {
    //This method returns
    public string GetSteamAuthTicket() {
        byte[] ticketBlob = new byte[1024];
        uint ticketSize;

        // Retrieve ticket; hTicket should be a field in the class so you can use it to cancel the ticket later
        // When you pass an object, the object can be modified by the callee. This function modifies the byte array you've passed to it.
        HAuthTicket hTicket = SteamUser.GetAuthSessionTicket(ticketBlob, ticketBlob.Length, out ticketSize);

        // Resize the buffer to actual length
        Array.Resize(ref ticketBlob, (int)ticketSize);

        // Convert bytes to string
        StringBuilder sb = new StringBuilder();
        foreach (byte b in ticketBlob) {
            sb.AppendFormat("{0:x2}", b);
        }
        return sb.ToString();
    }

    public void OnGUI() {
        if (GUILayout.Button("Log In")) {
            if (SteamManager.Initialized) {
                // Execute PlayFab API call to log in with steam ticket
                PlayFabClientAPI.LoginWithSteam(new LoginWithSteamRequest {
                    CreateAccount = true,
                    SteamTicket = GetSteamAuthTicket()
                }, OnComplete,OnFailed);
            }
        }
    }

    // Utility callbacks to log the result
    private void OnComplete(LoginResult obj) {
        Debug.Log("Success!");
    }

    private void OnFailed(PlayFabError error) {
        Debug.Log("Failed: " + error.GenerateErrorReport());
    }
}

테스트

편집기에서 바로 테스트할 수 있습니다.

  1. 장면을 실행하고 로그인 단추를 선택합니다.
  2. 잠시 후 인증 결과 성공!을 나타내는 콘솔 메시지가 표시되어야 합니다.

Unity 테스트 Steam으로 PlayFab 로그인