Netzwerk-Besitz

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Um komplexe physikalische Mechanismen zu unterstützen, während gleichzeitig eine reibungslose und reaktionsschnelle Erfahrung für Spieler anvisiert wird, verwendet die Roblox-Physik-Engine ein verteiltes Physik-System , in dem die Berechnungen zwischen dem Server und allen verbundenen Clients verteilt werden. Dans diesem System weist die Engine Net

Clients erleben mehr reaktionsschnelle Physikinteraktionen mit Teilen, die sie besitzen, da es keine Verzögerung von der Kommunikation mit dem Server gibt. Die Besitzung von Netzwerken verbessert auch die Leistung des Servers, da die Physik berechnungen auf mehrere Clients aufgeteilt werden können, so dass der Server andere Aufgaben priorisieren kann.

Besitz von BasePart

Standardmäßig behält der Server die Besitzung von allen BasePart . Darüber hinaus besitzt der Server immer die verankerten BaseParts und Sie können ihre Besitzung nicht manuell ändern.

Basierend auf der Hardwarekapazität des Clients und der Nähe des Spieler:inan einen unverankerten Player.Character , weist der Engine die Eigentumsrechte an diesen Teil automatisch dem Client zu. Daher sind Teile, die einem Spieler:innähere sind, wahrscheinlicher Teil des Clients.

Besitz vonAssembly

Wenn ein physikalisch basierter Mechanismus keine verankerten Teile hat, setzt die Eigentums-Einstellung auf einer Montagem innerhalb dieses Mechanismus die gleiche Eigentums für jede Montagem im Mechanismus.

Wenn du eine einsame Montage ankerst, die nicht Teil eines breiteren Mechanismus ist, geht seine Eigentum an den Server, da der Server immer der Anker Class.BasePart|BaseParts ist. Nach dem Entfernen der gleichen Montage geht ihr vorheriger Eigentumszustand verloren und sie wird automatisch durch den Engine verarbeitet.

Wenn Sie eine Montagemaschine innerhalb eines breiteren Mechanismus von Montagemaschinen ankeren, geht die Besitzung an den Server, aber die Besitzung der anderen Montagemaschinen bleibt unverändert. Das Verankern desselben Montagemaschines begründet seine zuvor festgelegte Besitzung zurück.

Berechtigung einstellen

In Erlebnissen mit komplexen Physikinteraktionen oder in Fällen, in denen Sie direkte Kontrolle zuweisen müssen, können Sie die Besitz durch einen Server-seitigen Anruf auf BasePart:SetNetworkOwner() einstellen.

Betrachten Sie ein Fahrzeug, das ein VehicleSeat -Objekt für den Fahrer und ein Class.Seat -Objekt für einen Passagier mit enthalten, mit dem beide in der Fahrzeugmontage enthalten

Die folgenden Script -Fixen dieses Problems, indem sie dem Fahrer das Netzwerkbesitzhandling manuell zuweisen. In ihm setzt der


local Players = game:GetService("Players")
local vehicleSeat = script.Parent
vehicleSeat.Changed:Connect(function(prop)
if prop == "Occupant" then
local humanoid = vehicleSeat.Occupant
if humanoid then
-- Hol dir den Spieler aus dem Charakter
local player = Players:GetPlayerFromCharacter(humanoid.Parent)
if player then
vehicleSeat:SetNetworkOwner(player)
end
else
-- Eigentum zurücksetzen, wenn der Sitz nicht besetzt ist
vehicleSeat:SetNetworkOwnershipAuto()
end
end
end)

Besitzvisualisierung

Um bei der Netzwerk-Eigentums-Debugging-Hilfe zu sein, kann Studio farbige Umrisslinien um Objekte rendern, wenn sie getestet werden.

UmrissfarbeBeschreibung
(grün)Ihr Client besitzt das Teil und simuliert es.
(rot)Der Teil befindet sich in einer "uffer-Zone", in der Ihr Client ihn simuliert, aber er gehört immer noch einem anderen. Ihr Client kann nach diesem Erwerb Besitz erhalten, oder er kann es ablehnen.

(weiß/grau)Der Server oder ein anderer Client besitzt das Teil entweder über ein automatisches Netzwerk-Eigentum oder durch eine explizite Zuweisung über part:SetNetworkOwner() .

Um die Netzwerkbesitzvisualisierung zu aktivieren:

  1. Klicken Sie auf die Visualisierungsoptionen -Schaltfläche in der oberen rechten Ecke des 3D-Ansichtsfensters.

    A close up view of the 3D viewport with the Visualization Options button indicated in the upper-right corner.
  2. Im Dropdown-Menü Netzwerk-Eigentümer einschalten.

Sicherheitsbedenken

Roblox kann keine physikalischen Berechnungen überprüfen, wenn ein Client Eigentum über ein BasePart hat. Clients können dies ausnutzen und schlechte Daten an den Server senden, z. B. das Teleportieren des BasePart , so dass es durch Wände geht oder herumflitzt.

Darüber hinaus, BasePart.Touched Ereignisse sind an Netzwerkbesitz gebunden, was bedeutet, dass ein Client Touched Ereignisse auf einer BasePart , die er besitzt und den Server sendet

Siehe Sicherheitstaktiken und Cheat-Mitigation für detaillierte Sicherheitstaktiken und Cheat-Mitigation-Taktiken für Roblox-Erlebnisse.