멀티 플레이어 서버의 수명 주기
GSDK(게임 서버 SDK) 및 게임 서버 프로세스 수명 주기
PlayFab 멀티 플레이어 서버(MPS)의 게임 서버 수명 주기는 게임 서버 프로세스의 상태뿐만 아니라 게임 서버가 호출하는 GSDK 메서드와 밀접하게 연결되어 있습니다.
참고 항목
게임 서버를 GSDK와 통합하는 방법에 대한 자세한 내용은 여기에서 문서를 확인하세요.
최소한 게임 서버는 ReadyForPlayers GSDK 메서드를 호출하기만 하면 GSDK를 통합하고 MPS에서 잘 실행할 수 있습니다. 그러나 MPS가 게임 서버가 초기화되고 있음을 알 수 있도록 게임 서버 프로세스가 시작될 때 Start도 호출하는 것이 좋습니다. 시작하는 데 시간이 걸리는 게임 서버의 경우 Start를 호출하는 것이 중요합니다. 게임 서버가 시작될 때 적시에 하트비트를 수신하지 않으면 MPS가 서버를 중단하기 때문입니다.
게임 서버의 상태
다음은 MPS에서 게임 서버의 기본 상태입니다.
- 초기화 중: 게임 서버는 Start() GSDK 메서드를 호출할 때 이 상태로 전환됩니다. 이 상태에서 게임 서버는 필요한 자산을 로드하기 시작합니다. 이 상태에서 GSDK는 하트비트를 MPS로 보내기 시작합니다.
- StandingBy: 게임 서버는 ReadyForPlayers() GSDK 메서드를 호출할 때 이 상태로 전환됩니다. 이 메서드는 필요한 모든 게임 자산이 로드되었을 때 호출되어야 합니다. 기본적으로 이 상태는 플레이어가 연결할 수 있도록 게임 서버를 할당할 준비가 되었음을 MPS에 알립니다.
- 활성: 게임 서버는 RequestMultiplayerServer API 호출을 사용하여 할당되면 이 상태로 전환됩니다. 이 상태는 플레이어가 게임 서버에 접속하여 게임을 즐길 수 있음을 의미합니다. 게임 서버가 활성 상태라는 사실은 잠재적인 빌드 규모 축소(즉, standBy 수가 감소하는 경우) 중에 중단되지 않는다는 것을 의미합니다.
- 종료: ShutDownMultiplayerServer API가 호출될 때 게임 서버가 전환되는 상태입니다. 이 상태는 게임 서버가 종료 중이며 플레이어가 연결할 수 없음을 의미합니다.
게임 서버 프로세스는 정상적으로 또는 충돌을 통해 종료될 수 있습니다. 이 작업은 모든 상태에서 발생할 수 있습니다. MPS는 다음을 수행합니다.
- 이 게임 서버를 실행하는 컨테이너/프로세스 제거
- 보관할 준비가 되도록 게임 로그를 수집하고 업로드합니다(자세한 정보).
- 종료된 것을 대체하기 위해 그 자리에 새 컨테이너/프로세스를 생성합니다.
참고 항목
게임 서버는 Active 상태일 때 StandingBy 상태로 다시 전환할 수 없습니다. 게임 상태가 활성으로 설정되면 새 게임 서버를 StandingBy 상태로 만드는 유일한 방법은 게임 서버 프로세스가 종료되는 것입니다.
최대 서버 수명
MPS 서버를 호스트하는 가상 머신의 최대 수명은 10일이므로 서버의 수명은 해당 수명의 제약을 받습니다. 서버의 수명은 최소 23시간으로 보장됩니다. MPS는 남은 시간이 23시간 미만인 VM에 서버를 할당하지 않습니다. GSDK는 VM이 강제로 종료되기 23시간 전에 OnMaintenanceScheduled 이벤트를 발생시켜 VM에서 실행 중인 모든 서버가 적시에 정상적으로 종료될 수 있도록 합니다. VM이 최대 수명인 10일에 도달했을 때 서버가 VM에서 계속 실행 중인 경우 서버가 강제로 종료되고 로그가 업로드되지 않습니다. 서버가 강제로 종료되지 않도록 하려면 해당 세션이 항상 23시간 미만인지 확인하거나 GSDK의 OnMaintenanceScheduled 이벤트를 사용하여 서버를 정상적으로 종료하고 플레이어를 기한 전에 다른 서버로 마이그레이션하세요.
게임 서버 프로세스 종료
게임 세션이 끝나면 새 게임 서버를 얻을 수 있도록 게임 서버 프로세스를 정상적으로 종료해야 합니다. 게임 서버 프로세스가 충돌하면 MPS는 충돌한 프로세스를 대체할 새 게임 서버 프로세스를 생성합니다. 게임 서버가 중단되거나 정지된 경우 언제든지 ShutDownMultiplayerServer API를 호출하여 게임 서버 프로세스를 수동으로 종료할 수 있습니다. 이 API는 게임 서버 프로세스가 스스로 종료할 수 없는 경우에만 호출되어야 합니다. 이 API를 호출하면 게임 서버가 "종료 중" 및 "종료됨" 상태로 전환되는 것을 볼 수 있습니다. 또한 종료 중이거나 종료된 상태에 있는 서버는 일정 시간이 지나면 시스템에서 교체됩니다.
참고 항목
사용하는 경우 게임 서버를 비정상으로 표시하는 메서드 호출이 GSDK에 있습니다. 현재 MPS에서는 무시되지만 향후 변경될 수 있습니다. 이 기능이 중요한 경우 여기의 GSDK 리포지토리에 메모를 남겨주세요.
게임 서버와 GSDK 통합 확인
MPS에는 게임 서버용 GSDK 통합을 테스트하기 위한 개발자 도구가 있습니다. 도구 이름은 LocalMultiplayerAgent이며 여기에서 다운로드할 수 있고 자세한 내용은 여기에서 문서를 확인할 수 있습니다.
GSDK 샘플
인기 있는 게임 엔진과의 통합을 보여주는 GSDK 샘플을 확인하려면 여기에서 MpsSamples 리포지토리를 확인할 수 있습니다.