지역
Photon Cloud는 다양한 지역에 서버를 호스팅 하여 전 세계적으로 빠른 게임 환경을 제공합니다.
클라이언트는 Photon 네임 서버에서 지역 목록을 가져옵니다. 프로젝트의 수명 동안 새로운 지역이 추가되거나 오래된 지역이 더 이상 사용되지 않을 수 있습니다.
각 지역은 서로 완전히 독립적이며, 매치메이킹을 위한 마스터 서버와 룸을 호스팅 하는 게임 서버로 구성됩니다.
사용 가능한 지역 목록은 제품(Fusion, Quantum, Chat 등)에 따라 다릅니다.
지역 허용 목록을 사용하여 AppId 별로 사용할 수 있는 지역을 정의할 수 있습니다(아래 참조).
아래는 이 제품에 대한 지역 목록입니다.
사용 가능한 지역
Photon Cloud는 전 세계 여러 호스팅 센터에 분산된 여러 지역의 서버로 구성되어 있습니다.
일부 지역 서버는 특정 제품 및 클라이언트 SDK만 지원합니다. 예를 들어, Fusion 클라이언트는 일본 지역을 사용할 수 있지만 Chat은 사용할 수 없습니다.
각 Photon Cloud 지역은 대소문자를 구분하지 않는 짧은 문자열인 "지역 토큰"으로 식별됩니다.
예: "EU" 또는 "eu"는 동일한 유럽 지역을 나타냅니다.
지역 | 호스팅 위치 | 토큰 |
---|---|---|
아시아 | 싱가포르 | asia |
호주 | 시드니 | au |
캐나다 동부 | 몬트리올 | cae |
중국 본토 (설명 보기) | 상하이 | cn |
유럽 | 암스테르담 | eu |
홍콩 | 홍콩 | hk |
인도 | 첸나이 | in |
일본 | 도쿄 | jp |
남아프리카 | 요하네스버그 | za |
남아메리카 | 상파울루 | sa |
대한민국 | 서울 | kr |
터키 | 이스탄불 | tr |
아랍에미리트 | 두바이 | uae |
미국 동부 | 워싱턴 D.C. | us |
미국 서부 | 산호세 | usw |
미국 남중부 | 댈러스 | ussc |
허용 지역 목록
허용 지역 목록을 사용하면 관리 화면에서 애플리케이션 별로 사용 가능한 지역을 직접 사용자 정의할 수 있습니다. 최적의 지역 기능을 사용하는 클라이언트는 자동으로 조정됩니다.
더 많은 지역을 사용하거나 줄임으로써 서비스 품질(플레이어와 가까운 지역일수록 왕복 시간이 더 짧아짐)과 매치메이킹 경험(적은 지역일수록 지역당 더 많은 플레이어를 의미함) 간의 균형을 맞출 수 있습니다.
앱별로 지역을 정의하려면, 관리 화면 열기, 선택한 애플리케이션의 "관리"를 클릭한 다음 "허용 목록 편집"을 클릭하십시오. 다음과 같이 허용 지역 목록을 입력할 수 있는 입력 필드가 제공됩니다:
- 사용 가능한 지역은 위에서 SDK 별로 나열되어 있으며, 때로는 산업 서클에 대해 별도로 나열됩니다.
- 허용 목록은 세미콜론으로 구분된 지역 토큰 문자열이어야 합니다. 예: "eu;us".
- 지역 토큰은 대소문자를 구분하지 않습니다.
- 정의되지 않았거나 인식되지 않은 지역 토큰은 목록에서 무시됩니다.
- 빈 문자열("") 또는 잘못된 형식 문자열(예: ";;;")은 모든 사용 가능한 지역이 허용됨을 의미합니다.
변경(확인 및 저장) 후 10분 이내에 네임 서버가 필터링 된 목록을 연결 클라이언트에 전송합니다.
클라이언트 측의 충돌을 피하려면 핑을 통해 "최적의 지역"에 연결하거나 지역 목록에서 받은 지역을 선택하십시오.
지역 선택 방법
미국 사용자는 Photon Cloud의 미국 지역에 연결할 경우 가장 낮은 지연 시간을 경험할 수 있습니다. 간단합니다.
하지만 전 세계에 사용자가 있다면 어떻게 해야 할까요?
옵션은 다음과 같습니다..
- a) 게임 클라이언트가 다양한 Photon Cloud 지역에 핑을 보내고 가장 낮은 핑의 지역을 미리 선택하도록 설정합니다. 방법 보기를 참조하세요.
- b) 지역에 맞춘 클라이언트 빌드를 배포하여, 서로 다른 지역의 사용자가 다른 Photon Cloud 지역에 연결되도록 합니다.
- c) 게임 UI 내에서 사용자가 적합한 지역을 선택할 수 있도록 합니다.
- d) 높은 지연 시간이 게임 플레이에 영향을 주지 않는다면, 모든 사용자를 동일한 지역에 연결시킵니다.
모든 Photon Cloud 앱은 추가 비용 없이 모든 사용 가능한 지역에서 작동합니다.
Photon Cloud의 대시보드를 통해 각 지역에서 게임의 사용량을 모니터링하고 구독 플랜을 손쉽게 업그레이드하거나 다운그레이드 할 수 있습니다.
C# Realtime API
Photon Realtime(대부분의 Photon SDK에서 사용)은 연결할 최적의 지역을 감지하고 해당 지역에 고정할 수 있는 기능을 제공합니다.
이를 위해 클라이언트는 연결 시 항상 네임 서버에서 사용 가능한 지역 목록을 가져옵니다.
서버의 응답은 LoadBalancingClient.RegionHandler
를 설정하는 데 사용되며, 이는 IConnectionCallbacks
에 정의된 콜백 OnRegionListReceived(RegionHandler regionHandler)
를 통해 제공됩니다.
일반적으로 다음 단계는 regionHandler.PingMinimumOfRegions()
를 호출하여 각 지역의 현재 핑을 감지하는 것입니다. 완료 시 호출할 메서드를 전달해야 하며, 가능하면 이전 실행에서 저장된 "최적의 지역 요약"을 전달할 수도 있습니다(아래에 설명됨).
서버를 핑한 후, (새로운) 결과는 regionHandler.SummaryToCache
에 요약되며, 나중에 사용할 수 있도록 기기에 저장되어야 합니다.
이전 세션의 SummaryToCache
가 없으면 모든 지역을 핑하게 되어 시간이 조금 더 걸립니다.
이전 결과가 있는 경우, 클라이언트는 다음을 확인합니다:
a. 지역 목록이 변경되었는지(이전 "최적의 지역"이 여전히 사용 가능한 경우 포함)
b. 핑이 더 이상 허용되지 않는 수준인지(이전 저장된 참조 값의 1.5배 이상 느린 경우)
위의 둘 중 하나에 해당하면 모든 지역을 핑하고 새 결과를 선택합니다.
최적의 지역 기능은 대시보드의 서버 측 지역 필터와 잘 작동합니다.
이를 통해 플레이어에게 제공되는 지역 목록을 필요에 따라 변경할 수 있습니다.
지역 목록에 접근하거나 이전 결과를 재정의하려면 지역에 대한 API 참조를 확인하세요.
PUN
"최적의 지역" 선택은 PhotonNetwork.ConnectUsingSettings()
를 사용할 때 기본적으로 수행됩니다.
플레이어 환경 설정에 결과를 자동으로 저장하는 것 외에도, 워크플로는 Realtime API와 동일합니다.
최적의 지역은 "고정적"입니다.
즉, 클라이언트는 일반적으로 하나의 지역을 더 오랜 기간 동안 사용합니다.
이후 시작 시에도 해당 지역에 다시 핑을 보냅니다.
PUN은 유니티의 PlayerPrefs를 사용하여 최적의 지역 요약을 자동으로 저장합니다.
편의성과 디버깅 목적으로 현재 "최적의 지역" 및 해당 핑 값은 유니티 편집기의 PhotonServerSettings에서 확인할 수 있습니다.
그러나 이는 유니티 편집기의 플레이 모드에만 유효합니다.
유니티 편집기와 동일한 머신에서 실행되는 빌드에서는 다른 최적의 지역을 사용할 수 있습니다.
최적의 지역에 대한 고려 사항
"최적 지역" 옵션은 결정론적이지 않습니다.
때로는 약간의 변동성 또는 정확히 동일한 핑 계산으로 인해 "무작위" 일 수 있습니다.
이론적으로 가능한 것:
- 동일한 기기에서 여러 영역으로 동일한 핑 값을 가진 경우입니다. 따라서 동일한 네트워크에 연결된 클라이언트는 무작위로 다른 지역에 연결됩니다.
- 동일 네트워크에 연결된 서로 다른 기기에서 동일한 지역에 대하여 서로 다른 핑 값(또는 동일한 기기에서 다른 시도)
예를 들어, "us" 그리고 "usw"인 경우(또는 "ru" 그리고 "rue")에, 원하는 지역을 선택 또는 나머지 지역을 없앨 수 있도록 온라인 지역 화이트리스트를 사용할 수 있거나 지역을 지정하여 접속할 수 있습니다.
개발 지역
PUN v2.17부터 "개발 지역"이라는 새로운 기능이 추가되었습니다.
PhotonServerSettings에서 사용할 수 있는 새로운 설정입니다.
이 설정을 사용하면 모든 개발 빌드가 동일한 지역을 사용하여, "최적의 지역" 선택으로 인해 초기 매치메이킹 문제가 발생하는 것을 방지합니다.
PhotonServerSettings가 생성될 때 "개발 빌드"가 자동으로 활성화되며, 유니티 편집기에서 PlayMode를 처음 실행할 때 "개발 지역"이 설정됩니다.
"개발 지역"은 유니티 편집기와 "개발 빌드"에서만 사용되며, PhotonNetwork.ConnectUsingSettings()
를 사용할 때 활성화됩니다.
유니티 편집기 및 "개발 빌드"에서 값을 삭제하여 "개발 지역"을 비활성화할 수도 있습니다.
개발 단계에서 최적의 지역 선택 문제를 방지하려면, 최신 PUN 2 버전으로 업데이트해야 합니다.
유니티 편집기에서 한 번 실행(PlayMode에 들어가 연결)합니다.
이 작업은 데모 씬 중 하나에서 실행할 수 있습니다.
유니티 편집기에서의 첫 번째 연결은 "개발 지역"을 설정하며, 이는 PhotonServerSettings 인스펙터에서 확인할 수 있습니다.
이 작업이 완료되면, 디바이스에서 테스트하거나 새 빌드를 생성할 수 있습니다.
"개발 빌드"가 빌드 설정에서 활성화된 것을 확인할 수 있으며, 개발 기간 동안 이 상태를 유지해야 합니다.
이렇게 하면 모든 클라이언트(유니티 편집기 및 빌드)가 동일한 "개발 지역"에 연결됩니다.
프로덕션으로 이동하기 전에 개발 빌드를 비활성화하는 것을 잊지 마십시오.
참고: 클라이언트가 개발 빌드 또는 유니티 편집기에서 연결된 경우, 다른 클라이언트가 비개발 빌드에서 연결되었을 경우 두 개의 다른 지역에 연결될 수 있습니다.
중국 본토 지역 사용
Photon 네임 서버는 중국 내에서 로컬이어야 합니다. 그렇지 않으면 방화벽이 트래픽을 차단할 수 있습니다.
중국 Photon 네임 서버는 "ns.photonengine.cn"입니다.
중국 본토 외부에서 클라이언트와 연결하면 결과가 좋지 않을 가능성이 높습니다.
또한, Photon 서버에서 중국 본토 외부 서버(예: Custom Authentication, WebHooks, WebRPCs)로의 연결은 신뢰할 수 없을 수 있습니다.
법적 이유로 중국에 별도의 빌드가 필요하며, 이를 위해 별도의 AppID를 사용하는 것을 권장합니다.
예를 들어, 컴파일 조건을 사용하여 빌드에 따라 AppID와 Photon 네임 서버를 변경할 수 있습니다.
중국 시장을 위한 특별 빌드를 만들려면 클라이언트 SDK에 해당하는 지침을 따르세요.
PUN 2
PhotonServerSettings 사용하기
코드 사용하기
C#
void ConnectToChina()
{
AppSettings chinaSettings = new AppSettings();
chinaSettings.UseNameServer = true;
chinaSettings.ServerAddress = "ns.photonengine.cn";
chinaSettings.AppIdRealtime = "ChinaPUNAppId"; // TODO: replace with your own PUN AppId unlocked for China region
chinaSettings.AppVersion = "ChinaAppVersion"; // optional
PhotonNetwork.ConnectUsingSettings(chinaSettings);
}
Back to top