大家好,我想与你们讨论一下多人模式的问题。为了背景介绍我的游戏,目标是模仿老式_RUNESCAPE 的 TICK 基于战斗系统,但是结合更现代的图形和一些更新的系统。网格具有更高的细节度,移动运行在200ms TICK 时钟中,而所有其他内容运行在600ms TICK 时钟中,如同OSRS一样。
以形象的方式为cyberspacy风格,使用虚拟人物、光纤云和其他类似的事情。目前,我只是得到一个世界,其中有一个有几个机制的BOSS。它有盾牌切换(如果你熟悉OSRS,相当于祈祷切换),武器切换和一些可消耗物品。
下一步是建立一个物品系统,数据库持久性,以及怪物生成系统。
各位如何处理多人模式?我目前正在使用一个定制的ECS实现来分离数据和逻辑,然后同步我的组件并通过 Mirror 管理连接。由于我使用的采样频率非常低,因此我使用可靠的KCP进行传输,而不需要在600ms循环中进行客户端预测,并使用不可靠的KCP与一些基本预测进行200ms移动循环。
对于客户端/服务器分离,我基本上将大部分脚本绑定到编译时捕获违章行为:
**服务器只有 (`#if UNITY_SERVER || UNITY_EDITOR`):**
TickManager,所有系统。从客户端构建中移除。
**客户端只有 (`#if !UNITY_SERVER || UNITY_EDITOR`):**
所有视觉效果,音频,UI,输入,相机。从服务器构建中移除。
**共享,无检查:**
工具,枚举,网络组件,两边都需要。
我很有兴趣知道其他人如何处理多人模式,我并不太喜欢这个范式,虽然我可以管理分离,但它感觉有点太过复杂了。我考虑下次用Go或者类似的语言写整个服务器独立服务。欢迎听取您的其他设置。
评论 (0)