Steam 및 Unity를 사용한 PlayFab 인증 설정
이 자습서는 SteamWorks 및 Unity 통해 Steam을 사용하여 PlayFab에 로그인하는 단계를 안내합니다.
필수 조건
시작하기 전에 다음 사항이 갖추어져 있는지 확인하세요.
- 가져온 PlayFab SDK가 있는 Unity 프로젝트 및 구성된 타이틀 ID
- Steam 애플리케이션 포함 사항:
- 이미 설정된 AppID. AppID는 일반적으로 Steam Direct(이전의 Greenlight) 프로세스를 통해 취득합니다.
- Steam 게시자 웹 API 키. 게시자 키를 생성하려면 Steamworks 설명서의 게시자 웹 API 키 만들기를 따릅니다.
- 로그인 기본 사항 및 모범 사례에 대한 지식
PlayFab 타이틀 설정
Steam 인증에 대한 지원을 사용하려면 PlayFab Steam 추가 기능을 사용하도록 설정해야 합니다.
게임 관리자 페이지로 이동합니다.
- 추가 기능 메뉴 항목을 선택합니다.
- 사용 가능한 추가 기능 목록에서 Steam를 찾아 타이틀 링크를 선택합니다.
- 앱 ID를 입력합니다.
- 웹 API 키를 입력합니다.
- 그런 다음 Steam 설치를 선택합니다.
이로써 Steam 통합을 위한 PlayFab 타이틀 설정이 끝납니다.
Unity 프로젝트 설정
먼저 릴리스 페이지에서 최신 릴리스의 Steamworks.NET을 다운로드합니다.
- 릴리스의 Unity 패키지 버전을 받아 프로젝트로 가져옵니다.
- 패키지를 가져온 후 Unity를 닫습니다.
- 프로젝트 루트 폴더로 이동합니다.
- steam_appid.txt 파일을 찾습니다.
- 파일을 열고 앱 ID 값을 고유의 값으로 바꿉니다.
Unity를 다시 열고 새로운 장면을 만듭니다.
해당 장면 내에 Steam이라는 새로운 gameobject를 만듭니다.
- gameobject에 SteamManager 구성 요소를 추가합니다. 이 구성 요소는 Steamworks.Net의 일부입니다.
- SteamScript 구성 요소를 만들고 gameobject에 추가합니다.
다음 예제에서는 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());
}
}
테스트
편집기에서 바로 테스트할 수 있습니다.
- 장면을 실행하고 로그인 단추를 선택합니다.
- 잠시 후 인증 결과 성공!을 나타내는 콘솔 메시지가 표시되어야 합니다.