【发布时间】:2017-05-26 19:55:29
【问题描述】:
(对不起,这篇文章看起来很长,实际上它的上下文真的很短)
您好,我是网络编程和概念方面的新手。不过,我之前曾多次与 PUN 合作过。我熟悉 PUN 同步事物的方式。 RPC和序列化等
我想实现一个完全权威且未来可扩展的服务器架构,该架构在专用服务器中工作并为客户管理房间/大厅服务。我计划的服务器架构类似于 Rust/ARK/Hurtworld 等游戏。但是游戏将包含 7v7 比赛(不像他们那样 100 人,最多 15 人),但也会有改变世界的机制。 (比如为世界建造一些东西或通过采矿改变地形等)。游戏玩法在视觉上类似于 Rust,但机制会有所不同。但是服务器架构应该与那些游戏非常相似。这意味着它不会是点对点。
首先:“我知道”我必须使用 Photon Server 来处理这些类型的事情。所以我可以对服务器端逻辑进行编码吗?如果我没记错的话,权威架构、持久化世界、用户和世界数据库、服务器管理所有这些都应该在服务器端完成。然而,正如我在开始时所说的那样,我之前只使用过 PUN,并且我所知道的唯一客户端-服务器架构是:一个受信任的客户端(用户)托管游戏,其他人加入他。
现在。我可以学习 Photon Server 和服务器端编程。 (见鬼,现在甚至开始学习它。它的工作方式有点类似于 PUN 的工作方式。操作和事件而不是 RPC 等。)但是,要创建一个持续的服务器架构,我必须深入学习和实践它。含义:我需要深厚的知识来创建一个商业产品服务器。
因此,对于游戏的初始原型设计阶段,我不想将工作量集中在学习和创建 Photon Server 上。相反,我想出了一个主意。
如果我在专用服务器上创建 Unity 实例,会创建(托管)带有 PUN(云)的房间。世界各地的其他玩家也会加入这些主办的比赛吗?专用服务器只是托管游戏并让其他玩家加入游戏的“非玩家”主客户端。而且还自己做服务器的东西。
因此,我将创建一个独立的“仅服务器”Unity 项目文件,它可以管理服务器、管理数据库、创建和维持持久性世界。所有不在用户客户端中的功能,都可以在服务器(主机/主)客户端的项目中。我可以在专用服务器中自行管理所有这些。
所以澄清一下:运行游戏模拟、管理世界、管理数据库、管理玩家、管理一切和运行一切的“特殊”统一项目将是主客户端。将主持比赛。并且“客户端”统一项目将加入这个游戏,并将“发送”权威架构的输入。服务器将“接受”这些输入,对其进行模拟并将其发送回客户端。
进一步澄清:Photon Server 应该处理的所有内容都将由 PUN 和云中继服务器、RPC 和序列化函数处理。所以我不会用服务器编程来忙我的工作量。双赢。对吧?
我知道,这可能不是最好的解决方案。我还没有找到任何关于它的单一文档/主题。所以这可能是一个非常愚蠢的想法。但我想知道。如果我从这种类型的架构开始,当我通过原型阶段时,将 Photon Server 实现到服务器端是否容易?遵循这种方法是否容易且工作效率高?还是我应该停下手头的工作,开始学习 Photon 服务器?
【问题讨论】:
-
您需要使用 Photon 吗?有一个有趣的 UNET Framework,它具有您在 Asset Store 中需要的功能。
-
您好,请问您的解决方案是什么?我正在尝试做类似的事情,在服务器上托管一个统一实例,但我只使用 UNET。
标签: networking unity3d server multiplayer photon