compass서버 브라우저

Server Browser를 빠르게 시작하고 다양한 장르의 예시 시나리오를 살펴보세요.

Server Browser는 다음을 위한 관리형 서비스입니다: 배포영구 서버:

  • 플레이어가 적절한 서버를 검색하고 참여하도록 돕기 용량, 지연 시간 또는 게임 매개변수를 기준으로;

  • 새 서버를 미리 예열하여 전 세계 사용자를 대규모로 수용하고 답답한 대기열을 방지하기 위해;

  • 서버 운영을 간소화하기 업데이트, 재시작, 지속성, 메시싱 등을 포함합니다.

circle-check

✔️ 준비

기능 및 흐름

Server Browser: 흐름과 계층 구조

Server Browser는 두 가지 주요 기능을 제공합니다:

서버 브라우저 게임 클라이언트와 함께 다음을 수행합니다:

  • 적합한 서버 인스턴스를 검색하고 찾고, 슬롯을 확인하며, 사용 가능한 용량을 예약합니다.

  • 인스턴스 슬롯에 자리를 예약하고, 연결 정보를 가져오고, 서버에 연결합니다.

  • 다음을 사용하여 배포에서 플레이어 연결을 인증합니다 연합 ID.

  • 검색 기준을 수정하기 위해 인스턴스 슬롯의 사용 가능한 용량 및/또는 메타데이터를 업데이트합니다.

서버 브라우저 (선택 사항) 다음과 함께 스케일링 정책을 사용합니다:

  • 지역별 및/또는 기타 기준별로 사용 가능한 서버 인스턴스, 슬롯, 용량을 모니터링합니다.

  • 미리 예열 또는 필요 시 스케일링을 통해 용량을 늘리기 위해 서버를 배포합니다.

  • 데모, 업데이트, 테스트, QA, 토너먼트 등을 위한 특수 정책으로 운영을 자동화합니다.

circle-info

출시 후에는 서버 브라우저가 연중무휴 24시간 실행되어야 하며 전 세계 플레이어가 서버에 참여할 수 있도록 보장해야 합니다.

▶️ 탐색 시작

효율적인 서버 사용을 보장하기 위해 서버/플레이어 수명 주기와 각 책임에 대해 알아보세요.

인증

Server Browser는 자동으로 두 가지 유형의 토큰을 생성합니다:

  • 서버 토큰 - 다음에 필요: 서버 API 메서드, 다음으로 앱 버전 변수로 주입 가능.

    • 모든 API 메서드에 대한 액세스 권한을 부여하며, 테스트, DevOps 또는 맞춤 오케스트레이션에 유용합니다.

  • 클라이언트 토큰 - 다음에 필요: 모니터 API 및 좌석 예약 API 게임 클라이언트에서 사용됩니다.

    • 토큰 순환을 쉽게 하기 위해 이 토큰을 제3자 비밀 저장소에 보관하는 것을 권장합니다.

인스턴스 검색

circle-exclamation
circle-info

다음을 참조하세요 서버 브라우저 스케일링 정책에 대해 알아보고 배포를 자동으로 시작합니다.

필수 정보 각 서버 인스턴스에는 다음이 포함됩니다:

  • 인스턴스 초기화 시 최소 하나의 슬롯이 정의되어 있어야 하며,

  • 서버 연결 정보 - URL, IP, 포트 정보 및 위치.

선택적 사용자 지정 메타데이터 매개변수 플레이어 필터링, 정렬 및 탐색용; 예:

  • 슬롯 정보 - 팀 용량 및 팀별 메타데이터(예: 팀 이름),

  • 이름 및 태그 - 사용자 정의 가능하고 고유하며 사람이 읽을 수 있고 검색 가능한 레이블;

  • 호환성 데이터 - 서버 버전 또는 지원되는 클라이언트 버전;

  • 지연 시간 식별자 - 도시 및 지역 식별자, 그리고 할당된 핑 비컨 세부 정보;

  • 게임 매개변수 - 레벨/씬/맵, 게임 모드, 난이도, 사용된 모드;

  • 플레이어가 적합한 서버를 필터링하고 찾는 데 도움이 되는 기타 사용자 지정 매개변수.

circle-info

위의 메타데이터 매개변수는 예시일 뿐이며, 필요에 따라 원하는 만큼 매개변수를 정의할 수 있습니다.

circle-check

서버는 언제든지 인스턴스 또는 슬롯 메타데이터를 업데이트할 수 있습니다 검색 가능성 기준을 수정하기 위해. 메타데이터를 업데이트할 때는 변경되지 않았더라도 모든 인덱스 키에 유효한 값이 제공되어야 합니다.

서버 인스턴스는 정기적으로 유지 신호(heartbeat)를 보내야 합니다 현재 사용 가능 여부를 확인하고, 플레이어가 충돌했거나 오프라인인 서버에 연결하지 못하도록 방지하기 위해서입니다. 구성된 만료 기간 동안 하트비트가 누락되면 인스턴스와 보류 중인 좌석 예약이 자동으로 삭제됩니다.

circle-info

다음을 참조하세요 지속성 영구적인 월드 상태를 관리하고 앱 및 버전 더 빠른 배포를 위해.

용량 할당

인스턴스 및 슬롯 용량은 두 가지 방법으로 할당할 수 있으며, 개별적으로 사용하거나 결합할 수 있습니다:

  • 서버 브라우저 특정 스케일링 정책으로 시작된 서버를 선택하기 위해

  • 서버 브라우저 플레이어가 필터를 정의하고 적합한 서버를 둘러보며 선택하도록 하기 위해.

circle-check

자동 할당 예약

circle-info

다음과 같이 하려면 이 기능을 구현하세요 서버를 자동으로 선택하고지역별 용량을 기준으로.

플레이어는 플레이어 ID와 스케일링 정책 이름만 제공하여 자동 할당 예약을 생성할 수 있습니다. Server Browser는 충분한 참여 가능 용량을 제공하는 슬롯이 있는 인스턴스를 자동으로 찾아 좌석을 예약하고, 즉시 인스턴스 연결 정보를 반환합니다.

이 예약에 적합한 인스턴스 슬롯이 없으면 응답은 다음과 같습니다:

  • 상태 코드는 정책이 확장 중인지 여부를 나타냅니다 그리고 더 많은 용량이 추가될 예정입니다,

  • 헤더 Retry-After 재시도 전 대기 시간(초)을 나타냅니다, 재시도 가능한 경우.

예약이 완료되면 다음으로 건너뛸 수 있습니다 서버 브라우저.

검색 및 탐색

circle-info

다음과 같이 하려면 이 기능을 구현하세요 사용자에게 서버 목록을 보여주고 사용자 지정 예약을 허용합니다.

플레이어는 서버 인스턴스를 나열하고 결과를 페이지 단위로 탐색하여 참여하고 싶은 서버를 찾을 수 있습니다.

인스턴스와 슬롯은 기본 제공 매개변수 또는 인덱싱된 메타데이터로 필터링 및 정렬할 수 있습니다:

속성
데이터 유형
인스턴스
슬롯

request_id

문자열

total_joinable_seats, total_available_seats

정수

name

문자열

available_seats, reserved_seats

정수

created_at, updated_at

문자열

metadata.{index} (사용자 지정)

문자열, 정수, 실수, 불리언

사용 가능한 필터링 연산자는 필터링된 속성의 데이터 유형에 따라 달라집니다:

매개변수
연산자
예시 필터(간단한 예시 기준)

문자열

eq 또는 ne 또는

lt 또는 le 또는

gt 또는 ge 또는 포함

정수, 실수

eq 또는 ne 또는

lt 또는 le 또는

gt 또는 ge

불리언

eq 또는 ne

circle-check
circle-info

커서 기반 서버 브라우저 에 대해 알아보고 사용자가 더 많은 결과를 가져올 수 있도록 하세요.

좌석 예약

서버에 참여하기 전에, 인스턴스에 충분한 사용 가능 용량이 있는지 보장하기 위해 좌석 예약이 필요합니다. 예약에는 플레이어 그룹 또는 단일 개인이 포함될 수 있습니다.

연합 ID: 플레이어는 예약 시 고유한 제3자 플레이어 ID를 제공해야 합니다. 그들이 서버 브라우저 같은 ID를 다시 보내면 서버가 신원을 확인할 수 있습니다.

예약이 성공적으로 이루어지면(200 OKarrow-up-right) 플레이어는 즉시 연결을 시도해야 합니다. 보류 중인 예약은 서버에서 확인되지 않으면 30초 후(구성 가능) 만료됩니다 .

슬롯의 참여 가능 좌석 용량을 초과하는 예약은 자동으로 거부됩니다 (409 Conflictarrow-up-right). 참여 가능 좌석은 아직 다른 플레이어가 예약하지 않은 사용 가능한 좌석입니다.

circle-info

서버는 슬롯의 용량을 강제로 변경하거나, 슬롯을 추가/삭제/업데이트할 수 있습니다. 보류 중인 예약이 새 사용 가능 슬롯 용량을 초과하면 해당 슬롯의 모든 예약이 제거됩니다.

서버에 연결

플레이어가 적합한 인스턴스를 찾으면 다음에서 필요한 연결 정보를 가져옵니다 (URL 또는 IP, 외부 포트). 좌석 예약이 완료되는 즉시 플레이어는 배포의 게임 서버에 연결을 진행하고 자신의 플레이어 ID를 전달할 수 있습니다.

다음의 경우 PIE(에디터)에서 연결하려면 개발 및 테스트 중에는 틸드 키를 누르고 ~ 다음을 입력하세요 open {URL}:{port} 그런 다음 에디터가 맵을 로드할 때까지 기다립니다.

circle-check

새 연결을 인증하려면 서버는 모든 새 플레이어의 ID와 함께 일괄 예약 확인 요청을 보내고, 확인 응답에서 정보를 받아야 합니다:

  • 승인된 플레이어 예약을 선호 슬롯에 할당,

  • 만료된 플레이어 예약을 선호 슬롯에 할당,

  • 알 수 없는 플레이어 ID 목록.

귀하의 서버는 각 플레이어 그룹을 어떻게 처리할지 그리고 만료되었거나 거부된 사용자를 허용할지 또는 추방/차단할지 결정할 수 있습니다. 각 인스턴스의 슬롯은 새로운 사용 가능 좌석 수로 즉시 업데이트되어야 하며 향후 예약이 슬롯 용량을 초과하지 않도록 해야 합니다.

서버 떠나기

플레이어가 떠나면 서버는 할당된 슬롯의 사용 가능 좌석 용량을 늘려야 합니다.

circle-check

다음에 대해 읽어보세요 지속성 답답한 영구 서버 롤백을 방지하기 위해.

🚀 자동 스케일링

Server Browser는 여러 가지 서로 다른 자동 확장 방법과 호환됩니다:

다음 가이드는 다음에 초점을 맞춥니다 스케일링 정책을 통한 미리 예열 을 주요 방식으로.

circle-check

용량 모니터링

스케일링 정책은 모니터링되는 서버 인스턴스(검색된 배포) 목록을 지속적으로 새로 고치며, 다음마다 반복됩니다 monitoring_interval . 각 정책은 동일한 필터링 구문 을 사용한 필터가 필요합니다. 플레이어가 인스턴스를 검색할 때 사용하는 것과 동일하게 - 지역별, 용량별 또는 기타 기준별로.

구성한 minimum_active_instances 수량은 다음 중 하나로 처리할 수 있습니다:

  • 고정 용량 항상 실행 상태로 유지할 배포 수

  • 미리 예열된 대기 배포 버퍼로 초기화 지연을 숨깁니다.

고정 용량

다음과 같은 게임을 위해 활성 서버 수를 일정하게 유지합니다 지속성, 특히 이러한 게임이 플레이어에게 프로비저닝 옵션을 제공할 때 지속성.

이 유형의 정책 구성은 품질 보증, 토너먼트, 비공개 알파, 퍼블리셔 데모 또는 기타 제한된 용량의 이벤트 및 운영에도 때때로 사용됩니다.

circle-info

스케일링 정책은 충돌한 서버를 자동으로 재시작하고 즉시 순환시켜줍니다.

미리 예열된 대기

다음과 같은 경우 플레이어 수요보다 앞서 서버를 시작하세요:

  • 대규모 출시를 진행 중이며 짧은 시간 내에 플레이어 유입이 급증할 것으로 예상되는 경우,

  • 또는 서버 초기화에 30초 이상 걸리는 경우(배포 시간 제외),

  • 또는 게임이 계층형 또는 순환형 네트워크 종속성이 필요한 메시싱 전략을 구현하는 경우.

서버 배포

모니터링 중인 서버 인스턴스의 수가s 구성된 최소 활성 인스턴스 수 아래로 떨어지면 새 배포가 자동으로 시작됩니다. 모든 배포는 즉시 요청되며 이후 모니터링 간격마다 무한히 재시도됩니다 deployment_registration_period 이 경과한 후.

circle-exclamation

정책은 다음과 함께 배포를 시작합니다 전용 플릿 (클라우드로 오버플로 포함) 또는 클라우드에 직접.

사용 가능한 매개변수에는 다음이 포함됩니다(API 사양 참조):

  • 애플리케이션 및 버전 - 빌드 버전, 리소스 및 기타 오케스트레이션 매개변수,

  • 사용자 - 선호하는 단일 지리적 좌표 세트 서버 배치,

  • 비공개 호스트 ID - 클라우드의 경우 비워 두거나, 원하는 지역 내 호스트를 지정하세요,

  • 태그 - 나중에 이 정책으로 시작된 배포를 찾을 수 있도록 정책 이름으로 태그 지정,

  • 환경 변수 - 서버에 사용자 지정 매개변수와 비밀을 전달,

  • 웹훅 - 배포 수명 주기 이벤트를 게임 백엔드(또는 매치메이커)에 알림,

  • 캐시된 위치 필요 - 캐시된 위치에서만 더 빠른 배포를 원한다면.

예시 정책

필요에 따라 이 정책들을 테스트하고 수정하세요. 대부분의 게임은 여러 정책을 사용합니다.

테스트를 위해 항상 하나의 서버가 배포되도록 유지하는 간단한 정책입니다.

⚙️ 구성

Server Browser API는 새 Server Browser를 만들 때(또는 빠른 재시작 시) 지정하는 JSON 구성에서 생성됩니다. 서버 및 슬롯 만료, 그리고 사용자 지정 메타데이터를 지정할 수 있습니다:

circle-info

최고의 성능을 위해 필터링 또는 정렬에 사용되지 않는 메타데이터에 대해 인덱스를 지정하지 마세요. 인덱싱되지 않은 매개변수도 서버 인스턴스 또는 슬롯 세부 정보 API 메서드로 설정하고 읽을 수 있습니다. 다음을 참조하세요 📗 API.

☁️ 호스팅 클러스터

Server Browser는 Edgegap이 편리하게 연중무휴 24시간 호스팅 및 관리합니다.

목표에 가장 적합한 호스팅 옵션을 선택하세요:

프라이빗 클러스터 티어

한 번의 클릭으로 프라이빗 클러스터로 업그레이드하여, 공개 출시된 게임을 위해 Edgegap 팀이 유지 관리하고 24/7 실시간 지원을 제공하는 고가용성 호스팅의 혜택을 누리세요.

인스턴스의 리소스 요구 사항은 다음 요인에 따라 달라집니다:

  • 플레이어 수 - 플레이어 수가 많을수록 API 요청 수가 늘어납니다,

  • 플레이어당 요청 수 - 재시도 속도가 빠를수록 서비스 부하가 증가하고 리소스를 더 많이 사용합니다,

  • 서버 수 - 서버 수가 많을수록 저장되는 데이터와 API 요청 수가 늘어납니다,

  • 클라이언트 재시도 폴백 로직 - 지터가 적용된 백오프로 재시도하면 트래픽 급증 피크를 분산하는 데 도움이 됩니다,

  • 평균 매치 지속 시간 - 세션이 짧을수록 서버 브라우저와 더 자주 상호작용해야 합니다.

📗 API

시작을 빠르게 할 수 있도록 언리얼 엔진 또는 유니티 미리 만들어진 예제를 사용해 보세요.

게임 클라이언트와 전용 서버는 수명 주기 전반에 걸쳐 Server Browser로 API 요청을 보냅니다.

API 사양 가져오기 Scalar API 웹 클라이언트arrow-up-right 또는 Swagger Editorarrow-up-right 에서 세부 정보를 확인하세요.

페이지 매김

Server Browser는 특정 순서로 필터링된 데이터를 점진적으로 가져오기 위해 커서 페이지 매김을 제공합니다. 이 방식은 기존의 limit-offset 페이지 매김과 달리, 더 많은 결과를 가져올 때마다 커서(시작 지점)와 페이지 크기(응답 항목 수)를 전송해야 합니다.

circle-info

게임 서버 메타데이터를 위해 개발된 당사의 독자적인 데이터베이스 인덱싱 시스템과 결합된 커서 페이지 매김은 매우 동적인 데이터를 필터링할 때 빠르고 일관되며 유연한 사용자 경험을 제공합니다.

우리의 목표는 사용자가 첫 번째 페이지에서 적합한 서버를 찾게 하는 것입니다. 최상의 경험을 위해 이전 페이지의 캐시된 결과를 표시하고, 사용자가 검색을 클릭할 때만 결과를 새로 고치는 것을 권장합니다.

🔖 변경 로그

circle-info

Server Browser의 최신 버전은 1.0.0 입니다. 다음 항목을 주의해서 살펴보세요 업데이트 및 공지.

마지막 업데이트

도움이 되었나요?