Skip to main content
Wrapper 샘플(wrappingGsdk라고도 함)은 기존 게임을 래핑하여 Windows OSLinux OS를 사용하는 게임 서버 빌드 배포에 사용할 수 있도록 합니다. Wrapper 애플리케이션을 사용하면 PlayFab 멀티플레이어 서버에서도 게임 서버 빌드를 사용할 수 있습니다.
Wrapper는 GSDK 메서드를 호출하기 위해 표준 출력 및 오류 스트림을 처리하는 해결 방법이며 프로덕션 용도로 사용할 수 없습니다.

샘플 콘텐츠

이 샘플은 두 개의 .NET Core 콘솔 애플리케이션으로 구성됩니다.
  • Wrapper—PlayFab 게임 서버 SDK(GSDK)용 최신 NuGet 패키지를 게임 서버와 통합합니다. 이 Wrapper 애플리케이션은 프로덕션 용도로 사용할 수 없습니다.
  • Fakegame—GSDK에 대한 지식이 없는 기본 게임 서버입니다. PlayFab 멀티플레이어 서버를 사용하기 전에 가지고 있었을 일반적인 게임 서버와 유사합니다. TCP 포트 80을 수신 대기하는 ASP.NET Core 웹 서버 Kestrel을 시작합니다. GSDK에 대한 지식이 전혀 없는 게임 서버를 시뮬레이션하기 위한 것입니다. 자체 게임 서버가 없는 경우 사용할 수 있습니다. 간단한 응답을 가져오는 /hello와 서버를 종료할 수 있는 /hello/terminate라는 두 개의 GET 경로가 있습니다.

요구 사항

PlayFab 멀티플레이어 서버를 사용하고 보려면 Game Manager에서 이 기능을 사용하도록 설정해야 합니다. 지침은 PlayFab 서버 기능 사용 설정을 참조하세요.

연습

이 샘플을 빌드하는 실시간 연습은 Microsoft Game Dev 2021의 프레젠테이션을 확인하세요(약 2:52에서 시작):

Wrapper 실행 파일 획득 및 빌드

  • 표준 Git 방법이나 zip 파일로 다운로드하여 GSDK wrapper 샘플을 가져옵니다.
  • 명령 프롬프트를 열고 cd 명령을 사용하여 wrapper.csproj 파일 위치로 디렉터리 경로를 변경합니다. 예: cd C:/ReplaceWithYourFilePath/wrappingGsdk/wrapper
  • 그런 다음, 다음 .NET Core CLI 명령을 실행합니다.
Wrapper 빌드가 성공하면 아래 이미지와 같이 실행 파일이 ..\wrappingGsdk\wrapper\bin\Debug\netcoreapp3.1\win-x64\publish 폴더에 게시됩니다.

게임 서버 자산 만들기

게임 서버 자산을 만드는 방법은 두 가지가 있습니다.

Wrapper와 함께 Fakegame 게임 서버 사용

build.ps1을 사용하여 두 프로젝트(wrapper 및 fakegame)를 빌드하고 패키징합니다. 이 스크립트는 필수 파일이 포함된 .zip 파일이 있는 드롭 폴더를 만듭니다.
  • PowerShell 열기
  • cd 명령을 사용하여 build.ps1 스크립트 위치로 디렉터리 경로를 변경합니다. 예: cd C:/ReplaceWithYourFilePath/wrappingGsdk/
  • \build.ps1 실행
  • 스크립트가 성공적으로 실행되면 ..\wrappingGsdk\drop\ 폴더로 이동합니다. 가짜 게임 서버 빌드, wrapper 실행 파일(이전 단계에서 빌드됨) 및 기타 필수 파일을 포함하는 gameassets.zip 파일이 생성된 것을 확인할 수 있습니다.

Wrapper와 함께 자체 게임 서버 파일 사용

평가에서 게임 프로젝트를 사용하려면 wrapper와 게임 서버 실행 파일을 같은 폴더에 배치합니다.
  • Wrapper 실행 파일 빌드 지침을 따르세요.
  • ..\wrappingGsdk\wrapper\bin\Debug\netcoreapp3.1\win-x64\publish의 wrapper 게시 위치로 이동합니다.
  • 다른 창에서 게임 서버 빌드 및 게임 서버 빌드를 실행하는 데 필요한 파일로 이동합니다. 어떤 파일이 필요한지 확실하지 않은 경우 필요한 DLL 파일 결정을 참조하세요.
  • 게임 서버 빌드와 모든 필수 파일을 wrapper 게시 위치에 복사합니다.
  • wrapper 게시 위치의 모든 파일을 선택합니다.
  • 모든 파일을 선택한 상태에서 마우스 오른쪽 버튼을 클릭한 다음 보내기 > 압축(zip) 파일 을 선택하여 압축합니다. wrapper 게시 폴더를 선택하여 zip에 추가하지 마세요. 이는 잘못된 매핑을 유발합니다.
교차 확인을 위해 Wrapper와 함께 Fakegame 게임 서버 사용의 지침에 따라 gameassets.zip을 빌드하고 참조로 사용합니다.

Linux 컨테이너 이미지 만들기 및 업로드(Linux 서버 전용)

Linux 컨테이너 이미지를 만들려면 Dockerfile이 필요합니다. Dockerfile은 확장자가 없는 텍스트 파일이며 지정된 컨테이너 이미지를 빌드하는 데 필요한 모든 명령을 포함합니다. 이 샘플에서는 이 파일이 이미 만들어져 있습니다. 컨테이너 이미지를 빌드하고 실행하기만 하면 됩니다. Windows 개발 디바이스를 사용하려는 경우 Linux용 Windows Subsystem(WSL)을 설치해야 합니다. 지침은 아래에 제공되어 있습니다. 자세한 내용은 Windows 및 Linux 컨테이너 이미지 차이점을 참조하세요.
  1. Windows 개발 디바이스 설정(선택 사항)
  2. PlayFab 컨테이너 레지스트리 로그인 자격 증명 가져오기
  3. 기존 Dockerfile 사용/자체 만들기 이 단계는 FakeGame 또는 자체 게임 서버를 사용하는지 여부에 따라 다릅니다.
    • FakeGame을 사용하는 경우 Dockerfile이 있는지 확인합니다.
    • 자체 게임을 사용하거나 Dockerfile을 만들어야 하는 경우 Dockerfile 만들기를 참조하세요. FakeGame용 Dockerfile을 시작점으로 사용할 수 있습니다.
  4. Ubuntu와 같이 Docker가 설치된 Linux 터미널을 엽니다. TAG 및 ACR 변수의 값을 사용자 값으로 바꿉니다. 그런 다음 아래 명령을 실행합니다.
ACR 및 TAG 변수가 제대로 정의되어 있는지 확인하려면 echo ACR__ 및 __echo TAG 를 실행합니다.
  1. 이전 단계에서 얻은 사용자 이름과 암호를 입력합니다.
  2. Linux 컨테이너 이미지를 빌드하고 업로드합니다.
Dockerfile을 빌드하고 업로드하려면 아래 명령을 실행합니다. docker build 명령 끝에 ”.”이 있습니다. Dockerfile과 동일한 폴더/디렉터리에 있어야 합니다. 자세한 내용은 Linux 컨테이너 이미지 빌드 및 업로드를 참조하세요.

Game Manager 또는 API를 사용하여 빌드 배포

배포 빌드 프로세스는 Windows 및 Linux 게임 서버에 대해 유사합니다.

Windows 게임 서버 배포

단계는 Windows Runner C# 샘플과 유사합니다. 아래 나열된 차이점을 사용하여 이러한 단계를 따르세요. 로컬에서 이 테스트를 원하는 경우 게임 서버 및 PlayFab과의 통합 로컬에서 디버깅을 참조하세요. 이 샘플에 관한 특정 설정
  • 시작 명령:
    • C:\Assets\wrapper.exe -g C:\Assets\fakegame.exe arg1 arg2 사용
    • 게임 서버 빌드를 사용하는 경우 fakegame.exe를 게임 서버 실행 파일 이름으로 바꿉니다.
  • 네트워크 구성: 이름: gameport, 포트: 80, 프로토콜: TCP
  • 자산: FakeGame을 사용하는 경우 gameassets.zip 을 자산으로 업로드합니다.

Linux 게임 서버 배포

배포하려면 아래 일반 단계를 따르세요. 이 샘플에 관한 특정 설정
  • 업로드한 컨테이너를 선택합니다.
  • 네트워크 구성: 이름: gameport, 포트: 80, 프로토콜: TCP
  • 자산 업로드 및 시작 명령 설정 필요 없음
RequestMultiplayerServer API를 사용하는 할당 중에는 연결할 포트가 80과 다릅니다. 이는 PlayFab 멀티플레이어 서버 서비스가 Azure Load Balancer(공용 인터넷에 포트를 노출함)와 Azure 가상 머신에서 실행 중인 게임 서버 간에 매핑을 만들기 때문입니다.

LocalMultiplayerAgent를 사용하여 Wrapper 실행

사용자 지정 게임 서버에서 GSDK 통합을 테스트하려면 LocalMultiplayerAgent를 사용하는 것이 좋습니다. Windows Containers와 함께 LocalMultiplayerAgent를 사용하는 경우 MultiplayerSettings.json 파일을 제대로 구성해야 합니다. 아래에서 예를 볼 수 있으며, LocalFilePath 및 StartGameCommand 값에 특히 주의하세요. fakegame.exe를 게임 서버 실행 파일 이름으로 바꾸는 것을 잊지 마세요.
이제 LocalMultiplayerAgent로 테스트할 준비가 되었습니다. 올바르게 구성한 경우 LocalMultiplayerAgent가 게임 서버를 시작하는 즉시 http://localhost:56100/Hello 에서 curl을 통해 연결할 수 있습니다.

MPS의 게임 서버에 연결하는 방법

MPS의 게임 서버에 연결을 설정하려면 적절한 포트 번호를 결정하는 것이 필수적입니다. 이 요구 사항은 부하 분산 장치 뒤에서 관리되는 각각 수많은 게임 서버 인스턴스를 실행할 수 있는 여러 가상 머신 구성에서 발생합니다. 이러한 설정에서는 단일 공용 IP 포트가 이러한 가상 머신의 다른 포트에 해당할 수 있으며 각각은 별개의 게임 서버 인스턴스와 연결되어 있습니다.

Game Manager 사용

Game Manager UI를 사용하여 게임 서버를 할당하고 이에 대한 연결을 설정할 수 있습니다.
  1. Game Manager에 로그인
  2. Multiplayer => Servers 페이지로 이동하여 빌드를 선택합니다.
  3. Servers 페이지로 이동하여 “Request server” 버튼을 클릭합니다.
  4. 다음 페이지에서 공용 IPv4 주소포트를 기록해 둡니다.
  5. curl을 사용하여 http://[IPV4Address]:[Ports->Num]/Hello 에서 연결합니다.”

MPS Allocator 샘플 사용

다음은 MPS Allocator 샘플을 사용하여 게임 서버를 할당하고 이에 대한 연결을 설정하는 방법입니다.
  1. MPS Allocator 샘플을 컴파일하고 실행합니다.
  2. “ListBuildSummaries” 명령을 적용하여 사용 가능한 빌드 및 해당 빌드 ID를 확인합니다.
  3. “RequestMultiplayerServer”를 호출하여 게임 서버 인스턴스에 대한 요청을 시작합니다.
  4. 선택한 빌드 ID를 “ListMultiplayerServers” 명령에 입력하여 사용 가능한 서버 목록을 생성합니다.
  5. 활성 게임 서버 인스턴스를 선택한 다음 이전 단계에서 얻은 빌드 및 세션 ID와 함께 “GetMultiplayerServerDetails”를 사용합니다.
  6. 응답에 표시된 IPV4AddressPorts->Num을 기록해 둡니다.
  7. curl을 사용하여 http://[IPV4Address]:[Ports->Num]/Hello 에서 연결합니다.

참고 항목

마지막 수정일 2026년 8월 25일