Ağ sahipliği

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Oyuncular için pürüzsüz ve yanıt veren bir deneyim hedeflerken karmaşık fizik mekanizmalarını desteklemek için, Roblox fizik motoru dağıtılan hesapların sunucu ve tüm bağlı istemciler arasında dağıtıldığı bir dağıtılmış fizik sistemi kullanır.Bu sistem içinde, motor fiziksel olarak simüle edilen ağ sahipliğini bir müşteriye veya sunucuya atar, fiziğin hesaplanması işini bölmek için çalışmayı bölmek için BaseParts

Müşteriler, sunucu ile iletişimden gelen gecikme olmadığından, sahip oldukları parçalarla daha tepkili fiziksel etkileşimler yaşarlar, çünkü sunucuyla iletişimde gecikme yoktur.Ağ sahipliği ayrıca sunucu performansını artırır çünkü fizik hesaplamaları bireysel müşteriler arasında bölünebilir, böylece sunucu diğer görevlere öncelik verebilir.

TemelParça sahipliği

Varsayılan olarak, sunucu herhangi bir BasePart 'nin sahipliğini saklar.Ayrıca, sunucu her zaman sabitlenmiş BaseParts sahiptir ve sahipliğini manuel olarak değiştiremezsiniz.

Bir müşterinin donanım kapasitesine ve oyuncunun sabitlenmemiş bir 'ye olan yakınlığına dayanarak, motor otomatik olarak bu parçanın sahipliğini müşteriye atar.Dolayısıyla, bir oyuncunun karakterine yakın parçalar oyuncunun sahibi olması daha muhtemeldir.

Montaj sahipliği

Fizik tabanlı bir mekanizmanın sabitlenmiş parçaları yoksa, bir mekanizma içindeki bir montaj üzerindeki sahiplik ayarı, mekanizmanın içindeki her montaj için aynı sahipliği ayarlar.

Daha geniş bir mekanizmanın parçası olmayan yalnız bir montajı sabitlerseniz, sahipliği sunucuya geçer, çünkü sunucu daima sabitlenmiş sahiptir.Aynı montajı çıkarmadan önce, önceki sahiplik durumu kaybolur ve motor tarafından otomatik işleme döner.

Bir montajı daha geniş bir montaj mekanizması içinde sabitlerseniz, sahipliği sunucuya gider, ancak diğer montajların sahipliği değişmez.Aynı montajın sabitlenmesi, önceden ayarlanmış sahipliğini geri alır.

Sahipliği ayarlama

Karmaşık fizik etkileşimleriyle deneyimlerde veya doğrudan kontrol atamanız gereken durumlarda, bir sunucu tarafı çağrısı aracılığıyla BasePart:SetNetworkOwner() sahipliğini ayarlayabilirsiniz.

Sürücü için bir VehicleSeat nesnesi ve bir yolcu için bir Seat nesnesi olan bir araç düşünün, her ikisi de araba montajına dahil edilmiş.Varsayılan sahiplik kurallarıyla, bir oyuncu karakteri Seat (yolcu) oturur ve ardından başka bir oyuncu VehicleSeat (sürücü) atlar, yolcu tüm araçtaki fiziksel sahipliği kazanır çünkü ilk önce girdiler.Sürücü, girişin tanınmasından önce birkaç ağ döngüsü beklemek zorunda kalacak ve araba daha az yanıt verecek.

Aşağıdaki Script düzeltir bunu, sürücüye ağ sahipliğini manuel olarak atayarak.Bunun içinde, VehicleSeat seti Occupant üzerinde oturan Humanoid 'e yerleştiriyor, böylece senaryo oyuncunun koltuğa oturduğunda oturma koltuğunun Changed etkinliğini dinliyor.Sürücü koltuktan ayrıldığında, araçın ağ sahipliği otomatik olarak BasePart:SetNetworkOwnershipAuto() ile geri döndürülür.


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
-- Oyuncuyu karakterden al
local player = Players:GetPlayerFromCharacter(humanoid.Parent)
if player then
vehicleSeat:SetNetworkOwner(player)
end
else
-- Koltuk boş olduğunda sahipliği sıfırla
vehicleSeat:SetNetworkOwnershipAuto()
end
end
end)

Sahipliği görselleştirme

Ağ sahipliği depagajına yardımcı olmak için, Studio oyun testi sırasında nesnelerin etrafında renkli çizgiler görüntüleyebilir.

Çizgi rengiAçıklama
(yeşil)Müşteriniz parçayı sahipliyor ve onu simule ediyor.
(kırmızı)Parça, müşterinizin bunu simüle ettiği bir "bekleme bölgesi" içindedir, ancak hala başka bir şey tarafından sahiptir.Müşteriniz bundan sonra sahiplenebilir veya reddedebilir.
(beyaz/ gri)Sunucu veya başka bir istemci parçayı otomatik ağ sahipliği veya part:SetNetworkOwner() açık atama yoluyla sahiptir.

Ağ sahipliği görselleştirmesini etkinleştirmek için:

  1. 3B görüntü penceresinin sağ üst kısmındaki visualizasyon seçenekleri düğmesine tıklayın.

    A close up view of the 3D viewport with the Visualization Options button indicated in the upper-right corner.
  2. Açılır menüde, Ağ sahipleri 'yi açın.

Güvenlik endişeleri

Bir müşterinin bir BasePart üzerindeki sahipliği olduğunda Roblox fiziği hesaplarını doğrulayamaz.Müşteriler bunu kötüye kullanabilir ve sunucuya çok fazla veri gönderebilir, örneğin BasePart , duvarlardan geçirir veya uçar.

Ayrıca, BasePart.Touched etkinlikleri ağ sahipliğine bağlıdır, yani bir istemci bir Touched etkinliğini sahip olduğu bir BasePart a ateş edebilir ve sunucuya gönderebilir, sunucu bununla hiçbir şeye dokunmadığı halde.Örneğin, bir müşteri, etkinliği yoluyla kod yoluyla başka bir oyuncuya hasar veren bir kılıç anlaşması yapabilir, bu nedenle müşteriler tarafından ateşlenen bu tür olayların geçerliliğini kontrol etmek önemlidir.

Güvenlik Taktikleri ve Hile Azaltma Roblox deneyimleri için ayrıntılı güvenlik taktikleri ve hile azaltma taktikleri için görün.