This document is about: PUN 2
SWITCH TO

PUN Classic (v1)、PUN 2 和 Bolt 處於維護模式。 PUN 2 將支援 Unity 2019 至 2022,但不會添加新功能。 當然,您所有的 PUN & Bolt 專案可以用已知性能繼續運行使用。 對於任何即將開始或新的專案:請切換到 Photon Fusion 或 Quantum。

Regions

Photon Cloud為您提供全球連接,讓您在世界各地進行低延遲遊戲。

客戶端的初始連接會進入Photon名稱伺服器,該伺服器提供可用區域的列表。

每個地區都是完全獨立的,由一個主伺服器(用於匹配)和遊戲伺服器(主持房間)組成。

Photon Cloud Regions' Connect Flows
連接到Photon Cloud地區

下面是可用區域的完整列表。
在介面上,您可以定義哪些區域對客戶可用。

最佳區域選擇

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在同一台機器上執行的構建可能有不同的最佳區域。

最佳區域考慮因素

"Best Region" option is not deterministic.
Sometimes it may be "random" due to little variations or exact same ping calculations.

Theoretically, you could:

  • have the same exact ping to multiple regions from the same device. So its random, if you end up with different regions on clients connected to the same network.
  • different ping values for the same region on different devices (or different retries on the same device) connected to the same network.

For instance, in the case of "us" and "usw" (or "ru" and "rue"), you could either make use of the online regions whitelist to select the ones you want and drop the others or connect to an explicit region.

{% 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”都可以接受,並且指的是同一個歐洲地區。

地區託管在令牌
亞洲新加玻asia
澳大利亞墨爾本au
中國大陸1 (查看說明)上海cn
歐洲阿姆斯特丹eu
印度欽奈in
香港香港hk
日本東京jp
South AfricaJohannesburgza
南美洲聖保羅sa
韓國首爾kr
TurkeyIstanbultr
United Arab EmiratesDubaiuae
美國東部華盛頓特區us
美國西部聖何塞usw
USA, South CentralDallasussc
1: 中國大陸需要單獨的 AppId 和訂閱。

介面區域過濾

您可以直接從介面上過濾每個應用程式的可用Photon Cloud區域列表。

Photon Cloud: Regions Whitelist
過濾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應用申請進入中國大陸地區的權限。向我們發送電子郵件,以便我們為您的應用ID解鎖。
您不能通過我們的網站訂閱在中國大陸地區使用的付費計劃。 請通過電子郵件與我們聯繫,以獲得任何訂閱的報價。

Photon名稱伺服器必須是中國本地的,否則防火牆可能會阻止流量。
中國的Photon名稱伺服器是”ns.photonengine.cn"。

與中國大陸以外的客戶連接,很可能不會產生好的結果。
另外,從Photon伺服器連接到中國大陸以外的伺服器(如自定義認証、WebHooks、WebRPCs)可能不可靠。

重要:在當前階段,您通過介面對您的應用程式所做的更改不會自動反映在中國的應用程式緩存中。 如果您在那裡有更新請求,請通過電子郵件告訴我們。

另外,出於法律原因,您需要為中國單獨構建一個應用程式,我們建議使用一個單獨的AppId。
例如,使用一個編譯條件(由您選擇)來改變AppId和Photon名稱伺服器,取決於構建。

請按照您的客戶端SDK的說明,為中國市場制作一個特殊的版本。

PUN 2

使用PhotonServerSettings

PUN 2: PhotonServerSettings for China
PUN 2:中國的PhotonServer設置

使用代碼

C#

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);
}
Back to top