Regions
Photon Cloud為您提供全球連接,讓您在世界各地進行低延遲遊戲。
客戶端的初始連接會進入Photon名稱伺服器,該伺服器提供可用區域的列表。
每個地區都是完全獨立的,由一個主伺服器(用於匹配)和遊戲伺服器(主持房間)組成。

下面是可用區域的完整列表。 在介面上,您可以定義哪些區域對客戶可用。
Contents
最佳區域選擇
PUN和Photon Voice依靠實時API層來選擇最佳區域。
C# Realtime API
Photon Realtime可以檢測到要連接的最佳區域,並使您能夠堅持使用該區域。
為了做到這一點,客戶端總是在連接時從名稱伺服器獲取可用區域的列表。 這是用來獲取最新的區域列表,並檢查保存的最佳區域(如果有的話)是否仍然可用。
ping伺服器後,結果被總結為一個字符串,應保存在設備上供以後使用。 摘要字符串包括當前的最佳區域、其ping和當前的區域列表。
如果沒有以前的結果,所有區域都會被ping,這需要多花點時間。 如果有以前的結果,客戶端將檢查。
a. 區域列表是否改變(包括”以前的最佳區域”是否仍然可用的情況)。 b. 如果ping不再是可接受的(>=1.5倍於先前保存的參考值的速度)。
如果這兩種情況都適用,所有地區都會被ping,並挑選出一個新的結果。
使用最佳區域與控制面板中的伺服器端區域過濾器配合得很好。 它使您能夠根據需要改變玩家可用的地區列表。
要訪問地區列表或覆蓋以前的結果,請參考地區的API參考值。
PUN
當您使用PhotonNetwork.ConnectUsingSettings()
時,默認會進行”最佳區域”選擇。
除了在玩家偏好中自動保存結果外,工作流程與實時API中的相同。
最好的區域是”粘性"。 這意味著客戶端通常會在較長的時間內使用一個區域。 在隨後的啟動中,它將再次移動這個區域。 PUN使用Unity的PlayerPrefs自動存儲最佳區域的摘要。
為了方便和除錯,當前的”最佳區域”和它的ping被暴露在Unity編輯器的PhotonServerSettings中。 然而,這只對Unity編輯器的遊玩模式有效。 與Unity Editor在同一台機器上執行的構建可能有不同的最佳區域。
最佳區域考慮因素
{% if PUN_v2 %}{% if PUN_v2 %}。
開發區域
從PUN v2.17開始,我們增加了一個新的功能,叫做”開發區域"。 它是PhotonServerSettings中的一個新設置。 有了這個設置,所有的開發構建將使用相同的區域,避免了”最佳區域”選擇帶來的初始匹配問題。 當PhotonServerSettings被創建時,"開發構建”會自動啟用,並且在Unity Editor的第一次執行(PlayMode)中設置”開發區域"。
當您使用PhotonNetwork.ConnectUsingSettings()
進行連接時,”開區區域”只在Unity Editor和”開發”構建中使用。
您也可以在Unity編輯器和”開發構建”中禁用”開區區域”,只需刪除該值即可。
所以為了避免開發階段的最佳區域選擇問題,確保更新到最新的PUN 2版本。 在Unity編輯器中執行一次(進入PlayMode並連接)。 您可以從任何一個演示場景中這樣做。 這個來自Unity Editor的第一次連接將設置”開發區域",可以從PhotonServerSettings檢查器中看到。 一旦完成,您就可以從設備上進行構建和測試,如果您之前已經做了,就可以進行新的構建。 您會注意到”開發構建”現在已經從構建設定中啟用,並且在開發期間應該保持這種狀態。 這樣,所有的客戶端(Unity Editor和構建)將連接到同一個”開發區域"。
在進入生產之前,不要忘記取消開發構建。
Note: 如果一個客戶端從開發構建或從Unity Editor連接,另一個從非開發構建連接,他們可能連接到兩個不同的區域。
可用地區
Photon Cloud在多個地區都有伺服器,分布在世界各地的多個主持中心。
每個Photon Cloud區域都由一個”區域令牌”來標識。
要連接到一個特定的區域,在您的PhotonServerSettings中的AppSettings下將其代碼設置為”固定區域"。
如果您想使用PhotonNetwork.ConnectToRegion
,您需要手動配置網路客戶端(主要是AppId和AppVersion),因為PhotonServerSettings在這種情況下將不會被使用。
區域標記(或代碼)的字符串是不區分大小寫的。例子:"EU”或”eu”都可以接受,並且指的是同一個歐洲地區。
地區 | 託管在 | 令牌 |
---|---|---|
亞洲 | 新加玻 | 亞洲 |
澳大利亞 | 墨爾本 | au |
中國大陸1 (查看說明) | 上海 | 中國 |
歐洲 | 阿姆斯特丹 | 歐洲 |
印度 | 欽奈 | 在 |
香港 | 香港 | hk |
日本 | 東京 | 日本 |
俄羅斯 | 莫斯科 | ru |
南美洲 | 聖保羅 | sa |
韓國 | 首爾 | kr |
美國東部 | 華盛頓特區 | 美國 |
美國西部 | 聖何塞 | usw |
介面區域過濾
您可以直接從介面上過濾每個應用程式的可用Photon Cloud區域列表。

進入介面,然後點擊所選應用程式的”管理",再點擊”編輯"。 您會發現一個輸入字段,您可以在那裡輸入白名單區域的列表,如下所示:
- 允許的列表應該是一個由分號分隔的地區標記的字符串,例如”eu;us"。
- 地區標記不區分大小寫,並被定義為這裡。
- 未定義或未識別的區域標記將從列表中被忽略。
- 空("")或畸形的字符串(如";;;")表示空列表。
- 空列表意味著所有可用的區域都被允許。
一旦您確認並保存,NameServer將只返回過濾後的區域列表。 因此,客戶應該從該列表中選擇。 考慮到介面的更新可能需要10分鐘。
如何選擇一個地區
美國的用戶如果連接到Photon Cloud美國地區,則延遲最低。簡單。
但是,如果您的用戶來自世界各地,怎麼辦?
您可以
- **a)**讓遊戲客戶端在不同的Photon Cloud地區進行ping,並預先選擇一個有最佳ping的地區,請閱讀我們的how-to
- **b)**將客戶端的構建與地區挂鉤,因此來自不同地區的用戶連接到不同的Photon Cloud地區,或者
- **c)**讓用戶在您的遊戲界面中選擇一個匹配的區域。
另外,您也可以**d)**讓所有用戶連接到同一個區域,如果較高的延遲對您的遊戲來說是可以接受的,例如任何”非實時”遊戲。
所有的Photon Cloud應用程式都可以在所有可用的地區工作,不需要任何額外的費用。 見定價。
Photon Cloud的介面可以讓您監控您的遊戲在各個地區的使用情況,並輕鬆升級或降級您的訂閱計劃。 進入您的介面。
使用中國大陸地區
Photon名稱伺服器必須是中國本地的,否則防火牆可能會阻止流量。 中國的Photon名稱伺服器是”ns.photonengine.cn"。
與中國大陸以外的客戶連接,很可能不會產生好的結果。 另外,從Photon伺服器連接到中國大陸以外的伺服器(如自定義認証、WebHooks、WebRPCs)可能不可靠。
另外,出於法律原因,您需要為中國單獨構建一個應用程式,我們建議使用一個單獨的AppId。 例如,使用一個編譯條件(由您選擇)來改變AppId和Photon名稱伺服器,取決於構建。
請按照您的客戶端SDK的說明,為中國市場制作一個特殊的版本。
PUN 2
使用PhotonServerSettings

使用代碼
void ConnectToChina()
{
AppSettings chinaSettings = new AppSettings();
chinaSettings.UseNameServer = true;
chinaSettings.ServerAddress = "ns.photonengine.cn";
chinaSettings.AppIdRealtime = "ChinaPUNAppId"; // TODO:替換為您自己為中國地區解鎖的PUN AppId
chinaSettings.AppVersion = "ChinaAppVersion"; // 可選的
PhotonNetwork.ConnectUsingSettings(chinaSettings);
}