PlayFab 통합
소개
이 문서를 통해 PlayFab을 Photon과 통합하는 것이 도움이 될 것 입니다.
이 접근 방식을 통해, 두 시스템의 모든 잠재력을 동시에 사용할 것 입니다.
각 서비스에 대해 과금은 별도 입니다.
PlayFab에서 애드온 내의 Photon을 찾아보십시오 - 멀티플레이어 섹션 제목
PlayFab의 Photon 애드온 기능을 사용하면 Photon 어플리케이션을 하나 또는 두개 설정할 수 있습니다(Photon Realtime 및/또는 Photon 채팅 어플리케이션).
Photon에 대해 설정 지침을 참고하십시오.
사용자 정의 인증
관리화면 구성
다음은 PlayFab으로 사용자 인증을 설정하는 절차입니다:
- Photon 관리화면으로 이동합니다.
- 어플리케이션을 선택하거나 새로운 어플리케이션을 생성합니다.
- "관리"를 클릭합니다.
- "인증" 섹션 밑의, "사용자 지정 서버"를 클릭합니다.
- [필수] 인증 URL을
https://{PlayFabTitleId}.playfabapi.com/photon/authenticate
으로 설정합니다.
{PlayFabTitleId}
플레이스홀더에는 실제 PlayFab TitleId를 기입하시기 바랍니다. - "생성"을 눌러 저장합니다.
- [권고]"익명의 클라이언트 연결 허용, 구성된 공급자와 별도"를 해제합니다.
클라이언트 코드
클라이언트는 자격증명으로 키/값의 쌍을 전송하도록 되어 있습니다:
- 로그인한 사용자의 PlayFab UserId.
- Photon 토큰 ( 클라이언트 API 메소드 GetPhotonAuthenticationToken을 사용하여 얻음).
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를 설정하기 위한 방법입니다.
- Photon 관리화면으로 이동합니다.
- 어플리케이션을 선택하거나 새로운 어플리케이션을 생성합니다.
- "관리"를 클릭합니다.
- "Webhooks" 섹션아래에 있는, "새로운 Webhook 생성"을 클릭합니다.
- "유형 선택" 드롭다운 목록에서 Webhooks v1.2 를 선택합니다.
- [필수] "BaseUrl" 은
https://{PlayFabTitleId}.playfablogic.com/webhook/1/prod/{PhotonSecretKey}
으로 설정합니다.{PlayFabTitleId}
플레이스홀더는 실제 PlayFab TitleId로 변경하십시오.- "Photon Secret Key" 는 Photon Realtime 어플리케이션을 추가했다면 PlayFab의 Photon add-on 페이지에서 찾을 수 있습니다.
- 최근에 배포/활성화된 CloudScript 버전이 아닌 최신 업로드/푸시된 CloudScript 리비전을 타켓으로 한다면
prod
를test
로 변경할 수 있습니다.
- [선택] 필요한 Webhooks Paths를 구성하십시오.
필요 없는 것은 제거하십시오.
여기에서 더 많은 것을 읽어주십시오. - [선택] "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" }; };