Relay 서버
Relay 서비스를 사용하면 전용 게임 서버가 없어도 플레이어가 Relay 서버를 통해 서로 커뮤니케이션하도록 멀티플레이어를 쉽게 지원할 수 있습니다. Relay 서버는 게임 클라이언트 간에 지연이 낮은 데이터그램 교환을 통해 연결된 플레이어 간에 메시지를 전달하기 때문에 두 플레이어가 서로 직접 연결되지 않습니다. Relay 서버는 한 플레이어(호스트 플레이어)가 '서버' 역할을 하고 다른 여러 플레이어(참여 플레이어)가 '클라이언트' 역할을 하는 리슨 서버 패턴을 사용하는 게임에 이상적입니다.
Relay 서버는 모든 플레이어가 접속할 수 있는 공용 엔드포인트 역할을 합니다. 이러한 구조를 통해 네트워크 및 IP 주소 변경, NAT(네트워크 주소 변환), 플레이어 간 방화벽 등의 일반적인 문제를 해결할 수 있습니다. 각 플레이어는 동일한 IP 주소와 포트(선택한 Relay 서버의 IP 주소 및 포트)에 연결하면 되며, 게임 클라이언트는 게임 세션 내내 연결 정보가 동일하게 유지된다고 신뢰할 수 있습니다. 이러한 역참조를 통해 게임 세션의 플레이어는 서로의 IP 주소를 알 필요가 없고, 결과적으로 보안과 개인 정보 보호를 강화할 수 있습니다.
용량
호스트 플레이어의 게임 클라이언트는 게임 세션이 할당을 생성할 때 지원할 최대 플레이어 수를 정의합니다.
Relay 서버 라이프사이클
Relay 서버는 오래 실행되고 멀티 테넌트 연결 지점을 지원하도록 만들어졌습니다. 따라서 Relay 서버 라이프사이클은 게임 세션 라이프사이클과 무관합니다.
Relay 서버는 플레이어 연결이 시간 초과되면 플레이어의 연결을 해제합니다. Relay가 클라이언트의 연결을 해제할 때까지의 기본 TTL(Time to Live)은 10초입니다. 호스트가 혼자 있을 때(BIND
메시지가 전송되었지만 다른 플레이어가 CONNECT
메시지로 연결하기 전) 연결을 해제하는 TTL은 60초입니다. 의도하지 않은 시간 초과를 방지하기 위해 게임 클라이언트는 주기적으로 Relay 서버에 PING
메시지를 전송하여 연결 상태를 유지할 수 있습니다.
플레이어나 게임 클라이언트는 언제든지 CLOSE
메시지를 전송하여 Relay 서버와의 연결을 명시적으로 해제할 수 있습니다.