地区

Photon Cloud光子云为您提供全球连接,让全球各地的低延迟游戏成为可能。

可用区域

Photon Cloud光子云在多个地区都有服务器,分布在全球多个托管中心。

每个Photon Cloud光子云区域由“区域标记”标识。

可用区域和令牌清单:

地区 托管在 令牌
亚洲 新加坡 asia
澳大利亚 墨尔本 au
加拿大,东部 蒙特利尔 cae
中国大陆( 请见本文末) 上海BGP cn
欧洲 阿姆斯特丹 eu
印度 钦奈 in
日本 东京 jp
南美洲 圣保罗 sa
韩国 汉城 kr
美国,东部 华盛顿 us
美国,西部 圣荷西 usw

仪表板区域过滤

您可以直接从仪表板过滤每个应用程序的可用Photon Cloud光子云区域列表。

过滤光子云区域
过滤光子云区域

转到仪表板,然后单击所选应用程序的“管理”,然后单击“编辑”。 您将找到一个输入字段,您可以在其中输入列入白名单的区域,如下所示:

  • 允许的列表应该是用分号分隔的区域标记字符串。 例如“eu; us”。
  • 区域令牌不区分大小写,并在此定义。
  • 未定义或无法识别的区域令牌将从列表中忽略。
  • 空(“”)或格式不正确的字符串(例如“;;”)表示空列表。
  • 空列表表示允许所有可用区域。

确认并保存后, GetRegions操作将只返回过滤的区域列表。 因此,客户端应该从该列表中选择任何可用的区域,但请考虑到仪表盘的更新可能需要10分钟左右的时间(根据网络情况而定)。

使用中国大陆地区

首先,您需要申请访问中国大陆地区的Photon应用程序。 向我们发送电子邮件,以便我们可以为您的AppID解锁它。

为了稳定和可靠的链接,光子NameServer架设在本地,否则连接很可能无法稳定。 中国的NameServer是“ns.photonengine.cn”。

与来自中国大陆以外的客户端通讯很可能不会产生好的结果。 此外,从光子服务器连接到中国大陆以外的服务器(例如,自定义身份验证,WebHooks,WebRPC)可能并不可靠。

重要提示 :在目前阶段,您通过信息中心对应用进行的更改不会自动反映在中国的应用缓存中。 如果您有更新请求,请通过电子邮件通知我们。

同样出于法律原因,您需要为中国单独构建AppId,我们建议使用单独的AppId。 例如,使用条件编译(您选择的)来根据根据条件更改AppId和Photon NameServer。

按照这些说明为中国市场打造特别版本:

光子语音 Photon Voice

1. 将AppId设置为已解锁中国区域的应用程序。 如果你想使用相同的项目,并有不同的Build,可以这样设置:

void Awake()
{
// TODO: replace compile condition with your own
#if CHINA
    PhotonNetwork.PhotonServerSettings.VoiceAppID = "ChinaVoiceAppId"; // TODO: replace with your own AppId
#else
    PhotonNetwork.PhotonServerSettings.VoiceAppID = "nonChinaVoiceAppId"; // TODO: replace with your own AppId
#endif
}

2. 打开 “LoadBalancingClient.cs “文件,设置NameServerHost为 “ns.photonengine.cn”。

// TODO: replace compile condition with your own
    #if CHINA
        public const string NameServerHost = "ns.photonengine.cn";
    #else
        public const string NameServerHost = "ns.exitgames.com";
    #endif
由于光子语音中包含光子PUN,因此我们还需要遵循PUN所需的步骤。 光子语音将自动连接到相同的服务器。

PUN

1. 将AppId设置为已解锁中国区域的应用程序。 如果你想使用相同的项目,并有不同的Build,可以这样设置:

void Awake()
{
// TODO: replace compile condition with your own
#if CHINA
    PhotonNetwork.PhotonServerSettings.AppID = "ChinaPUNAppId"; // TODO: replace with your own AppId
#else
    PhotonNetwork.PhotonServerSettings.AppID = "nonChinaPUNAppId"; // TODO: replace with your own AppId
#endif
}

2. 打开“NetworkingPeer.cs”文件并将NameServerHost设置为“ns.photonengine.cn”:

// TODO: replace compile condition with your own
    #if CHINA
        public const string NameServerHost = "ns.photonengine.cn";
    #else
        public const string NameServerHost = "ns.exitgames.com";
    #endif
3. 更新CloudRegionCodeCloudRegionFlag枚举以添加新的“CN”(或“cn”)区域标记,如下所示:
public enum CloudRegionCode
{
    // ...
// TODO: replace compile condition with your own
#if CHINA
    ///<summary>Chinese Mainland, Guang Dong area, cn</summary>
    cn = 11,
#endif
};
[Flags]
public enum CloudRegionFlag
{
    // ...
// TODO: replace compile condition with your own
#if CHINA
    cn = 1 << 10,
#endif
};

4. 使用PhotonNetwork.ConnectToRegion(CloudRegionCode.cn, gameVersion)连接到中国大陆地区。

// TODO: replace compile condition with your own
#if CHINA
    PhotonNetwork.ConnectToRegion(CloudRegionCode.cn, gameVersion);
#else
    // TODO: connect to any other region
#endif

Photon Cloud是一个完全托管的软件即服务(SaaS)解决方案。 您可以完全专注于您的应用程序客户端,而机房托管,服务器操作和调整都由光子公司负责。

Photon Server是一个您自己运行和维护的本地服务器应用程序,您可以在您选择的机器(包括各类云服务器和虚拟机)上运行和托管。 所以其是您完全可定制的,且完整的用户认证机制能让你的自由配置和设置你自己的多人游戏服务器端。

Photon Cloud是在运行在Photon Server上的。

光子服务器光子云构架
光子服务器光子云构架

 

光子云(Photon Cloud)运行在光子服务器(Photon Server)上。
Photon Realtime,Photon Chat都是在光子云(Photon Cloud)中运行的应用程序。
Photon Unity Networking(又名PUN)是Unity 3D客户端插件,与Unity Networking兼容的API,连接Photon Realtime。

光子云 光子服务器
服务器管理 再没有管理服务器的杂乱,您只需专注于游戏性和创意,而我们的专家负责顺畅运行服务器的问题。 您可以获得为应用程序运行Photon的全部权限。在自己的服务器或租用的服务器或云上运行,需确保它们是状态良好的。

Photon的日志和性能计数器提供关于性能和稳定性的所有必要信息。

可扩展性 Photon Cloud会自动扩展以适应您的用户。
使用我们的SDK,您的客户端应用程序将获得高效的负载平衡工作流。
启用我们在源码中的负载平衡,它是您中大型应用跨多个服务器扩展的坚实基础。
需要留意的是为您正扩展的客户数量而添加正确数量的服务器。
游戏逻辑 通过Photon Realtime , Photon Chat和PUN,您将获得目前所有多人游戏类型的解决方案。 每个可供免费下载的客户端SDK包含多个源代码示例,让您开始真正快速地将Photons API用于同步和异步游戏,及应用程序中。 服务器的逻辑可以在C#中完全自定义。 免费的服务器SDK中提供了多个演示应用程序的源代码,并为您的应用程序提供了高性能的现成框架。 受益于我们的协议和抽象的低级功能,您不会错过任何重要功能。
立即开始 Photon Cloud让您注册并立即运行您的应用程序。无需设置。无需使用自己的服务器。 下载后, 在5分钟内启动您的Photon服务器Photon非常容易设置,并在本地和远程部署都运行良好。
许可 选择各种订阅方案,匹配您的每月活跃用户数量。
无论您是独立,创业或AAA工作室,您都会找到一个匹配的计划。 Photon Realtime拥有最多20 CCU的免费计划。
许可作为一次性购买或订阅提供,并作为下载提供。
使用企业许可证可托管任意数量的服务器和应用程序。 Photon Server可以免费获得最多100个CCU的许可证。

 

光子服务器PhotonServer v5

Photon Cloud 光子云 Photon Server 光子服务器
特征
虚拟应用 O X
Name Server O O
支持的光子产品
Realtime O O
PUN O O
Chat O X
Voice O O
Bolt O X
验证方式
自定义 O O
Facebook O O
Oculus O X
Steam O O
Xbox O X
PlayStation O X
Nintendo O X

 

光子服务器PhotonServer v4

Photon Cloud 光子云 Photon Server 光子服务器
特征
虚拟应用 O X
Name Server O X
支持的光子产品
Realtime O O
PUN O O
Chat O X
Voice O O
Bolt O X
验证方式
自定义 O O
Facebook O X
Oculus O X
Steam O X
Xbox O X
PlayStation O X
Nintendo O X

自V4.0.29.11263起的重要更改

Photon Cloud会不断更新,包括修补程序,增强功能或新功能。尽管我们尝试发布Photon Server SDK的新版本以赶上Photon Cloud,但两者无法始终保持同步。

在这里,我们列出了自Photon Server SDK的最新公共版本v4.0.29.11263以来Photon Cloud中的重要更改。此外,如果您同时定位在Photon Cloud和Photon Server环境同时开发,或者准备从一个环境切换到另一个环境,此列表将列出一些功能之不同,其在另外的环境中无法正常运行。同时,您可能还会找到响应的解决方法或建议。

V4.0.29.11263中缺少的光子云功能

  • 创建房间后,便无法更改PlayerTTL和EmptyRoomTTL。它们后来被添加为众所周知的房间属性。
  • “Delete Null Properties”选项不可用. (RoomOptions.DeleteNullProperties).具有空值的属性将不会被服务器删除。
  • “Broadcast Properties Change”选项不可用(RoomOptions.BroadcastPropsChangeToAll)。除非使用CAS,否则调用SetProperties的客户端将不会收到PropertiesChange事件。CAS是可以在Photon Cloud和Photon Server之间具有一致的行为一种解决方案。
  • SQL Lobby中的GetGameList操作(也称为“ GetCustomRoomList”或“ GetRoomList”,不要与GetGameList WebRPCPUN Classic的GetRoomList混淆)不可用。

V4.0.29.11263中的已知问题

  • 如果客户端或身份验证未设置,则服务器不会返回UserId。该值将是在服务器上生成的GUID。这可能导致玩家无法加入房间,并产生错误代码-2(错误消息:”Join failed: UserId is not set, checkUserIdOnJoin=true expects a UserId.”)。作为解决方法,如果用户未明确设置,客户端C#SDK现在会将GUID发送为UserId。
  • 另外,在身份验证期间,如果身份验证提供方未设置昵称,则服务器将返回空昵称,该昵称将覆盖客户端上以前设置的任意值。作为解决方法,您可以在连接后设置一个昵称。此值将在房间内使用,且以后可以更改(包括同步)。
  • 服务器不支持序列化协议版本1.8。如果尝试从客户端SDK的相对较新版本(其默认为1.8)连接到自托管的Photon Server,则连接将失败。在C#SDK中,客户端将与断开连接DisconnectByServerReasonUnknown。一种解决方案是在连接之前将版本设置为1.6。设置loadBalancingClient.LoadBalancingPeer.SerializationProtocolTypeSerializationProtocol.GpBinaryV16。在PUN2中,它应该是PhotonNetwork.NetworkingClient.LoadBalancingPeer.SerializationProtocolType。除非您使用不同于PhotonNetwork.ConnectUsingSettings()的方法进行连接,否则在PUN2中不需要。
  • 服务器允许将同一actor添加到同一interest group多次,从而导致同一事件被actor多次发送到同一interest gruop。
  • 此服务器未完全支持快速重新加入功能(ReconnectAndRejoin),因为其未实现会话令牌。