PlayFab ~멀티플레이 구현(Thunderhead)~

11월 중순에 프리뷰판이 구현된 PlayFab의 멀티 플레이 서버(Thaunderhead)에 관해 정리해 보았습니다

원래 멀티 플레이는 Photon과 협력하여 사용할 수 있었던 기능입니다.
PlayFab에서만 사용할 수 있습니다.
※라고 해도, 어디까지나 프리뷰판이므로 이용하려면 PlayFab측에의 의뢰가 필요

활성화하면 이런 식으로 설정할 수 있습니다.



〇실장에 미치노리〇



(1) GameServer 만들기



멀티용 게임 서버 만들기
PlayFab 멀티플레이 용 컨테이너 이미지는 WindowsCore를 기반으로 합니다.
로컬에서 테스트하는 경우 DockerHub을 통해 다운로드 할 수 있습니다.

※사적 빠짐 포인트※
1) DockerforWindows를 이용해 로컬로 Pull하려고 했는데 타임 아웃 해 버렸다
제대로 MicrosoftOfficial에 절차이 쓰여 있다는 함정
2) latest의 풀이 작동하지 않았다.
태그를 지정하면 되었습니다.
초보자에게 친절하지 않다.

덧붙여서 컨테이너는 현재 Linux에는 대응하고 있지 않지만, 조만간 지원될 예정이다

(2) GameServer 실행 파일, 자산 (필요한 경우 SSL 인증서) 업로드



게임 서버 실행 파일과 에셋을 업로드합니다.
Game Manager 또는 PlayFab API 및 SDK를 사용하여 서버를 업로드하고 빌드를 관리합니다.
자산 크기는 Zip 파일에서 10GB 이하여야 합니다.
배포할 서버의 리전과 각 리전에서 최소/최대 서버 수를 결정할 수 있습니다.
※계약하고 있지 않기 때문에 「용량이 없습니다」라고 표시되고 있습니다만, 본래는 표시되지 않는다(할 것)



(3) 게임 서버 빌드



업로드된 Build는 PlayFab 측에서 서버를 동적으로 생성하고 재활용할 수 있습니다.
서버는 Azure 내에서 배포됩니다.
Build를 업데이트하면 새 Build 추가와 함께 이전 서버의 대기 서버 수를 줄임으로써
이전 서버에 대한 할당량을 줄이는 방식으로 전환

(4) 플레이어의 대기 시간 확인



Play 또는 멀티 플레이를 시작하면 PlayFab 측에서 UDP 메시지를 전송하고 네트워크 지연을 Azure에서 측정합니다.
다중 서버는 12개 이상의 Azure 리전으로 구성되어 리던던시와 사용자가 가까운 리전에서 플레이할 수 있습니다.
UDP에서 비콘을 보내는 C++ SDK는 공식 에서 제공됩니다.

(5) 플레이어의 요청 처리



로비 서버 또는 매칭 서버 또는 클라이언트에서 직접 요청이 날아옵니다.
GameServe는 컨테이너이므로 IPv4의 IP가 할당됩니다.
포트 번호도 설정함으로써 임의로 변경 가능합니다.
(다만 사전에 전개되는 Azure측에서 열어 둘 필요가 있는 모양)

(6) 연결



서버가 활성화되면 클라이언트는 서버에 연결하여 멀티 플레이를 할 수 있습니다.
사용자의 액세스에 따라 설정한 숫자로 서버의 확장이 자동으로 이루어지는 느낌
아무래도 로그는 서버로부터 수동으로 가져오지 않으면 안되는 모양・・・

※현재 C#, C++, Java의 샘플 코드는 나와 있지만, Unity의 샘플은 2019년 1월경까지 준비된다는 것

미리보기 버전이므로 서비스를 만지지 못했기 때문에 확인할 수 있으면 추가하고 싶습니다 (희망)

좋은 웹페이지 즐겨찾기