다음을 통해 공유


PlayFab 게임 서버의 기본 사항

PlayFab은 게임 서버를 컨테이너화된 응용 프로그램처럼 작동시킵니다. 이 자습서는 게임 서버가 어떻게 패키지되고 PlayFab 시스템과 통합되는지 설명합니다.

게임 서버 컨테이너화 및 패키징

Windows

Windows에서는 일반적으로 게임 서버 실행 파일 및 기타 파일을 zip 파일로 패키징하고 게임 자산으로 업로드합니다. 자산은 게임 서버 빌드를 만들기 위해 컨테이너 이미지와 결합됩니다. 기본 컨테이너 이미지는 Windows 운영 체제 파일과 게임을 실행할 수 있도록 하는 실행 환경을 제공합니다. PlayFab은 Windows 빌드에 사용할 일련의 관리형 컨테이너 이미지를 제공합니다. 게임 관리자 또는 CreateBuildWithManagedContainer()와 같은 API를 통해 Windows 빌드를 만드는 경우에는 사용자가 자산 및 컨테이너의 파일 시스템 내에 해당 자산을 마운트할 위치를 지정해야 합니다. 게임을 시작하기 위해 셸 명령을 지정할 수도 있습니다(StartGameCommand). 이는 아래에 표시되는 내용과 유사합니다.

C:\GameCoreApp\GameServer.exe -mode RETAIL

게임 클라이언트를 서비스할 준비가 되었을 때 StartGameCommand는 PlayFab 게임 서버 SDK를 사용하는 응용 프로그램을 시작하여 ReadyForPlayers를 호출해야 합니다. 응용 프로그램 프로세스가 종료되면 컨테이너가 종료되고 재활용됩니다.

Linux

Linux에서는 게임 실행 파일과 자산을 패키징하여 사용자가 직접 컨테이너 이미지를 만듭니다. 런타임 시 컨테이너 이미지와 결합된 자산의 사용은 선택 사항입니다. 게임 관리자 또는 CreateBuildWithCustomContainer()와 같은 API를 통해 Linux 빌드를 만드는 경우에는 사용자가 자산 및 컨테이너의 파일 시스템 내에 해당 자산을 마운트할 위치를 선택적으로 지정할 수 있습니다. 이 명령을 컨테이너 이미지에 포함할 수도 있으므로 게임(StartGameCommand)을 시작하는 셸 명령 사양도 선택 사항입니다.

참고 항목

PlayFab Multiplayer Servers Linux 컨테이너 이미지 만들기에 대한 자세한 내용은 페이지를 확인하세요.

Windows용 관리형 컨테이너

PlayFab은 현재 단일 관리형 컨테이너인 Windows Server Core 기반 PlayFab 멀티 플레이어 컨테이너 이미지를 지원합니다. 로컬 환경이 Azure의 런타임 환경과 일치하도록 Docker Hub를 통해 이 컨테이너를 다운로드할 수 있습니다.

개발자 상자에서 로컬로 멀티 플레이어 서버 상태 머신을 단계별로 실행할 수 있는 디버깅 도구가 있습니다.

자세한 내용은 로컬에서 게임 서버 디버깅 및 PlayFab과 통합을 확인하세요.

다음 이미지는 게임 서버를 업로드하고 이 패키지를 선택한 컨테이너와 결합하는 주요 흐름을 보여 줍니다.

Thunderhead 컨테이너 흐름

관리형 컨테이너 업데이트

관리형 컨테이너는 Windows 프로젝트에 대해 가장 쉬운 통합 옵션이며 컨테이너에 익숙하지 않은 경우 시작하기 좋은 위치입니다.

관리형 컨테이너의 핵심 기능은 신뢰할 수 있는 플레이를 위해 PlayFab이 중요 보안 수정으로 기본 이미지를 자동으로 업데이트한다는 점입니다. 일반적으로 보안 업데이트는 매월 수행되며 서비스 중단을 야기하지 않아야 합니다. 자세한 내용은 Windows용 OS 패치 업데이트를 참조하세요.

업그레이드하는 동안 자연스럽게 재활용되는 대기 세션은 업데이트된 컨테이너 이미지와 동일한 게임 서버 패키지로 교체됩니다.

PlayFab이 사용 중인 관리형 컨테이너 이미지를 업데이트하려고 할 때 PlayStream 이벤트를 받게 됩니다.

PlayFab 게임 서버 SDK 통합

자세히 알아보기:게임 서버에 PlayFab 게임 서버 SDK(GSDK) 통합

PlayFab 게임 서버 SDK(GSDK)는 C++, C#Java와 같은 여러 프로그래밍 언어로 C++ C# 제공됩니다. GSDK는 게임 서버를 VM에 설치된 로컬 에이전트에 연결합니다. 이 에이전트는 PlayFab 제어 인프라와의 핵심 서버 상호 작용을 촉진합니다.

Thunderhead GSDK

게임 서버가 초기화되면 준비 상태로 전환되며, PlayFab은 게임 서버가 ReadyForPlayers()를 호출할 때까지 기다립니다.

이를 호출한 후에는 게임 서버가 대기 상태로 전환되고 RequestMultiplayerServer 메서드를 통한 매치 메이킹 서비스에서 PlayFab으로의 할당 요청을 기다립니다.

아래에 표시된 이미지는 PlayFab 멀티 플레이어 서버의 상태를 보여 줍니다.

Thunderhead 게임 서버 상태

표면적으로 ReadyForPlayers() 호출은 게임 서버를 실행하고 계속해서 구동하기 위해 필요한 유일한 요구 사항입니다. 그러나 최적의 사용자 환경을 제공하기 위해 처리해야 할 수 있는 여러 가지 콜백/이벤트가 있습니다.

서버 스크립트 및 PlayFab 구성 환경 변수

경우에 따라 게임 서버가 CMD, PowerShell 또는 Bash 스크립트("부트스트래퍼")를 실행하여 컴파일된 게임 서버 실행 파일을 실행하도록 해야 할 수 있습니다. 이 스크립트는 컨테이너의 내부 환경을 구성하거나, 실행 파일에 명령줄 인수를 전달하거나, 또는 게임 서버 실행 파일 자체에서 실행하지 않으려는 기타 작업을 전달할 수 있습니다.

편의를 위해 PlayFab은 일부 빌드 정보를 컨테이너에 다음 환경 변수로 구성합니다. GSDK를 통해 환경 변수에 액세스할 수 있지만, 스크립트에서 이러한 변수를 사용하는 것이 훨씬 쉽습니다.

  • PF_TITLE_ID - 세션 호스트의 타이틀 Id
  • PF_BUILD_ID - 세션 호스트의 빌드 Id
  • PF_REGION - 세션 호스트의 Azure 지역
  • PUBLIC_IPV4_ADDRESS - VM의 공용 IP 주소
  • PF_VM_ID - VM의 고유 식별자(예: 'xcloudeau4u4yxj4xymu:AustraliaEast:1E03_6f27ad88-9bc3-4ea3-8d16-75480aba4637:tvmps_0e05c37e0bbdca298a09fb0d597bd666eb7c5fd0ebcf1fed4c52e608a39a7c9c_d')
  • CERTIFICATE_FOLDER - 게임 인증서가 포함된 폴더
  • PF_SERVER_LOG_DIRECTORY - 게임 로그가 포함된 폴더
  • PF_SERVER_INSTANCE_NUMBER - 서버의 인스턴스 번호입니다. VM의 첫 번째 서버는 0이고, 두 번째는 1이고, 세 번째는 2입니다.