지역
Photon Cloud는 다양한 지역에 서버를 호스팅 하여 전 세계적으로 빠른 게임 환경을 제공합니다.
클라이언트는 Photon 네임 서버에서 지역 목록을 가져옵니다. 프로젝트의 수명 동안 새로운 지역이 추가되거나 오래된 지역이 더 이상 사용되지 않을 수 있습니다.
각 지역은 서로 완전히 독립적이며, 매치메이킹을 위한 마스터 서버와 룸을 호스팅 하는 게임 서버로 구성됩니다.
아래는 클라이언트 워크플로우의 개요입니다:
(1) 클라이언트는 Photon Name Server에서 사용 가능한 영역 목록을 가져옵니다.
(2) 클라이언트는 사용 가능한 지역 중 하나를 선택하여 자동으로 최저 핑 또는 수동 플레이어 선택을 통해 선택하고 해당 지역의 마스터 서버에 연결합니다. 마스터 서버는 해당 지역 내 게임 서버에서 매칭 및 방 생성 또는 참여를 담당합니다.
(3) 마지막으로 클라이언트는 지정된 게임 서버에 연결하여 룸에 가입합니다. 이 게임 서버는 클라이언트가 (2) 단계에서 연결한 마스터 서버와 동일한 영역에 있습니다.
![Photon Cloud Regions' Connect Flows](/docs/img/photon-cloud-connect-name-server.png)
지역 허용 목록을 사용하면 AppId별로 사용할 수 있는 지역을 정의할 수 있습니다(아래 참조).
사용 가능한 지역
Photon Cloud는 여러 지역의 서버로 구성되어 있으며, 전 세계 여러 호스팅 센터에 분산되어 있습니다.
각 Photon Cloud 지역은 "지역 코드"로 식별되며, 이는 대소문자 구분 없이 짧은 문자열입니다.
예를 들어, "EU" 또는 "eu"는 모두 같은 유럽 지역을 의미하며 받아들여집니다.
아래 목록은 호스팅 센터의 위치와 각 지역의 지역 코드를 나타냅니다.
게임용 Photon Cloud
Photon 제품 Quantum, Fusion, Voice, Realtime 및 PUN은 다음 지역에서 게임용 Photon Cloud에서 이용할 수 있습니다.
지역 | 호스팅 위치 | 코드 |
---|---|---|
아시아 | 싱가포르 | asia |
호주 | 시드니 | au |
캐나다, 동부 | 몬트리올 | cae |
중국 본토 (지침 보기) | 상하이 | cn |
유럽 | 암스테르담 | eu |
홍콩 | 홍콩 | hk |
인도 | 첸나이 | in |
일본 | 도쿄 | jp |
남아프리카 | 요하네스버그 | za |
남아메리카 | 상파울루 | sa |
대한민국 | 서울 | kr |
터키 | 이스탄불 | tr |
아랍에미리트 | 두바이 | uae |
미국, 동부 | 워싱턴 D.C. | us |
미국, 서부 | 산호세 | usw |
미국, 남중부 | 댈러스 | ussc |
Photon Chat은 다음 지역에서 사용할 수 있습니다:
지역 | 호스팅 위치 | 코드 |
---|---|---|
아시아 | 싱가포르 | asia |
유럽 | 암스테르담 | eu |
미국, 동부 | 워싱턴 D.C. | us |
중국 본토 (지침 보기) | 상하이 | cn |
Photon Industries 프리미엄 Cloud
Photon 제품인 Quantum, Fusion, Voice, Realtime 및 PUN은 다음 지역의 Photon Industries 프리미엄 Cloud에서 사용할 수 있습니다.
지역 | 호스팅 위치 | 코드 |
---|---|---|
아시아 | 싱가포르 | asia |
유럽 | 암스테르담 | eu |
인도 | 첸나이 | in |
일본 | 도쿄 | jp |
대한민국 | 서울 | kr |
미국, 동부 | 워싱턴 D.C. | us |
추가적인 Photon Industries 프리미엄 Cloud 지역이 계획 중입니다: 호주 (AU), 남아메리카 (SA), 미국 서부 (USW), 남아프리카 (ZA).
Photon Chat은 다음 지역에서 사용할 수 있습니다:
지역 | 호스팅 위치 | 코드 |
---|---|---|
미국, 동부 | 워싱턴 D.C. | us |
중국의 Gaming/Industries를 위한 지역
Photon Cloud 지역 중국 본토를 사용하는 데에는 특별한 조건이 있습니다:
- 접근 권한을 해제해야 합니다 (아래 참조)
- Photon Voice는 중국에서 사용할 수 없습니다
- 개발을 위한 20CCU는 무료입니다 (비상업적 용도)
- Photon Cloud에서 500CCU 구독만 가능합니다
- 대규모 설정은 맞춤형 계약이 필요합니다
Photon 제품인 Quantum, Fusion, Realtime, PUN 및 Chat은 다음 지역의 Photon Cloud에서 사용할 수 있습니다:
지역 | 호스팅 위치 | 코드 |
---|---|---|
중국 본토 | 상하이 | cn |
허용 지역 목록
허용 지역 목록을 사용하면 관리 화면에서 애플리케이션 별로 사용 가능한 지역을 직접 사용자 정의할 수 있습니다. 최적의 지역 기능을 사용하는 클라이언트는 자동으로 조정됩니다.
더 많은 지역을 사용하거나 줄임으로써 서비스 품질(플레이어와 가까운 지역일수록 왕복 시간이 더 짧아짐)과 매치메이킹 경험(적은 지역일수록 지역당 더 많은 플레이어를 의미함) 간의 균형을 맞출 수 있습니다.
앱별로 지역을 정의하려면, 관리 화면 열기, 선택한 애플리케이션의 "관리"를 클릭한 다음 "허용 목록 편집"을 클릭하십시오.
다음과 같이 허용 지역 목록을 입력할 수 있는 입력 필드가 제공됩니다:
- 사용 가능한 지역은 위에서 SDK 별로 나열되어 있으며, 때로는 산업 서클에 대해 별도로 나열됩니다.
- 허용 목록은 세미콜론으로 구분된 지역 토큰 문자열이어야 합니다. 예: "eu;us".
- 지역 토큰은 대소문자를 구분하지 않습니다.
- 정의되지 않았거나 인식되지 않은 지역 토큰은 목록에서 무시됩니다.
- 빈 문자열("") 또는 잘못된 형식 문자열(예: ";;;")은 모든 사용 가능한 지역이 허용됨을 의미합니다.
변경 사항(확인 및 저장) 후 10분 이내에 네임 서버는 필터링된 목록을 연결된 클라이언트에 전송합니다.
클라이언트 측에서의 충돌을 방지하려면 핑(Ping)을 사용하여 "최적의 지역"에 연결하거나, 지역 목록에서 수신된 지역을 선택해야 합니다.
지역 선택 방법
미국 사용자는 Photon Cloud의 미국 지역에 연결할 경우 가장 낮은 지연 시간을 경험할 수 있습니다. 간단합니다.
하지만 전 세계에 사용자가 있다면 어떻게 해야 할까요?
옵션은 다음과 같습니다..
- a) 게임 클라이언트가 다양한 Photon Cloud 지역에 핑을 보내고 가장 낮은 핑의 지역을 미리 선택하도록 설정합니다. 방법 보기를 참조하세요.
- b) 지역에 맞춘 클라이언트 빌드를 배포하여, 서로 다른 지역의 사용자가 다른 Photon Cloud 지역에 연결되도록 합니다.
- c) 게임 UI 내에서 사용자가 적합한 지역을 선택할 수 있도록 합니다.
- d) 높은 지연 시간이 게임 플레이에 영향을 주지 않는다면, 모든 사용자를 동일한 지역에 연결시킵니다.
모든 Photon Cloud 앱은 추가 비용 없이 모든 사용 가능한 지역에서 작동합니다.
Photon Cloud의 대시보드를 통해 각 지역에서 게임의 사용량을 모니터링하고 구독 플랜을 손쉽게 업그레이드하거나 다운그레이드 할 수 있습니다.
최적의 지역에 대한 고려 사항
"최적 지역" 옵션은 결정론적이지 않습니다.
때때로 작은 변동이나 정확히 동일한 핑 계산으로 인해 "무작위"일 수 있습니다.
이론적으로는 할 수 있습니다:
- 동일한 장치에서 여러 영역으로 동일한 핑을 전송합니다. 따라서 동일한 네트워크에 연결된 클라이언트에서 서로 다른 영역이 발생하면 무작위입니다.
- 동일한 네트워크에 연결된 서로 다른 장치(또는 동일한 장치에서 서로 다른 재시도)에서 동일한 영역에 대한 서로 다른 핑 값.
예를 들어, "us"와 "usw" (또는 "ru"와 "rue")의 경우, 온라인 지역 allowlist를 사용하여 원하는 지역을 선택하고 다른 지역을 삭제하거나 명시적인 지역에 연결할 수 있습니다.
디버깅하려면 로깅 레벨을 "Info"로 설정하고 "현재 최적의 영역"을 지웁니다(PUN: PhotonNetwork.BestRegionSummaryInPreferences = null). 자세한 내용을 확인하거나 로그를 메일로 보내주세요.
런타임에 지역 선택 방법
기본적으로 PhotonAppSettings
또는 코드로 지역이 설정되지 않은 경우, Fusion은 최적의 지역
에 연결을 시도합니다.
즉, 시작 시 모든 사용 가능한 지역에 핑을 보내고 가장 낮은 핑의 지역에 연결합니다.
그러나 최적의 지역
은 결정론적이지 않으며, 작은 차이나 동일한 핑 값 계산으로 인해 때때로 "랜덤"하게 선택될 수 있습니다.
최적의 지역
기능이 필요하지 않은 경우, 플레이어가 런타임에 연결할 지역을 선택하도록 할 수 있습니다.
이 방법은 플레이어가 공통된 지역에 연결하거나 특정 지역에서 친구와의 세션에 참여하고자 할 때 핑을 낮추는 데 도움이 됩니다.
사용 가능한 지역 목록을 얻으려면, Fusion은 NetworkRunner.GetAvailableRegions()
메서드를 제공합니다.
이는 지역 이름과 핑 값을 포함하는 Fusion.RegionInfo
객체의 목록을 반환합니다. 이 목록을 사용하여 핑 값이 가장 낮은 순서로 정렬하거나, 플레이어가 원하는 지역을 선택하도록 할 수 있습니다.
지역 선택은 NetworkRunner
가 실행 중이지 않을 때만 가능합니다. 특정 지역에 이미 연결된 상태에서는 이를 변경할 수 없습니다.
아래 코드 스니펫은 NetworkRunner
가 런타임에 사용자 지정 지역을 사용하는 방법을 보여줍니다:
C#
public class FusionInit : MonoBehaviour {
// ...
// Start a NetworkRunner with a Game Mode and connect to the specified Region
public Task<StartGameResult> StartSimulation(NetworkRunner runner, GameMode gameMode, string region) {
var appSettings = BuildCustomAppSetting(region);
return runner.StartGame(new StartGameArgs() {
// ...
GameMode = gameMode,
CustomPhotonAppSettings = appSettings
});
}
private FusionAppSettings BuildCustomAppSetting(string region, string customAppID = null, string appVersion = "1.0.0") {
var appSettings = PhotonAppSettings.Global.AppSettings.GetCopy();;
appSettings.UseNameServer = true;
appSettings.AppVersion = appVersion;
if (string.IsNullOrEmpty(customAppID) == false) {
appSettings.AppIdFusion = customAppID;
}
if (string.IsNullOrEmpty(region) == false) {
appSettings.FixedRegion = region.ToLower();
}
// If the Region is set to China (CN),
// the Name Server will be automatically changed to the right one
// appSettings.Server = "ns.photonengine.cn";
return appSettings;
}
}
중국 본토 지역 사용
Photon 네임 서버는 중국 내에서 로컬이어야 합니다. 그렇지 않으면 방화벽이 트래픽을 차단할 수 있습니다.
중국 Photon 네임 서버는 "ns.photonengine.cn"입니다.
중국 본토 외부에서 클라이언트와 연결하면 결과가 좋지 않을 가능성이 높습니다.
또한, Photon 서버에서 중국 본토 외부 서버(예: Custom Authentication, WebHooks, WebRPCs)로의 연결은 신뢰할 수 없을 수 있습니다.
법적 이유로 중국에 별도의 빌드가 필요하며, 이를 위해 별도의 AppID를 사용하는 것을 권장합니다.
예를 들어, 컴파일 조건을 사용하여 빌드에 따라 AppID와 Photon 네임 서버를 변경할 수 있습니다.
중국 시장을 위한 특별 빌드를 만들려면 클라이언트 SDK에 해당하는 지침을 따르세요.
Fusion
PhotonAppSettings 사용하기
![Fusion: PhotonAppSettings for China](/docs/img/fusion/ChinaRegionInstructions.jpg)
코드 사용하기
C#
public class FusionInit : MonoBehaviour {
// ...
async void ConnectToChina()
{
var runner = BuildNetworkRunnerInstance();
// Start new Runner with the Host Migration Token
var result = await StartSimulation(
runner,
GameMode.AutoHostOrClient, // Or any other GameMode
"cn" // Select China Region
);
// Check results as usual
if (result.Ok == false) {
Debug.LogWarning(result.ShutdownReason);
} else {
Debug.Log("Done");
}
}
}
Back to top