客户端-服务器执行时间行时

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

服务器

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

A server grouping with connections to three client devices.
服务器与三个客户端设备之间的连接

客户

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

连接的客户端还收到运行时数据模型的副本,任何玩家初始化(库存)或本地用户界面的初始化都会发生,例如初始化玩家的背包(库道具)或本地用户界面。当体验设置为真时,服务器最初只发送客户端最接近的内容的子集 。客户端然后渲染 3D 世界并开始运行任何适用的脚本。

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 中的所有部件都是刚性体,并参加模拟物理,除非另有说明。您还可以将多个零件组合成装配,这些装配被物理引擎视为单个刚性身体。


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 复制服务器和客户端之间的聊天消息。服务器负责过滤聊天消息并决定复制哪些消息给其他客户端。例如,服务器可以过滤包含低俗或过长的消息。