Regions
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 |
美國東部 | 華盛頓特區 | us |
美國西部 | 聖荷西 | usw |
美國中南部 | 達拉斯 | ussc |
地區允許清單
地區允許清單允許您直接從儀表板自訂每個應用程式的可用地區。使用最佳區域功能的客戶端將自動調整適應。
透過使用更多或更少的地區,您可以平衡服務品質(當有一個靠近玩家的地區時,往返時間會更好)和對戰配對體驗(更少的地區意味著每個地區有更多的玩家)。
要定義每個應用程式的地區,請打開儀表板,針對所選應用程式按一下「管理」,然後按一下「編輯允許清單」。
您將找到一個輸入欄位,用於輸入允許的地區清單,如下所示:
- 上面列出了每個SDK的可用地區,有時也為行業圈單獨列出。
- 允許清單必須是由分號分隔的地區權杖字串。例如"eu;us"。
- 地區權杖不區分大小寫。
- 未定義或無法識別的地區權杖將從清單中忽略。
- 空("")或格式錯誤的字串(例如";;;")表示允許所有可用地區。
在更改(確認並儲存)後10分鐘內,名稱伺服器將向連線的客戶端發送篩選後的清單。
為避免客戶端衝突,請透過ping連線到「最佳地區」,或確保選擇與地區清單一起收到的區域。
如何選擇地區
如果連線到Photon Cloud US地區,則美國用戶的延遲最低。簡單易懂。
但是,如果您有 來自世界各地 的用戶呢?
選項有..
- a) 讓遊戲客戶端ping不同的Photon Cloud區域,並預先選擇ping效果最好的區域,請閱讀我們的方法。
- b) 分發綁定到某個地區的客戶端組建,因此來自不同區域的用戶連線到不同的Photon Cloud地區或
- c) 讓用戶從您的遊戲的UI中選擇一個匹配的地區。
- d) 如果您的遊戲可以接受更高的延遲,請讓所有用戶連線到同一地區。
所有Photon Cloud應用程式都可以在所有可用地區運行,無需任何額外費用。
Photon Cloud的儀表板允許您監控每個地區的遊戲使用情況,並輕鬆升級或降級您的訂閱計畫。
如何在運行階段選擇地區
如果您沒有使用Best Region
選項,您可能想讓您的玩家選擇連接哪個地區。
如果玩家連接到一個共同的鄰近地區,或者只是想與在特定地區玩遊戲的朋友一同加入遊戲階段,這可以幫助降低玩家之間的ping值。
地區選擇只能在Photon Bolt 未 運行時進行,並且必須在初始化PhotonPlatform
之前執行。
我們處理了UdpKit.Platform.Photon.PhotonRegion
類別中預先定義的可用地區清單,可用於列出地區。
在下方的程式碼片段中,我們展示了如何在運行階段更改目標地區:
C#
public class Menu : Bolt.GlobalEventListener
{
// Target Region
private static int currRegion = 0;
// List of available Regions
private PhotonRegion.Regions[] availableRegions = new PhotonRegion.Regions[]
{
PhotonRegion.Regions.US,
PhotonRegion.Regions.USW,
PhotonRegion.Regions.JP,
PhotonRegion.Regions.EU,
PhotonRegion.Regions.SA
};
private void UpdateRegion()
{
if (BoltNetwork.IsRunning == false)
{
// Get the current Region based on the index
var targetRegion = PhotonRegion.GetRegion(availableRegions[currRegion]);
// Update the target region
BoltRuntimeSettings.instance.UpdateBestRegion(targetRegion);
// Log the update
Debug.LogFormat("Update region to {0}", targetRegion.Name);
// Next time we use the next region
currRegion++;
// Go back to 0
if (currRegion == availableRegions.Length)
{
currRegion = 0;
}
// IMPORTANT
// Initialize the Photon Platform again
// this will update the internal cached region
BoltLauncher.SetUdpPlatform(new PhotonPlatform());
}
else
{
BoltLog.Error("Bolt is running, you can't change region while runnning");
}
}
}
如您所見,每次我們調用UpdateRegion()
時,它都會選擇清單availableRegions
中的下一個地區,並使用方法BoltRuntimeSettings.instance.UpdateBestRegion
用於更新要使用的地區。
請記住,您需要重新初始化平台,因為該地區是緩存的,如果您不重新創建它,它就不會改變。
使用中國大陸地區
Photon名稱伺服器必須位於中國本地,否則防火牆可能會封鎖流量。
中國Photon名稱服務器是「ns.photonengine.cn」。
與中國大陸以外的客戶端連線很可能不會產生好的結果。
此外,從Photon伺服器連線到中國大陸以外的服務器(例如用於自訂身份驗證、WebHooks、WebRPC)可能不可靠。
出於法律原因,您需要為中國單獨組建一個版本,我們建議使用單獨的AppId。
例如,使用編譯條件(由您選擇)而根據組建更改AppId和Photon名稱伺服器。
按照與您的客戶端SDK相對應的說明,為中國市場進行特殊組建。
Back to top