4 - 빌드 및 Bolt Server 디플로이

이 장에서는 게임 서버 실행 파일을 업로드하는 방법과 PlayFab Servers 2.0 서비스에서 빌드를 구성하는 방법을 살펴보겠습니다. 이제 게임의 바이너리를 가지고 있으므로, PlayFab 관리화면으로 되돌아가기 전에 마지막 단계는 모든 파일들을 하나의 패키지로 압축하는 것으로 예제와 같이 bolt_sample.zip 로 이름을 부여할 것입니다. 이 시점에 중요한 한 가지 중요한 상세 사항은 다음과 같습니다: 루트 레벨 (하위 폴더로 바이너리들을 포함하지 마세요)에서 게임 실행파일로 파일들을 압축하세요. 이렇게 하면 나중에 빌드 구성이 용이해집니다. 예제의 경우에서는, 실행 파일은 아래와 같이 bolt_sample.exe로 이름이 붙여집니다.

게임 서버 바이너리
게임 서버 바이너리

Thunderhead에서 새로운 빌드 생성하기

게임 서버를 운영하기 위해서는 먼저 필요한 모든 구성이 포함된 빌드(PlayFab 서비스)가 필요합니다. Thunderhead는 이러한 설정을 사용하여 컨테이너를 만들고, 방화벽을 구성하고, 가상 시스템을 다양한 영역에 배포합니다.

PlayFab 관리화면으로 돌아가서 왼쪽에 있는 Multiplayer 메뉴를 클릭하고 Build 탭에서 New Build를 선택합니다. 빌드를 올바르게 구성하기 위해 여러 필드를 채울 수 있습니다. 단계별로 살펴보겠습니다:

새로운 Thunderhead 빌드 생성하기
새로운 Thunderhead 빌드 생성하기

PlayFab의 공식 문서 페이지 this link에서 유사한 문서를 확인하실 수 있습니다.

메인 화면으로

빌드 상세 내용 - 정보

이 섹션에서는 빌드 이름을 지정하고 사용할 가상 시스템 구성과 VM당 실행할 수 있는 Game Servers 수를 선택합니다. 게임을 제대로 시뮬레이션하는 데 서버가 얼마나 많은 컴퓨팅 능력을 필요로 하는지를 선택하는 것은 중요한 부분이며, 이는 게임에 따라 다릅니다.

또한 PlayFab은 동일한 시스템에서 여러 서버를 실행할 수 있는 기능도 제공하므로 네트워크 사용량 및 CPU 사용량 측면에서 몇 가지 의미가 있습니다. 여기 https://docs.microsoft.com/en-us/gaming/playfab/features/multiplayer/servers/billing-for-thunderhead에서 VM 유형 및 가격에 대해 확인하실 수 있습니다.

  • 권장되는 옵션:
    • 빌드 이름: Bolt Server Build;
    • 가상 머신 선택: Standard_A8_v2 (8 cores);
    • 머신당 서버: 1.

메인 화면으로

빌드 상세 내용 - 가상 머신 OS

PlayFab Thunderhead는 Windows 및 Linux 가상 머신을 모두 지원하지만 Linux 서버를 실행하기 위한 프로세스에는 사용자가 스스로 컨테이너 이미지 를 구축하여 서버에 직접 업로드하는 과정이 수반됩니다. 반면 Windows 빌드는 바이너리를 보다 쉽게 업로드해야 하지만 유연성은 떨어집니다.

  • 권장되는 옵션:
    • 플랫폼: Windows;
    • 컨테이너 이미지: Windows Server Core.

메인 화면으로

빌드 상세 내용 - 에셋

여기가 게임 바이너리를 업로드할 장소입니다. 이 목록에 포함된 각 파일은 빌드 프로세스의 후반부에서 컨테이너 이미지에 삽입되고 컨테이너가 실행 중일 때 확장됩니다. 이를 통해 게임 실행에 필요한 모든 사용자 지정 파일을 전송할 수 있습니다.

Upload 버튼을 클릭하고 이전에 패키징 한 zip을 선택합니다:

  • 권장되는 옵션:
    • 에셋 패키지: bolt_sample.zip;
    • 마운트 경로: C:\Assets.

게임 바이너리 업로드
게임 바이너리 업로드

메인 화면으로

빌드 상세 내용 - 시작 명령어

이 필드는 간단하지만 강력합니다. 여기서는 실행 파일을 실행하기 위해 실행할 진입점 명령을 설정합니다. 헤드리스 모드에서 서버가 실행이 되도록 필요한 것처럼, 게임이 이 mode를 따라야 한다는 시그널을 보내기 위해 유니티 커맨드 라인 아규먼트들을 이용할 것 입니다.(여기)를 더 읽어보세요.

입력 필드에서, 다음을 작성합니다:

C:\Assets\bolt_sample.exe -batchmode -nographics

여러 부분으로 나누어 설명해 보겠습니다.:

  1. C:\Assets: 은 마운트 경로로 이전 필드에서 설정해둔 것으로, zip 파일이 압축 해제되는 곳입니다.
  2. bolt_sample.exe: 이전에 설정해둔 게임 실행파일의 이름입니다.
  3. -batchmode -nographics: 이것들은 게임이 헤드리스 모드로 실행되도록 하는 데 필요한 인수입니다. 다시 말해서, 아무것도 표시되지 않을 것이고, 어떤 입력도 호스트에서 캡처되지 않을 것입니다.

메인 화면으로

빌드 상세 내용 - 네트워크

서버가 외부 세계와 통신해야 하는 점을 고려하여 이 섹션에서는 필요한 모든 포트를 구성하여 변경 사항을 PlayFab에서 관리하는 컨테이너 및 가상 시스템의 방화벽 설정에 직접 적용할 수 있습니다.

우리는 2개의 포터 집합을 오픈해야 합니다: (i) 모든 연결이 조정되는 메인 Bolt 서버 포트입니다. 이 예제에서는 포트 60001을 임의로 선택했습니다. 그리고 (ii) 우리 서버와 Photon 서버와 통신을 하는데 필요한 Photon Cloud 포트로 여기에서 Photon에서 사용되는 전체 포트 목록을 확인할 수 있습니다. 하지만 우리가 관심이 있는 것은 UDP 포트만입니다. 아래 표로 올바른 포트를 확인하십시오.

포트 이름 프로토콜
60001 bolt_server UDP
5055 master_server1 UDP
27001 master_server2 UDP
5056 game_server1 UDP
27002 game_server2 UDP
5058 name_server1 UDP
27000 name_server2 UDP

메인 화면으로

빌드 상세 내용 - 선택 사항

CertificateMetadata 는 선택 필드이며 이 튜토리얼에서는 다루지 않습니다.

메인 화면으로

지역(Regions)

Regions 필드에서 플레이어를 대기할 서버를 배치할 지역을 정의합니다. 원하는 지역을 설정할 수 있습니다. 최소값인 1대기 서버최대 서버 로 설정했는지 확인하십시오. 이렇게 하면 1 로 가상 머신이 1 로 게임 서버를 실행하게 됩니다. 이러한 값은 나중에 변경할 수 있습니다.

  • 빌드 상세 내용:
    • Region: East US;
    • Standby servers: 1;
    • Maximum servers: 1.

메인 화면으로

빌드 및 연결

이제 빌드 설정이 제대로 설정되어 있으므로 다음 단계를 수행하려면 시간이 걸리니 저장 버튼을 클릭하고 커피 한 잔 가져오세요. 모든 구성을 유지한 후 PlayFab Orchestrator 가 씬에 입력되고 나머지 세부 정보를 처리합니다:

  1. Azure 인프라상에 사용할 수 있는 Hosting Machine을 프로비저닝합니다;
  2. 필요한 가상 머신 생성;
  3. 설정을 사용하여 Docker 이미지를 구성하고 생성;
  4. Game Server 실행으로 컨테이너 스폰.

메인 관리화면 Build 탭에 있는 Multiplayer 메뉴 내에서 이 프로세스의 상태를 직접 확인할 수 있습니다. 여러분은 아마도 Deploying 에서 Health로 가는 상태를 보게 될 것입니다.

녹색 Health 상태가 표시되면 서버가 PlayFab Thunderhead에 배포되어 실행되고 있음을 의미합니다! 야호!

다른 탭에서는 게임이 실행되는 Virtual Machine에 대한 더 많은 정보를 확인하실 수 있으며 VM 당 더 많은 서버를 실행하도록 선택한 경우 개별 인스턴스의 상태를 확인하실 수 있습니다. 또한 Azure VM에 원격으로 액세스할 수도 있습니다. 이 기능은 디버깅을 수행하는 데 매우 유용합니다.

이제 게임 서버를 연결할 준비가 되었습니다. Unity 프로젝트로 돌아가서 PlayFabHeadlessServer 씬부터 게임을 실행하면 클라이언트로 시작하여 Thunderhead 서버에서 게시한 세션에 가입할 수 있는 PlayFabClient 메뉴가 즉시 로드됩니다.

기술문서 TOP으로 돌아가기