【发布时间】:2012-06-05 03:19:34
【问题描述】:
我在 Photon Server 官方论坛上问过这个问题,但它没有这个网站那么活跃,所以可能会有人明白我在说什么,所以如果你有时间和知识,请分享一下。谢谢!
来了……
所以,我在 Photon 上有一个非常好的服务器原型和一个与服务器对话的基本 Unity3D 客户端。 它是根据 cjrgaming 上的示例构建的。
客户端可以:连接、发送请求、建立和发送加密请求 服务器可以:创建peer,接收操作请求,向客户端发送操作响应或事件,我的小补充是: 如果一个游戏有很多操作,你不必使用巨大的 switch case 语句,而是我将操作划分为类别(类),并通过委托和字典来调用它们。
当我觉得它已经准备好发布时,我会发布它的工作示例,但是现在,对于我的实际问题..(抱歉,我的帖子很长,我必须解释我所知道的以及到目前为止我所拥有的):
从客户端发送到服务器的实际操作是什么? 还是服务器向客户端(所有客户端一次?)引发的事件?
起初,我认为每个操作都是游戏中特定的用户流。例如操作码“1”,表示某玩家X想射杀玩家Y,做某事。 但后来,我意识到,根据字节限制,你不能把所有的游戏逻辑都放在 255 次操作中,而不将其扩展到 short int 或其他东西。
然后我发现还有一个channelID,在同一个操作码请求上可以不同...这意味着对我来说操作码不是用户流,而是相同/相似的数据流客户端和服务器之间的操作,channelID 可用于区分要在服务器上计算的请求操作。
那么……!我意识到(哦,傻瓜),有参数从客户端发送到服务器,反之亦然在字典中,这增加了另一层可能的用户流。
所以..现在我想明白了,但他们让我更加困惑。
谁能简单解释一下操作/事件/channelID的目的? 例如,如果您做一个小型多人游戏,您将使用什么来制作用户(游戏)流程,例如 -> 玩家击中目标,玩家在世界上捡起物品,玩家发送消息。您会为每个流使用唯一的操作代码,还是按含义对操作进行分组并使用通道来区分请求,或者甚至在这里,您对许多用户流使用相同的 channelID 并通过一些 ID 内部参数来区分它们?
希望我说得有道理。
非常感谢大家,至少,如果有帮助,请花时间!
【问题讨论】: