CloudScript 기본
CloudScript를 최대한 활용하는 핵심은 사용할 수 있는 입력 – 즉, 핸들러의 args와 context를 다루는 방법을 아는 것입니다. 예를 들어, 새로 생성된 모든 타이틀에 Revision 1로 로드되는 시작 CloudScript의helloWorld 예시입니다(GitHub에서도 사용 가능, 아래에 표시됨).
inputValue로 전달된 인수를 확인하고, 해당 키의 값을 실행에 대한 디버그 로그 정보에서 반환되는 텍스트의 일부로 사용합니다.
context 입력 매개 변수
그러나 규칙(Automation->Rules), 세그먼트 진입/이탈 작업(Players->Segments), 또는 Task Service(Automation->Tasks)를 통해 PlayStream의 이벤트 결과로 CloudScript를 호출하는 것도 가능합니다. 그렇게 하면 함수에 전달되는 컨텍스트는 적절한 조치를 취하는 데 필요한 모든 정보를 제공합니다. PlayStream 이벤트의 기본 작동 방식에 대해 읽으려면 블로그 Introducing PlayStream을 참조하고, PlayStream 이벤트 유형 및 속성 목록은 PlayFab API 참조를 참조하세요. 이 동작을 확인하려면 동일한 샘플 CloudScript의handlePlayStreamEventAndProfile 핸들러를 살펴보세요.
-
위의 예시 코드에서 볼 수 있는
playStreamEvent가 있습니다.playStreamEvent는 핸들러를 트리거한 완전한 이벤트를 PlayStream 이벤트 문서에서 볼 수 있는 모든 매개 변수와 함께 JSON 개체로 포함합니다. 예를 들어 타이틀에서 임의의player_logged_in event에 대해handlePlayStreamEventAndProfile을 호출하는 규칙을 설정한 경우,playStreamEvent.EventName은player_logged_in이 됩니다(해당 이벤트의 전체 매개 변수 세트는 여기에 있음). -
다음으로 이전 예시에서도 표시된
playerProfile이 있습니다. 여기에는 이벤트를 트리거한 플레이어에 대한 정보가 포함됩니다. 프로필 매개 변수의 모든 세부 정보는 여기에서 찾을 수 있지만, 무엇보다도 타이틀에서 플레이어의 통계 전체 세트와 플레이어에게 할당한 모든 사용자 지정 태그가 포함되어 있어, 그 데이터를 사용하여 풍부한 의사 결정을 할 수 있습니다. -
컨텍스트의 마지막 요소는
triggeredByTask입니다. Rules와 Segment Enter/Exit 트리거를 사용할 때 설정되는 처음 두 요소와 달리,triggeredByTask는 수동이든 타이머든 태스크의 결과로 핸들러가 실행되는 경우에만 적용됩니다. 여기에는 두 개의 매개 변수만 포함됩니다.
- Name – 태스크를 만들 때 지정한 고유 이름.
- ID – PlayFab이 태스크에 대해 자동으로 생성한 고유 식별자.
playerProfile도 있지만 playStreamEvent는 없습니다.
그리고 세그먼트 없이 단순히 게임에 대해 실행되는 태스크의 경우, 이벤트에 대한 타이틀 데이터 설정 같은 더 일반적인 것을 실행하는 것이 목적이므로 playerProfile은 없습니다.
따라서 name은 취해야 할 적절한 작업을 결정하기 위해 핸들러의 코드 흐름에서 사용하고 싶은 요소가 됩니다.
PlayStream + CloudScript
여러 면에서 PlayStream 작업에 의해 트리거되는 CloudScript 핸들러는ExecuteCloudScript 호출을 통해 직접 트리거되는 핸들러보다 더 큰 잠재적 기능을 가지고 있습니다. 컨텍스트를 통해 풍부한 데이터 세트가 제공되기 때문입니다.
이를 통해 원래 예상하지 못했던 이벤트나 플레이어 프로필의 요소를 활용하는 더 많은 로직으로 출시 후 핸들러를 업데이트할 수 있으며, 클라이언트 코드를 어떤 식으로든 업데이트할 필요가 없습니다.
또한 PlayFab 서비스의 향후 업데이트에서 플레이어 프로필에 계속 추가할 것이며, 이는 서버 측 로직에 대해 훨씬 더 많은 옵션을 제공할 것입니다.