PlayFab 통합

소개

이 문서를 통해 PlayFab을 Photon과 통합하는 것이 도움이 될 것 입니다.
이 접근 방식을 통해, 두 시스템의 모든 잠재력을 동시에 사용할 것 입니다.
각 서비스에 대해 과금은 별도 입니다.
PlayFab에서 애드온 내의 Photon을 찾아보십시오 - 멀티플레이어 섹션 제목
PlayFab의 Photon 애드온 기능을 사용하면 Photon 어플리케이션을 하나 또는 두개 설정할 수 있습니다(Photon Realtime 및/또는 Photon 채팅 어플리케이션).
Photon에 대해 설정 지침을 참고하십시오.

사용자 정의 인증

관리화면 구성

다음은 PlayFab으로 사용자 인증을 설정하는 절차입니다:

  1. Photon 관리화면으로 이동합니다.
  2. 어플리케이션을 선택하거나 새로운 어플리케이션을 생성합니다.
  3. "관리"를 클릭합니다.
  4. "인증" 섹션 밑의, "사용자 지정 서버"를 클릭합니다.
  5. [필수] 인증 URL을 https://{PlayFabTitleId}.playfabapi.com/photon/authenticate 으로 설정합니다.
    {PlayFabTitleId} 플레이스홀더에는 실제 PlayFab TitleId를 기입하시기 바랍니다.
  6. "생성"을 눌러 저장합니다.
  7. [권고]"익명의 클라이언트 연결 허용, 구성된 공급자와 별도"를 해제합니다.

클라이언트 코드

클라이언트는 자격증명으로 키/값의 쌍을 전송하도록 되어 있습니다:

C#

lbClient.AuthValues = new AuthenticationValues();
lbClient.AuthValues.AuthType = CustomAuthenticationType.Custom;
lbClient.AuthValues.AddAuthParameter("username", PlayFabUserId);
lbClient.AuthValues.AddAuthParameter("token", PlayFabPhotonToken);
// do not set AuthValues.Token or authentication will fail
// connect

C++

ExitGames::Common::JString params = "username="+PlayFabUserId+"&token="+PlayFabPhotonToken;
ExitGames::LoadBalancing::AuthenticationValues playFabAuthenticationValues;
playFabAuthenticationValues.setType(ExitGames::LoadBalancing::CustomAuthenticationType::CUSTOM).setParameters(params);
// pass playFabAuthenticationValues as parameter on connect

JavaScript

var queryString = "username="+playFabUserId+"&token="+playFabPhotonToken;
loadBalancingClient.setCustomAuthentication(queryString, Photon.LoadBalancing.Constants.CustomAuthenticationType.Custom);
// connect

Realtime Webhook과 WebRPC 구성

어플리케이션에서 Realtime Webhooks 또는 WebRPC가 필요 없으면, 이 파트는 건너띄어도 무방합니다.

우선 사용자 지정 인증을 설정하는 것이 권장됩니다.
그렇게 하지 않으면 Realtime Webhook과 WebRPC 동작하지 않을 수 있습니다.

다음은 PlayFab 타이틀이 동작하기 위해 Realtime Webhook과 WebRPC를 설정하기 위한 방법입니다.

  1. Photon 관리화면으로 이동합니다.
  2. 어플리케이션을 선택하거나 새로운 어플리케이션을 생성합니다.
  3. "관리"를 클릭합니다.
  4. "Webhooks" 섹션아래에 있는, "새로운 Webhook 생성"을 클릭합니다.
  5. "유형 선택" 드롭다운 목록에서 Webhooks v1.2 를 선택합니다.
  6. [필수] "BaseUrl" 은 https://{PlayFabTitleId}.playfablogic.com/webhook/1/prod/{PhotonSecretKey} 으로 설정합니다.
    • {PlayFabTitleId} 플레이스홀더는 실제 PlayFab TitleId로 변경하십시오.
    • "Photon Secret Key" 는 Photon Realtime 어플리케이션을 추가했다면 PlayFab의 Photon add-on 페이지에서 찾을 수 있습니다.
    • 최근에 배포/활성화된 CloudScript 버전이 아닌 최신 업로드/푸시된 CloudScript 리비전을 타켓으로 한다면 prodtest 로 변경할 수 있습니다.
  7. [선택] 필요한 Webhooks Paths를 구성하십시오.
    필요 없는 것은 제거하십시오.
    여기에서 더 많은 것을 읽어주십시오.
  8. [선택] "IsPersistent", "HasErrorInfo" 와 "AsyncJoin" 을 구성하십시오.
    기본 값 유지를 원하면 키들을 제거하십시오.
    여기에서 더 많은 것을 읽어주십시오.

참고

  • "CustomHttpHeaders" 설정은 CloudScript 핸들러에서 공개되지 않았기 때문에 지원되지 않습니다. 값을 설정해도 무의미할 것 입니다.

  • PlayFab 은 Realtime Webhooks CloudScript 핸들러 함수에 대해 다음과 같은 이름을 제안합니다:

    • "PathCreate": "RoomCreated"
    • "PathClose": "RoomClosed"
    • "PathJoin": "RoomJoined"
    • "PathLeave": "RoomLeft"
    • "PathEvent": "RoomEventRaised"
    • "PathGameProperties": "RoomPropertyUpdated"

    하지만, 원하는 이름을 사용해도 좋습니다.

  • "PathClose" 를 제외한 모든 Photon Realtime Webhook과 모든 WebRPC는 PlayFab의 CloudScript 글로벌 변수 "currentPlayerId" 를 "UserId" 아규먼트로 설정해야 합니다.

  • 클라이언트에 의해서 호출되는 구성된 Realtime Webhook 또는 WebRPC는 동일한 이름의 명시적인 CloudScript 핸들러가 없으면 클라이언트가 작동하지 않습니다.

    예제:
    "PathJoin" 을 "GameJoined" 로 구성했다면, 목표 CloudScript 리비전에는 이 함수를 가지고 있어야 합니다:

    JavaScript

    handlers.GameJoined = function(args)
    {
        // your custom code goes here
        return { ResultCode : 0, Message: "Success" }; 
    };
    

    클라이언트가 "foo" WebRPC 메소드를 호출한 경우, 타겟 CloudScript 리비전에 이 함수를 가지고 있어야 합니다:

    JavaScript

    handlers.foo = function(args) 
    {
        // your custom code goes here
        return { ResultCode : 0, Message: "Success" }; 
    };
    
Back to top