客户端-服务器运行时

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

服务器

Roblox 体验默认为多人游戏,并且运行在客户端-服务器模型。Roblox 服务器 是最终权威,负责维护体验状态,并且对所有连接的客户端保持同步。

A server grouping with connections to three client devices.
有三个客户端设备的服务器

客户

体验运行时,Roblox 会复制您从 Studio 中构建和发布的“编辑”数据模型的版本,并将其作为“运行时”数据模型在 Roblox 服务器上运行。

连接的客户端还收到一个副本的运行时数据模型和任何玩家的背包(物道具)或本地用户界面的初始化,例如初始化玩家的背包(工作间品工作间)或本地用户界面。当体验具有 Workspace.StreamingEnabled 设置为 true 时,服务器最初只会发送一个子集的内容在 Workspace 最近

A diagram that maps objects between 'edit' and 'runtime' data models.

复制

服务器不断更新连接的客户端,使其在服务器和客户端之间通过“复制”过程保持所有东西的同步,这是一个名为“复制”的过程,它同步数据模型、物理模拟和聊天消息。 复制逻辑在客户端和服务器上存在,以确保同步。

数据

数据模型变更可以在多种情况下发生,例如当 3D 世界中的某个东西被创建或 3D 世界的属性发生变化。 这通常发生在服务器或客户端的脚本在服务器-客户端边界的另一侧进行反射时。 以下图形显示了数据复制的常见场景。

客户端服务器 >
>

A diagram of one client communicating with the server.

从任意客户端向服务器通信。例如,客户端按下 P 键来喝下隐身药剂,然后告诉服务器让该玩家的角色隐形给其他玩家。

服务器客户端 >
>

A diagram of the server communicating with one client.

从服务器到特定客户端的通信。例如,玩家加入体验,服务器将该玩家的物品栏通过一系列物品设置填充。

服务器所有客户 >
>

A diagram of the server communicating with all connected clients.

与服务器和所有连接的客户端之间的通信。例如,显示所有参与比赛的人的倒计时计时器。

物理

Roblox 使用了一个刚体物理引擎,该引擎负责计算 3D 世界中零件的移动和交互。 默认情况下,Roblox 中的所有部分都是刚体,并且参与模拟物理,除非另有说明。您还可以将多个部分组合成为集合,这是 Roblox 中的单个刚身体。


A single block part in the shape of a cube that represents a single assembly.
1个装配;1个部分
A player character that represents a single assembly of 18 individual parts.
1 个装配件;18 个零件
A pirate ship mesh that represents a single assembly of 179 individual parts.
1 组装; 179 零件

Roblox 在必要时会在服务器和客户端之间重复物理模拟数据。 为了帮助提高模拟性能,Roblox 可以将对象的所有权分配到特定的客户端或服务器。 这意味着客户端或服务器可以对该组合的物理模拟进行直接的控制。 其他客户端通过对该组合的位置和移动进行更新来从所有者那里获得更新。

通过着色边框显示部件所有权

聊天

Roblox 在服务器和客户端之间复制聊天消息。 服务器负责过滤聊天消息并决定要复制哪些消息给其他客户端。 例如,服务器可以过滤包含冒犯性或太长的消息的消息。