ThirdPersonMP 예제 프로젝트 로컬 배포 및 디버깅
이 가이드의 목적은 로컬 컴퓨터에서 MPS 호환 방식으로 게임 서버를 실행하여 PlayFab에 업로드하기 전에 서버를 테스트 및 디버깅할 수 있도록 하는 것입니다.목표
- ThirdPersonMP+GSDK 프로젝트의 로컬 배포 옵션을 테스트합니다.
- LocalMultiplayerAgent를 사용하여 실행 시 서버가 제대로 실행되는지 확인합니다.
- 서버 인스턴스에 디버거를 연결할 수 있는지 확인합니다.
요구 사항
- Visual Studio를 다운로드합니다. Community 버전은 무료입니다.
- 필수 워크로드: .NET 데스크톱 개발 및 C++를 사용한 데스크톱 개발
- Unreal Engine 소스 코드를 다운로드합니다. 자세한 내용은 Downloading Unreal Engine Source code (외부)를 참조하세요.
- PlayFab Unreal GSDK가 설치되고 구성된 완료된 Unreal 프로젝트
- Visual Studio에서 빌드된 프로젝트의 “Development Server” 구성
- [선택 사항] LocalMultiplayerAgent 다운로드
- [선택 사항] 또는 LocalMultiplayerAgent 소스를 다운로드하세요.
- Visual Studio를 사용하여 이 리포지토리에서 빌드된 LocalMultiplayerAgent의 “Debug” 또는 “Release” 구성
- Visual Studio를 사용하여 MpsAgent.sln을 열고 Debug 또는 Release 구성을 선택한 다음 LocalMultiplayerAgent를 빌드합니다.
- [선택 사항] Docker for Windows 설치
표기법
{depot}은 Git 프로젝트를 다운로드하는 위치의 전체 Windows 경로를 나타냅니다. C:\depot, S:\depot, Z:\gitrepos 또는 편리한 드라이브와 경로 등 원하는 어느 곳이든 될 수 있습니다. 일반적으로 (특히 Unreal의 경우) {depot} 경로가 가능한 한 짧은 것이 권장됩니다. 저자의 경우 {depot}은M:\depot\GSDK로 해결됩니다. 예를 들어 위의 요구 사항 목록에서 다음 중 일부 또는 전부를 갖게 될 것입니다.
- {depot}/ThirdPersonMP
- {depot}/MpsAgent
- [선택 사항] {depot}/gsdk [이는 이전에 ThirdPersonMP에 설치된 PlayFab Unreal GSDK 플러그인을 포함합니다]
- [선택 사항] {depot}/UnrealMarketplacePlugin [이는 이 가이드에 필요하지 않지만 대부분의 PlayFab 기능에 필요한 PlayFab Unreal Marketplace 플러그인을 포함합니다]
지침
로컬 실행, 컨테이너 없음
먼저 LocalMultiplayerAgent가 서버 프로젝트를 실행하도록 구성해야 합니다. 첫 번째 반복은 격리 없이 로컬 PC에서 직접 프로세스를 실행합니다. Explorer에서 파일을 찾아 엽니다:{depot}\MpsAgent\LocalMultiplayerAgent\MultiplayerSettings.json. 이 가이드에 중요한 부분이 있는 이 파일의 축약 버전은 다음과 같습니다 [참고: json의 경로에서 이스케이프된 \‘s - 이는 json 파일이므로 모든 \‘s를 \\로 이스케이프해야 합니다]:
...로 가려진 json 파일의 부분은 프로젝트 기본값을 사용합니다. 중요한 필드의 목적과 값은 다음과 같습니다.
- RunContainer: 이 가이드에서는 항상 false입니다. 이를 true로 설정하려면 Docker가 필요합니다.
- true인 경우 ProcessStartParameters/StartGameCommand는 무시되고 대신 ContainerStartParameters/StartGameCommand가 사용됩니다.
- true인 경우 모든 것이 로컬 컴퓨터 컨텍스트가 아닌 docker 컨테이너에서 빌드되고 실행됩니다.
- 이 가이드는 서버 프로세스를 더 쉽게 디버깅할 수 있도록 RunContainer가 false인 시나리오를 다룹니다.
- 이를 true로 설정하려면 Shipping Server 빌드, 추가 Docker for Windows가 필요합니다.
- OutputFolder:
"<Local absolute path that will be used to store the required output artifacts>"- 이 위치는 완전히 정의되어야 하며 유효한 디렉터리가 이 위치에 있어야 합니다.
- AssetDetails/LocalFilePath: {PATH-TO-ZIP}
- 이 위치는 완전히 정의되어야 하며 이 위치에 유효한 zip 파일이 있어야 합니다.
- 이 zip 파일에는 완전히 구성된 “Shipping Server” 빌드가 포함되어야 합니다.
- PortMappingsList:
- 이는 Game Manager에서 포트를 정의하는 LocalMultiplayerAgent 동등물입니다.
- GSDK 플러그인은 gameport라는 이름의 포트를 찾도록 하드 코딩되어 있습니다.
- GSDK 플러그인 SetDefaultServerHostPort 메서드는 이 포트에 맞게 내부 Unreal 서버 호스팅 포트를 내부적으로 재정의합니다.
- GSDK 플러그인은 LocalMultiplayerAgent를 사용할 때 PortMappingsList에 구성된 gameport라는 이름의 포트만 사용합니다.
- 이 json을 사용하면 MPS에서 이 포트 번호를 로컬로 테스트하고 GSDK 플러그인이 제대로 수신하도록 할 수 있습니다.
- ContainerStartParameters/StartGameCommand: RunContainer가 false인 동안에는 사용되지 않습니다.
- RunContainer==true인 경우 ProcessStartParameters/StartGameCommand를 대체합니다.
- 이 경로는 docker 컨테이너 내의 내부 경로이며, AssetDetails/MountPath와 AssetDetails/LocalFilePath로 정의된 zip 파일 내부의 내부 경로-to-exe의 합이 됩니다.
- 이 예제에서는 다음이 될 수 있습니다:
C:\\Assets\\ThirdPersonMPServer.exe -log
- ProcessStartParameters/StartGameCommand: 이 명령은 사실상 exe에 대한 경로와 게임 서버를 시작하는 데 사용되는 명령줄 매개 변수가 됩니다.
- -log는 게임 서버가 실행 로그를 저장하도록 지시하는 Unreal 명령입니다.
- {PATH-TO-EXE}는 두 가지 선택 중 하나가 될 수 있습니다:
- 게임 서버(development 게임 서버 포함)에 대한 exe의 절대 경로와 서버에 대한 명령줄 매개 변수
- 이 선택은 zip 파일의 내용을 무시하고 대신 어느 위치에서든 임의의 exe를 실행합니다.
- 이는 development 빌드를 디버깅하기 위해 로컬 컴퓨터에서만 작동하는 로컬 디버그 옵션입니다: zip 파일이 MPS에 업로드할 준비가 되었는지 확인하는 데 도움이 되지 않습니다.
- 이 선택은 VS 디버거를 연결하는 데 적합한 development 서버를 테스트할 때 사용해야 합니다.
- 이 예제에서는 다음이 될 수 있습니다:
{depot}\\ThirdPersonMP\\Binaries\\Win64\\ThirdPersonMPServer.exe -log - 저자의 경우 이는 다음과 같습니다:
M:\\depot\\GSDK\\ThirdPersonMPGSDK\\Binaries\\Win64\\ThirdPersonMPServer.exe -log
- 서버를 실행하기 위해 zip 파일의 상대 경로를 나타내는 상대 경로
- 이는 MPS 클라우드 인스턴스에서 작동하는 방식을 반영하는 표준 워크플로입니다.
- 이 선택은 shipping 서버를 테스트할 때 사용해야 하며 zip이 MPS에 업로드할 준비가 되었는지 확인하는 데 도움이 됩니다.
- 이 예제에서는 다음이 될 수 있습니다:
ThirdPersonMPServer.exe -log
- 게임 서버(development 게임 서버 포함)에 대한 exe의 절대 경로와 서버에 대한 명령줄 매개 변수
서버 디버깅
Visual Studio에서 “Start New Instance” 명령(때때로 F5에 바인딩됨)으로 LocalMultiplayerAgent를 실행하거나{depot}\LocalMultiplayerAgent\bin\{configuration}\netcoreapp3.1로 이동하여 “LocalMultiplayerAgent.exe”를 두 번 클릭할 수 있습니다. 또한 cmd 창 내에서 이를 실행하여 디버그 로그 정보를 관찰하거나 캡처할 수 있습니다.
LocalMultiplayerAgent.exe를 실행하면 게임 서버가 시작됩니다. 일반적으로 이를 위해 Task Manager를 열어두는 것이 좋습니다. Task Manager의 Details 탭에서 게임 서버 프로세스 ID를 찾을 수 있습니다.
Task Manager에서 ThirdPersonMPServer 프로세스가 실행되는 것을 확인하면 Visual Studio로 돌아가 Debug 드롭다운 -> Attach to Process를 선택할 수 있습니다. 팝업 창에서 프로세스 이름 ThirdPersonMPServer를 검색한 다음 Task Manager에서 확인된 적절한 프로세스 ID를 선택할 수 있습니다.
이 시점에서 게임 서버로 일반적인 디버깅을 수행할 수 있어야 합니다.
참고: Unreal은 서버를 빌드하는 여러 빌드 구성과 여러 방법을 제공합니다. 최상의 결과를 얻으려면 “Development Server” 구성을 사용하고 Visual Studio에서 직접 빌드된 출력을 사용하세요. Shipping 빌드 또는 Development Editor의 빌드는 다른 상황에 대해 더 잘 작동할 수 있지만, Visual Studio에서 직접 빌드된 “Development Server” 구성은 Visual Studio에서 연결하고 디버깅하기가 더 쉽습니다.
