Roblox希望节省在每个玩家的机器上计算物理量的费用。 相反,它在一个玩家的机器上计算物理量。
网络所有权是指正在模拟零件物理的玩家。 例如,如果Player1对他们的角色拥有网络所有权(关于他们自己角色的所有物理模拟都是在他们自己的机器上完成的)。
程序员可以通过SetNetworkOwner()API设置网络所有权。 此外,服务器可以拥有网络所有权。
这有几个含义
- 拥有钻机网络物理的玩家看到的滞后最少(事物为60 FPS)
- 不拥有钻机物理的玩家以复制的速度看到事物
- Roblox尝试在物理接收和发送之间进行插值(因此,GetRenderingCFrame()是一件事情)
- Roblox不验证物理计算。 如果玩家拥有网络所有权,他们可以利用此所有权并将错误的数据发送到服务器(传送部件等)。
- 玩家始终在其角色上拥有网络物理学。
- 附件(钻机)始终具有相同的网络所有者
- Roblox不能完美地处理不同网络拥有项目之间的冲突。 我遇到的最大问题之一是处理一艘客户拥有的小船与非客户拥有的资源(例如一块木板)相撞。这意味着这艘船突然停了下来,因为客户说“无法处理零件”
- 上面的两个事实是为什么角色曾经是固定的对象(用汽车撞到它们,然后汽车反弹)的原因。 现在,此问题已解决。
- Roblox尝试在冲突时转移网络所有权。 使用手动所有权控制,这似乎不会发生
- 相同的错误会导致汽车和船只顶部的松动零件使这些交换的网络所有权导致船只突然停下
- 您要确保移动船上其他零件之上的零件具有相同的网络所有者
你可以在这里读更多关于它的内容
- blog.roblox.com/2012/03/how-roblox-is-improving-its-network-physics/