Kesahahan Jaringan

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Untuk mendukung mekanisme fisik kompleks sambil juga menargetkan pengalaman yang halus dan responsif bagi pemain, mesin Roblox fisik menggunakan sistem fisik distribusi di mana kalkulasi di distribusi di antara server dan semua klien yang terhubung. Dalam sistem ini, mesin menet

Klien mengalami lebih responsif interaksi fisika dengan bagian yang mereka memiliki, karena tidak ada kelambatan dari komunikasi dengan server. Kepemilikan jaringan juga meningkatkan kinerja server karena kalkulasi fisika dapat dibagi di antara setiap klien, memungkinkan server untuk men prioritaskan tugas lain.

Pemilikan BasePart

Secara default, server menyimpan kepemilikan dari setiap BasePart . Selain itu, server selalu memiliki kepemilikan tertaut BaseParts dan Anda tidak dapat secara manual mengubah kepemilikan mereka.

Berdasarkan kapasitas hardware klien dan ketentuan dekatnya pemain, mesin secara otomatis menetapkan kepemilikan bagian itu ke klien. Oleh karena itu, bagian-bagian dekat dengan karakter pemain lebih mungkin menjadi milik pemain.

Kesahatan Pemilikan

Jika mekanisme berbasis fisika tidak memiliki bagian yang terancang, menetapkan kepemilikan di dalam mount dalam mekanisme tersebut menetapkan kepemilikan yang sama untuk setiap mount dalam mekanisme.

Jika Anda menambatkan kumpulan pengumpul yang tunggal yang bukan bagian dari mekanisme yang lebih luas, kepemilikannya pergi ke server, karena server selalu memiliki kepemilikan tertaut Class.BasePart|BaseParts. Setelah menambatkan kumpulan yang sama, keadaan kepemilikan sebelumnya hilang dan itu dikembalikan ke pengelolaan otomatis oleh mesin.

Jika Anda menambatkan satu assemble dalam mekanisme assemble yang lebih luas, kepemilikan assemble tertentu pergi ke server, tetapi kepemilikan assemble lainnya tetap tidak berubah. Unanchoring assemble yang sama mengembalikan kepemilikan sebelumnya yang diatur.

Mengatur Keemasan

Dalam pengalaman dengan interaksi fisik kompleks atau dalam kasus di mana Anda perlu menetapkan kontrol langsung, Anda dapat menetapkan kepemilikan melalui panggilan server ke BasePart:SetNetworkOwner() .

Pertimbangkan kendaraan yang memiliki objek VehicleSeat untuk pengemudi dan objek Seat untuk pasien, dengan kedua objek ini termas

Pemecahan berikut Script menyelesaikan ini dengan menetapkan kepemilikan jaringan ke pengemudi secara manual. Ini meng


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
-- Dapatkan pemain dari karakter
local player = Players:GetPlayerFromCharacter(humanoid.Parent)
if player then
vehicleSeat:SetNetworkOwner(player)
end
else
-- Atur ulang kepemilikan saat kursi tidak diisi
vehicleSeat:SetNetworkOwnershipAuto()
end
end
end)

Menyajikan Kepemilikan

Untuk membantu dengan debugging kepemilikan jaringan, Studio dapat menyajikan tingkat tingkat warna di sekitar objek saat playtesting.

Warna UmumDeskripsi
(hijau)Klien Anda memiliki bagian itu dan mengsimulasikannya.
(merah)Bagian itu berada dalam " zona batas " di mana klien Anda menyimpulkannya, tetapi itu masih dimiliki oleh sesuatu yang lain. Klien Anda mungkin mendapatkan kepemilikan setelah ini, atau mungkin menolak.

(putih/abu-abu)Server atau klien lainnya memiliki bagian melalui kedua otomatis jaringan kepemilikan atau dari ekspresi asignasi melalui part:SetNetworkOwner() .

Untuk mengaktifkan visualisasi kepemilikan jaringan:

  1. Klik pada tombol opsi visualisasi di sudut atas kanan 3D viewport.

    A close up view of the 3D viewport with the Visualization Options button indicated in the upper-right corner.
  2. Dalam menu dropdown, beralih pada Pemilik jaringan .

Ketidakpastian Keamanan

Roblox tidak dapat memverifikasi perhitungan fisika saat klien memiliki kepemilikan atas BasePart . Klien dapat mengeksploitasi ini dan mengirim data buruk ke server, seperti menyebarkan BasePart , menembus dinding atau terbang di sekitar.

Selain itu, acara BasePart.Touched terikat dengan kepemilikan jaringan, yang berarti klien dapat menyebabkan acara Touched di serveryang dimilikinya dan mengirimny

Lihat Taktik Keamanan dan Mitigasi Cheat untuk taktik keamanan dan mitigasi cheat untuk pengalaman Roblox.