Skip to main content
이 섹션에서는 Photon RealTime 및 Photon Unity Networking(PUN)과 같은 Photon 멀티플레이어 서비스와 PlayFab을 함께 사용하는 방법에 대한 정보를 제공합니다. 현재, 다음과 같은 Photon 통합을 제공합니다.
  • PlayFab으로 Photon 플레이어 인증.
  • PlayFab CloudScript 콜백을 사용하여 룸 이벤트 수신.

Photon 빠른 시작

이 빠른 시작에서는 PlayFab과 함께 작동하도록 Photon Multiplayer를 설정하는 방법을 보여줍니다. 현재, PlayFab은 다음과 같은 Photon 통합을 제공합니다.
  • PlayFab으로 Photon 플레이어 인증.
  • PlayFab CloudScript 콜백을 사용하여 룸 이벤트 수신.
이 빠른 시작에서는 최신 Photon Unity 예제 프로젝트를 사용하여 두 기능이 어떻게 작동하는지 설명합니다.
Unity에서 완전히 지원되는 PlayFab Multiplayer 및 Chat Experience의 경우, 자세한 내용은 PlayFab Party Unity Plugin을 참조하세요.

사전 요구 사항

  1. PlayFab SDK를 가져오고 구성된 타이틀이 있는 Unity 프로젝트.
  2. 등록된 PlayFab 타이틀.
이 가이드는 Chat Application 설정을 생략합니다. Chat Application을 통합하려면, 새 Photon Chat Application을 만들고 Unity 및 PlayFab Game Manager - Photon Add-on 페이지의 해당 상자에 App ID를 입력하세요.

Photon 애플리케이션 설정

  1. Photon 대시보드에 등록하고 로그인한 후, Create a new App을 선택합니다.
Create a new Photon application
  1. Photon Type을 선택합니다.
  2. Name을 선택합니다.
  3. Description을 만듭니다.
  4. Create를 선택하여 제출합니다.
New application form

인증 설정

  1. 목록에서 새로 만든 애플리케이션을 찾고 Manage를 선택합니다.
Manage the Test application
  1. Application 대시보드에서 페이지 Title 아래에 있는 App ID를 찾아 저장합니다.
Save the App ID
  1. Authentication 섹션을 찾습니다.
  2. Custom Server를 선택합니다.
Custom server authentication 다음 페이지에서 Photon에 대한 Authentication URL을 구성할 수 있습니다.
PlayFabTitleId 자리 표시자를 자신의 Title Id로 바꿉니다.
  1. URL을 입력합니다.
  2. Create 버튼을 선택하여 제출합니다.
Enter authentication URL

Photon용 PlayFab 타이틀 설정

타이틀의 Game Manager 페이지로 이동한 다음:
  1. Add-ons 탭으로 이동합니다.
  2. Add-ons 목록에서 Photon을 찾아 선택합니다.
Game Manager Add-ons tab
  1. Photon Add-on 페이지에서 Photon Realtime Application ID를 지정하여 Photon을 설치할 수 있습니다.
    • 선택적으로, Chat App ID를 지정할 수 있습니다.
    • Add-on (3) 을 설치하면, Photon secret Key가 생성됩니다 (2).
    • 웹 후크를 구성할 때 향후 사용을 위해 저장합니다.
Photon 비밀 키를 안전하고 쉽게 접근할 수 있는 장소에 저장하는 것을 잊지 마세요. Webhooks를 구성할 때 유용합니다.
Copy Realtime App ID

Photon webhooks 설정

선택적 통합으로, Photon은 특정 이벤트를 PlayFab CloudScript로 전송할 수 있습니다. 이는 webhooks로 수행됩니다.
  • Base URL을 지정합니다.
  • 그런 다음 사용 가능한 각 이벤트에 대한 경로를 지정합니다.
  • 경로는 사실상 CloudScript에서 구현된 핸들러 이름입니다.
Base URL의 형식은 다음과 같습니다.
Title Id 자리 표시자를 자신의 Title Id로 바꿔야 합니다.
PhotonSecretKey 토큰을 Photon Add-on 페이지에서 생성한 비밀 키로 바꿔야 합니다.
  1. Base URL을 입력합니다.
  2. 사용 가능한 각 Events에 대한 CloudScript 핸들러 Name을 할당합니다.
  3. CustomHttpHeaders를 제거합니다.
  4. Save 버튼을 선택하여 제출합니다.
Assign CloudScript event handlers

Unity 프로젝트 설정

이 가이드는 PlayFab SDK를 이미 가져오고 설정했으며, 타이틀 설정을 구성했다고 가정합니다.
  • Asset Store로 이동하여 시작합니다.
  • Photon Unity Networking Free 패키지를 찾습니다.
  • Import (1) 을 선택합니다.
  • 가져온 파일을 검사할 수 있습니다.
  • 그런 다음 Import (2) 를 선택합니다.
Import Photon Unity 가져오기 프로세스가 완료된 직후, PUN Setup 창이 열립니다.
  • 만든 Photon App에 대해 Photon Application Dashboard에서 찾은 Realtime Application ID (1) 를 입력합니다.
  • Setup Project (2) 를 선택합니다.
  • 설정이 완료되면 Close (3) 를 선택합니다.
PUN setup AppId가 수락되면, Photon Server Settings 객체가 선택되고 Unity Inspector 창에서 볼 수 있습니다. Server Settings 객체에 수동으로 액세스하려면:
  • 상단 창 패널로 이동합니다.
  • Window를 선택합니다.
  • 그런 다음 Photon Unity Networking (1) 을 선택합니다.
  • 마지막으로 Highlight Server Settings (2) 를 선택합니다.
  • Standard Unity 프로젝트 창이 PhotonServerSettings (3) 객체를 표시합니다.
  • 객체를 선택하여 Unity Inspector 창에서 설정을 확인합니다.
Photon server settings
PhotonServerSettings의 일부로, Chat Application ID를 할당할 수 있는 옵션이 있습니다.
이 시점에서, 프로젝트가 구성되었습니다.

PlayFab에서 Photon으로의 인증 구현

PlayFab Game Manager에서 타이틀에 대해 Photon Add-on을 활성화하고 Photon Application 대시보드에서 인증을 구성하면, PlayFab을 통해 Photon 환경 내에서 기존 PlayFab 플레이어를 인증할 수 있습니다. 이는 Photon에 대한 사용자 관리 구현을 완전히 피할 수 있음을 의미합니다.
  1. Photon Unity Networking Free 패키지의 Classic 버전에서 DemoHub-Scene-V2 씬으로 이동합니다.
    • 이 씬은 패키지의 모든 예제에 대한 허브입니다.
    • 이 씬이 로드되는 첫 번째 씬이므로, PlayFab을 Photon으로 인증할 수 있게 하는 작은 스크립트를 추가하겠습니다.
  2. PlayFabAuthenticator라는 빈 GameObject를 만듭니다.
  3. 그런 다음 Unity Inspector 창에서 이 GameObject에 동일한 이름의 컴포넌트를 추가합니다.
Add authentication component 톱니바퀴 아이콘을 선택한 다음, 드롭다운 메뉴에서 스크립트 편집을 선택합니다. PlayFabAuthenticator 컴포넌트의 코드를 복사하여 붙여넣고, 파일을 저장한 후 닫습니다.

PlayFab에서 Photon으로의 인증 테스트

  1. 씬을 시작합니다.
  2. 콘솔 메시지의 흐름을 검사합니다. 다음을 확인하세요.
  3. PlayFab 자체 인증이 성공했습니다.
  4. Photon 토큰이 획득되었습니다.
다음 그림은 올바른 흐름을 보여줍니다. Start the scene Photon 토큰이 획득되고 인증이 완료되면, Photon 데모를 확인해 봐도 됩니다. 예를 들어, Demo Boxes라는 데모를 시작합니다.
  1. PlayFab 인증이 완료되었는지 확인하려면, Demo Boxes를 선택합니다.
  2. 그런 다음 다음 그림과 같이 Load Demo를 선택합니다.
Load demo Photon이 디버그 메시지를 출력하기 시작합니다. 콘솔을 모니터링하여 인증 문제가 있는지 쉽게 알 수 있습니다. Photon debug console 콘솔에 Authentication Denied 오류가 없는지 확인하세요. 이 시점에서, 최소한의 PlayFab 및 Photon 통합을 설정했습니다.

Photon 룸 이벤트 + CloudScript

Photon 매치메이킹 시스템에는 Room이라는 개념이 있습니다. 이 개념에 익숙하지 않다면, Photon Matchmaking Guide를 참조하세요. PlayFab을 사용하면 다양한 룸 이벤트를 가로챌 수 있습니다. 다음 룸 이벤트는 CloudScript만으로 가로챌 수 있습니다.
  • RoomCreated
  • RoomJoined
  • RoomLeft
  • RoomClosed
다음 이벤트를 가로채려면 Unity 코드에 대한 추가 제어가 필요합니다(자세한 내용은 이 문서 뒷부분에서 제공됩니다).
  • RoomPropertyUpdated
  • RoomEventRaised
룸 이벤트에 대한 핸들러를 도입하면, 이는 이벤트 처리 흐름의 필수적인 부분이 됩니다. 따라서 CloudScript 실행 중 발생하는 오류는 전체 시스템에 문제를 일으킬 수 있습니다. 예를 들어, RoomCreated 핸들러가 오류를 던지면, 클라이언트도 오류를 던지며 제대로 연결할 수 없게 됩니다.
각 이벤트 유형에 대한 핸들러를 개별적으로 정의하여 PlayFab CloudScript를 구성해 봅시다.

Room Created 핸들러

RoomCreated 핸들러는 Photon 룸이 생성될 때마다 호출됩니다. 다음 CloudScript 핸들러가 이러한 이벤트를 가로챕니다.
“args” 인수를 사용하여 이벤트에 대한 더 많은 데이터를 얻을 수 있습니다.

Room Joined 핸들러

RoomJoined 핸들러는 플레이어가 룸에 참가할 때마다 호출됩니다. 다음 CloudScript 핸들러가 이러한 이벤트를 가로챕니다.
이 콜백은 룸에 들어가는 첫 번째 사용자에 대해서는 호출되지 않습니다. 참가하는 첫 번째 플레이어를 가로채려면 RoomCreated를 사용하세요. “args” 인수를 사용하여 이벤트에 대한 더 많은 데이터를 얻을 수 있습니다.

Room left

RoomLeft 핸들러는 플레이어가 룸을 떠날 때마다 호출됩니다. 다음 CloudScript 핸들러가 이러한 이벤트를 가로챕니다.
“args” 인수를 사용하여 이벤트에 대한 더 많은 데이터를 얻을 수 있습니다.

Room Closed 핸들러

RoomClosed 핸들러는 마지막 플레이어가 룸을 떠나 룸에 남은 플레이어가 없을 때마다 호출됩니다. 다음 CloudScript 핸들러가 이러한 이벤트를 가로챕니다.
“args” 인수를 사용하여 이벤트에 대한 더 많은 데이터를 얻을 수 있습니다.

Room Property Updated

RoomPropertyUpdated 핸들러는 룸 속성이 변경될 때마다 호출됩니다. 다음 CloudScript 핸들러가 이러한 이벤트를 가로챕니다.
currentPlayerId는 이 핸들러에서 정의되지 않습니다. 룸 속성이 클라이언트에서 변경된 경우, “args” 인수를 사용하고 UserId를 참조하여 담당 플레이어를 얻을 수 있습니다.
“args” 인수를 사용하여 이벤트에 대한 더 많은 데이터를 얻을 수 있습니다.
Unity Photon 클라이언트를 사용하여 사용자 지정 Room 속성을 변경할 때, 호출을 표시하는 것이 중요합니다. 그래야 이벤트를 Webhook(이 경우 PlayFab)으로 전달합니다.

Room Event Raised

Room Event Raised는 사용자 지정 룸 이벤트가 발생할 때마다 호출됩니다. 다음 CloudScript 핸들러가 이러한 이벤트를 가로챕니다.
“args” 인수를 사용하여 이벤트에 대한 더 많은 데이터를 얻을 수 있습니다.
Unity Photon 클라이언트를 사용하여 사용자 지정 룸 이벤트를 발생시킬 때, 호출을 표시하여 이벤트가 Webhooks(이 경우 PlayFab)로 전달되도록 하는 것이 중요합니다.

Room Event 핸들러 테스트

이 예제는 이전 예제(PlayFab + Photon 인증)를 확장합니다. 타이틀에 대해 다음 CloudScript를 업로드합니다.
이 코드는 Photon 콜백이 호출될 때마다 새 타이틀 이벤트를 게시하는 것 이상의 작업은 수행하지 않습니다. 프로덕션에서는 유용하지 않지만, 이 예제는 콜백이 어떻게 호출되는지 명확하게 볼 수 있게 해줍니다. 사용자 지정 이벤트를 발생시키고 사용자 지정 룸 속성을 설정하는 새로운 예제 코드를 포함하여 PlayFabAuthenticator 스크립트를 확장합니다. 확장된 버전은 또한 씬 로드 사이에 객체를 파괴하지 않도록 Awake 메서드를 활용합니다.
  • 허브 씬을 실행하고 PlayFab 인증이 완료될 때까지 기다립니다 (1).
  • 그런 다음 Boxes Demo 씬을 로드합니다 (2).
Load Demo Boxes scene
  • 씬이 로드되면, 피어가 새로 만들어진 룸에 연결될 때까지 기다립니다 (1).
  • 그런 다음 왼쪽 상단 모서리의 Execute Example을 선택합니다 (2).
  • 콘솔 출력을 관찰합니다 (3).
  • 오류가 발생하지 않았는지 확인합니다.
Execute Example Unity 플레이를 중지하는 것을 잊지 마세요. 이는 RoomLeftRoomClosed 이벤트도 수신하도록 하기 위한 것입니다. 타이틀 Game Manager 페이지로 이동하여 PlayStream 패널을 관찰합니다. Photon 이벤트를 처리하는 CloudScript 코드의 결과로 생성된 이벤트를 볼 수 있어야 합니다.
  1. 처음에, Photon 인스턴스에는 열린 룸이 없었습니다. 예제를 시작하면 Photon이 Boxes Demo를 위한 룸을 만들었습니다.
  2. 참가하는 첫 번째 플레이어는 룸을 요청한 플레이어입니다. 따라서 RoomJoined 이벤트는 기록되지 않았습니다. 그런 다음 예제 코드를 실행했습니다.
    • 먼저, 사용자 지정 Room Event를 발생시켰습니다.
    • 그런 다음, 사용자 지정 Room Property를 설정했습니다.
    • 그런 다음 Unity 플레이 모드를 중지했습니다. 이로 인해 클라이언트가 룸을 떠났습니다.
  3. 연결이 끊긴 클라이언트가 마지막이었기 때문에, 더 이상 클라이언트가 없고 Photon이 룸을 닫습니다.
모든 이벤트는 다음 그림과 같이 PlayStream 이벤트 흐름에 기록되어야 합니다. PlayStream event flow 이 시점에서, PlayFab 타이틀에 Photon 이벤트 지원을 완전히 통합했습니다.
마지막 수정일 2026년 8월 13일