Application 应用程序
一个应用程序是一个游戏服务器端的逻辑。一个游戏的所有特征(例如远程过程调用,数据存储等)都在一个Photon Application中实现。C#代码编译之后,Photon会其加载生成的程序集。Photon Core使用配置文件来设置应用程序和定义启动参数。
通常,在单个应用中提供游戏的所有逻辑。Photon仍然能够同时运行多个应用程序。每个应用程序可以有不同的任务。例如,可以编写单独的应用程序向基于web的客户端发送策略文件。
客户端通过在连接时提供应用程序的名称来选择它想要使用的应用程序。
游戏逻辑
游戏逻辑定义了客户端如何与服务器交互。它实现操作,事件和服务器自己执行的任何操作。
在SDK文件夹(“{Server_SDK_path}/src-server/Loadbalancing”)中有一个“LoadBalancing应用程序”,它提供了基于房间游戏的一个好的例子。
如果你的游戏将是一个单一的,巨大的世界,MMO演示应用程序是一个很好的例子。此应用程序处理客户端的利益管理,并提供项目,属性,演员和更多的类。
或者,任何游戏逻辑可以直接在C#框架之上开发。这个入口点是定义在Photon.Socketserver.dll中的应用程序类。
Operations 操作
一个操作是Photon相当于一个远程过程调用。Photon客户端使用操作调用来完成任何他们想做的事情。
根据需要在服务器端应用程序中定义操作及其所有参数。客户端可以通过设置带有符合操作约定的键和值的哈希表来调用任何操作。客户端和服务器框架负责序列化,传输和反序列化。
每个操作也可以提供结果。这是向客户端提供所请求数据的一种方式。当然可以跳过结果,从而节省带宽。
操作调用和结果是一个客户端和服务器之间的事情。其他客户端不会知道这些。
Events 事件
Photon事件是为客户端准备的消息。每个事件由字节码输入区分类型,并携带游戏更新。 “LoadBalancing应用程序”定义了几个事件,但是可以纯粹在客户端定义自己的事件。
与操作结果不同,接收的事件很可能导致另一个客户端的操作调用。这意味着:事件可能会随时到达。 “LoadBalancing应用程序”在有人加入或离开房间时发送事件。
操作RaiseEvent使事件真正通用:任何客户端可以通过将散列表与数据组合在一起,并在发送时指定代码来创建新事件。游戏数据可以发送,不需要更改服务器。
当然,对于更精细的服务器端对事件的反应,可以定义自定义操作,其检查事件数据,编译它或创建其他事件。
连接和超时
与普通UDP不同,Photon的可靠UDP协议建立了服务器和客户端之间的连接:如果UDP包中的命令是可靠的,则它们具有序列号和标志。如果这样的话,接收端必须确认命令。可靠的命令以短间隔重复,直到确认到达。如果未到达,则连接超时。
双方从他们的角度独立地监视这种连接。双方都有自己的规则来决定另一个是否仍然可用。
如果检测到超时,则在连接的那一侧发生断开连接。一旦一方认为他方不再响应,就不会向它发送任何消息。这就是超时断开是单向的而不是同步的原因。
网友评论