Phát trực tiếp đối tượng

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Trong trò chơi, phát trực tiếp đối tượng cho phép động cơ Roblox tải và gỡ bỏ nội dung 3D và các đối tượng liên quan trong Workspace một cách động. Điều này có thể cải thiện trải nghiệm tổng thể của người chơi theo nhiều cách, bao gồm:

  • Thời gian tham gia nhanh hơn
    — Người chơi có thể bắt đầu chơi ở một phần của thế giới trong khi phần còn lại của thế giới được tải ở nền.
  • Hiệu quả bộ nhớ
    — Các trò chơi có thể được chơi trên các thiết bị có bộ nhớ ít hơn vì nội dung được phát trực tiếp vào và ra. Những thế giới chi tiết và sống động hơn có thể được chơi trên một loạt các thiết bị rộng hơn.
  • Cải thiện hiệu suất
    — Tốc độ khung hình và hiệu suất tốt hơn, vì máy chủ có thể dành ít thời gian và băng thông hơn để đồng bộ hóa các thay đổi giữa thế giới và người chơi trong đó. Các khách hàng dành ít thời gian hơn để cập nhật các đối tượng không liên quan đến người chơi.
  • Mức độ chi tiết
    — Khi được cấu hình, các mô hình xa, hình đại diện nền tảng và địa hình vẫn hiển thị ngay cả khi chúng không được phát trực tiếp đến khách hàng, giữ cho trò chơi được tối ưu mà không hoàn toàn hy sinh hình ảnh nền. SLIM cung cấp mức độ chi tiết cao nhất cho cả mô hình và hình đại diện.

Phát trực tiếp đối tượng được điều khiển thông qua thuộc tính Workspace.StreamingEnabled, được bật theo mặc định cho các địa điểm mới được tạo trong Studio. Thuộc tính này không thể được thiết lập trong một kịch bản.

Cửa sổ Thuộc tính với thuộc tính StreamingEnabled được bật.

Hành vi kỹ thuật

Phạm vi

Logic và tính năng phát trực tiếp chỉ áp dụng cho các đối tượng là con cháu của Workspace, trong khi các đối tượng được lưu trữ trong các container khác như ReplicatedStorageReplicatedFirst không đủ điều kiện để phát trực tiếp. Ví dụ, việc đặt một mô hình nguyên tử dưới ReplicatedStorage không đảm bảo sao chép nguyên tử.

Phát trực tiếp vào

Khi một người chơi tham gia vào một trò chơi với phát trực tiếp đối tượng được bật:

  1. Các đối tượng trong Workspace được sao chép đến khách hàng không bao gồm các đối tượng sau:

    Models được đặt thành Không nguyên tử (mặc định) khi Workspace.ModelStreamingBehavior được đặt thành Improved

    Các con cháu của các đối tượng trên

  2. Trong quá trình chơi, máy chủ có thể phát trực tiếp các đối tượng trong các danh mục hoãn trên đến khách hàng dựa trên thuộc tính phát trực tiếp của trò chơi, vị trí của người chơi, hiệu suất thiết bị khách hàng và các điều kiện khác.

Phát trực tiếp ra

Trong quá trình chơi, một khách hàng có thể gỡ bỏ các khu vực của BaseParts khỏi Workspace của người chơi dựa trên hành vi được thiết lập bởi Workspace.StreamOutBehavior. Quá trình bắt đầu với các khu vực xa nhất từ trọng tâm sao chép và di chuyển gần hơn, khi cần thiết. Các khu vực bên trong phạm vi Workspace.StreamingMinRadius không bao giờ được phát trực tiếp ra.

Lưu ý rằng một Model không có các con cháu BasePart, chẳng hạn như một cái được sử dụng chỉ như một "container" cho các đối tượng không phải BasePart như các kịch bản, là miễn trừ khỏi việc phát trực tiếp ra trừ khi nó được làm con cháu của một BasePart.

Tập hợp

Các tập hợp vật lý phát trực tiếp vào như các đơn vị hoàn chỉnh, bao gồm các ConstraintsAttachments liên quan của chúng, giúp đảm bảo cập nhật vật lý nhất quán trên các khách hàng. Ngoại lệ duy nhất là khi tập hợp được neo, trong trường hợp đó chỉ các BaseParts trong phạm vi phát trực tiếp được phát trực tiếp cùng với các ConstraintsAttachments liên quan của chúng.

Các tập hợp không phát trực tiếp ra cho đến khi tất cả các BaseParts của chúng đủ điều kiện để phát trực tiếp ra.

Thuộc tính phát trực tiếp

Các thuộc tính sau đây điều khiển cách phát trực tiếp đối tượng áp dụng cho trò chơi của bạn. Tất cả các thuộc tính này đều không thể lập trình và phải được thiết lập trên đối tượng Workspace trong Studio.

Thuộc tínhMô tả
EnableSLIMAvatarsĐiều khiển xem một mô hình SLIM được tạo ra cho các nhân vật hình đại diện trong trò chơi hay không. Khi được bật, các hình đại diện sẽ được hiển thị bằng SLIM theo cách mà việc thiết lập Model.LevelOfDetail thành SLIM hoạt động cho các mô hình khác. Xem SLIM để biết thêm chi tiết.
ModelStreamingBehaviorĐiều khiển cách các mô hình Không nguyên tử (mặc định) phát trực tiếp vào và ra.

ĐƯỢC KHUYẾN NGHỊ
Sử dụng Improved để bật phát trực tiếp hiệu quả nhất cho các Models có các con cháu BasePart.
PredictiveStreamingModeChọn tham gia vào phát trực tiếp dự đoán sử dụng các tín hiệu của động cơ để chủ động phát trực tiếp các khu vực mà người chơi có khả năng cần sớm, chẳng hạn như vị trí hồi sinh hoặc các khu vực mà người chơi vừa rời đi thông qua thay đổi CFrame. Các dự đoán là cộng dồn, hết hạn sau một thời gian ngắn nếu không sử dụng, và bị bỏ qua trên các khách hàng bị hạn chế tài nguyên.
StreamingIntegrityModeTrò chơi có thể hoạt động theo những cách không mong muốn nếu một người chơi di chuyển vào một khu vực của thế giới chưa được phát trực tiếp đến họ. Thuộc tính này cung cấp một cách để tránh những tình huống có thể gây vấn đề đó.

ĐƯỢC KHUYẾN NGHỊ
Sử dụng PauseOutsideLoadedArea để cân bằng tính toàn vẹn của trò chơi mà không tạm dừng một cách không cần thiết hoặc quá thường xuyên. Bạn cũng có thể tùy chỉnh màn hình tạm dừng.
StreamingMinRadiusThuộc tính này chỉ ra bán kính xung quanh trọng tâm sao chép trong đó các đối tượng phát trực tiếp vào với độ ưu tiên cao nhất. Cần thận trọng khi tăng giá trị mặc định, vì làm như vậy sẽ yêu cầu nhiều bộ nhớ hơn và băng thông máy chủ hơn, ảnh hưởng đến các thành phần khác.

ĐƯỢC KHUYẾN NGHỊ
Sử dụng giá trị mặc định là 64 để tối đa hóa khả năng động cơ có thể thu nhỏ trò chơi cho các thiết bị thấp.
StreamingTargetRadiusThuộc tính này điều khiển khoảng cách tối đa từ trọng tâm sao chép trong đó các đối tượng phát trực tiếp vào. Lưu ý rằng động cơ được phép giữ lại các đối tượng đã tải trước đó vượt quá bán kính mục tiêu, nếu bộ nhớ cho phép.

Một StreamingTargetRadius nhỏ hơn sẽ giảm tải cho máy chủ, vì máy chủ sẽ không phát trực tiếp thêm các đối tượng vượt quá giá trị đã thiết lập. Tuy nhiên, bán kính mục tiêu cũng là khoảng cách tối đa mà người chơi sẽ có thể thấy toàn bộ chi tiết của trò chơi của bạn, vì vậy bạn nên chọn một giá trị tạo ra sự cân bằng tốt giữa những điều này.

ĐƯỢC KHUYẾN NGHỊ
Sử dụng giá trị mặc định là 1024 để đạt được sự cân bằng tốt giữa khả năng hiển thị cho người chơi trên các thiết bị cao cấp và một dấu chân bộ nhớ hợp lý.
StreamOutBehaviorThuộc tính này thiết lập hành vi phát trực tiếp ra theo giá trị của Enum.StreamOutBehavior. Nếu được đặt thành LowMemory (mặc định), khách hàng chỉ phát trực tiếp ra các khu vực vượt quá bán kính tối thiểu trong tình huống bộ nhớ thấp. Nếu được đặt thành Opportunistic, các khu vực vượt quá StreamingTargetRadius có thể bị gỡ bỏ trên khách hàng ngay cả khi không có áp lực bộ nhớ (trong chế độ này, khách hàng không bao giờ gỡ bỏ các đối tượng nằm trong bán kính mục tiêu, ngoại trừ trong các tình huống bộ nhớ thấp).

ĐƯỢC KHUYẾN NGHỊ
Sử dụng Opportunistic để cho phép khách hàng thu gom nội dung một cách quyết liệt, giảm đáng kể việc sử dụng bộ nhớ và giúp ngăn ngừa sự cố hết bộ nhớ.

Trọng tâm sao chép

Theo mặc định, việc phát trực tiếp xảy ra xung quanh PrimaryPart của nhân vật người chơi địa phương, mặc dù bạn có thể chỉ định một điểm trọng tâm sao chép khác thông qua Player.ReplicationFocus.

Bạn cũng có thể thêm và gỡ bỏ các trọng tâm sao chép bổ sung thông qua Player:AddReplicationFocus()Player:RemoveReplicationFocus() để chủ động bật phát trực tiếp ở nhiều khu vực của trò chơi.

Mô phỏng vật lý phía khách hàng, bao gồm dự đoán và tái mô phỏng khi quyền kiểm soát máy chủ được thực hiện, chỉ xảy ra trong các khu vực đã phát trực tiếp, ngay cả đối với các đối tượng được tạo cục bộ và cho các đối tượng Persistent. Nếu bạn có các đối tượng mà bạn muốn tiếp tục mô phỏng ngay cả khi chúng ở xa nhân vật, hãy tạo một trọng tâm sao chép bổ sung gần các đối tượng đó.

Phát trực tiếp dự đoán

Phát trực tiếp dự đoán là một tính năng tùy chọn sử dụng các tín hiệu của động cơ để dự đoán chuyển động của người chơi và chủ động phát trực tiếp các khu vực mà người chơi có khả năng cần sớm. Khi được bật bằng cách thiết lập PredictiveStreamingMode thành Enabled, nó có thể giảm thiểu các khoảng dừng phát trực tiếp và hiện tượng nhấp nháy hình ảnh mà không cần thay đổi mã.

Phát trực tiếp dự đoán là cộng dồn. Nó tạo ra các trọng tâm phát trực tiếp nhỏ, tạm thời ngoài các trọng tâm sao chép hiện có của bạn, phát trực tiếp một lượng nhỏ nội dung bổ sung và không thay đổi logic trò chơi hoặc hợp đồng phát trực tiếp của bạn. Nếu một dự đoán không cần thiết, khu vực dự đoán sẽ hết hạn sau một thời gian ngắn và động cơ sẽ gỡ bỏ nội dung. Động cơ cũng xem xét bộ nhớ và hiệu suất của khách hàng, bỏ qua các dự đoán trên các thiết bị bị hạn chế tài nguyên.

Khi PredictiveStreamingModeEnabled, các tính năng dự đoán sau đây sẽ hoạt động:

Tính năngMô tả
Tiền phát hồi sinhKhi một người chơi chết, động cơ tạo ra các trọng tâm phát trực tiếp nhỏ, tạm thời tại các vị trí hồi sinh có thể xảy ra để các khu vực hồi sinh có khả năng bắt đầu phát trực tiếp trước khi nhân vật người chơi xuất hiện, giảm thiểu các khoảng dừng và nội dung bị thiếu ngay sau khi hồi sinh.
Tối ưu hóa trả về CFrameKhi một người chơi CFrames ra khỏi một khu vực, động cơ tạo ra một trọng tâm phát trực tiếp nhỏ, tạm thời tại vị trí mà họ đã rời đi. Điều này giúp giữ cho khu vực đó được phát trực tiếp nếu người chơi trở lại ngay sau đó, một kịch bản phổ biến khi di chuyển giữa các tòa nhà, tầng phụ, cửa hàng hoặc trung tâm.

Các điều khiển phát trực tiếp theo mô hình

Để tránh các vấn đề với việc phát trực tiếp trên cơ sở từng mô hình và giảm thiểu việc sử dụng WaitForChild(), bạn có thể tùy chỉnh cách mà Models và các con cháu của chúng phát trực tiếp thông qua thuộc tính ModelStreamingMode.

Không nguyên tử

Theo mặc định, các mô hình là Nonatomic và chúng phát trực tiếp vào/ra dựa trên việc Workspace.ModelStreamingBehavior được đặt thành Legacy (mặc định) hoặc Improved.

Di sản

Khi Workspace.ModelStreamingBehavior được đặt thành Legacy (mặc định), container Model và các con cháu không phải BasePart như Scripts sẽ sao chép đến khách hàng khi người chơi tham gia. Sau đó, khi đủ điều kiện, các con cháu BasePart của mô hình sẽ phát trực tiếp vào.

Cải thiện

Khi Workspace.ModelStreamingBehavior được đặt thành Improved, hành vi phát trực tiếp của mô hình thay đổi tùy thuộc vào việc mô hình có chứa các con cháu BasePart hay không:

  • Một mô hình có các con cháu BasePart chỉ phát trực tiếp vào khi một trong số các con cháu BasePart của nó đủ điều kiện để phát trực tiếp vào. Tại thời điểm đó, mô hình và các BasePart đủ điều kiện sẽ phát trực tiếp vào, cùng với các con cháu không phải BasePart của mô hình.

    Khi BasePart cuối cùng còn lại của mô hình phát trực tiếp ra, mô hình đó sẽ phát trực tiếp ra cùng với nó.

  • Một mô hình không có các con cháu BasePart, chẳng hạn như một cái được sử dụng chỉ như một "container" cho các đối tượng không phải BasePart như các kịch bản, sẽ sao chép đến khách hàng ngay sau khi người chơi tham gia. Loại mô hình này là miễn trừ khỏi việc phát trực tiếp ra trừ khi nó được làm con cháu của một BasePart.

Nguyên tử

Nếu một Model được đặt thành Atomic, tất cả các con cháu ban đầu của nó sẽ được phát trực tiếp vào cùng nhau khi một con cháu BasePart đủ điều kiện để được phát trực tiếp vào. Do đó, một kịch bản phía khách hàng cần truy cập các đối tượng bên trong mô hình sẽ cần sử dụng WaitForChild() trên chính mô hình, nhưng không trên một con cháu MeshPart hoặc Part vì chúng được gửi cùng với mô hình.

Một mô hình nguyên tử chỉ được phát trực tiếp ra khi tất cả các phần con cháu của nó đủ điều kiện để phát trực tiếp ra, tại thời điểm đó toàn bộ mô hình sẽ phát trực tiếp ra cùng nhau.

Một sơ đồ cho thấy việc phát trực tiếp mô hình nguyên tử cùng với các con cháu.

Bền

Các mô hình Persistent không chịu sự phát trực tiếp vào hoặc ra bình thường. Chúng được gửi như một đơn vị nguyên tử hoàn chỉnh ngay sau khi người chơi tham gia và trước khi sự kiện Workspace.PersistentLoaded được kích hoạt. Các mô hình bền và các con cháu của chúng không bao giờ được phát trực tiếp ra, nhưng để xử lý an toàn việc phát trực tiếp vào trong một kịch bản phía khách hàng, bạn nên chờ sự kiện PersistentLoaded được kích hoạt.

Một sơ đồ cho thấy việc phát trực tiếp mô hình bền cùng với các con cháu.

BềnTheoNgườiChơi

Các mô hình được đặt thành PersistentPerPlayer hoạt động giống như Persistent cho những người chơi đã được thêm bằng cách sử dụng Model:AddPersistentPlayer(). Đối với những người chơi khác, hành vi giống như Atomic. Bạn có thể hoàn tác một mô hình khỏi sự bền vững theo người chơi thông qua Model:RemovePersistentPlayer().

Tùy chỉnh màn hình tạm dừng

Giả sử Workspace.StreamingIntegrityMode được đặt thành PauseOutsideLoadedArea được khuyến nghị, trò chơi sẽ tạm dừng nếu một người chơi di chuyển vào một khu vực của thế giới chưa được phát trực tiếp đến họ. Trong những trường hợp này, thuộc tính Player.GameplayPaused cho biết trạng thái tạm dừng hiện tại của người chơi, có thể được sử dụng với một kết nối GetPropertyChangedSignal() để hiển thị hoặc ẩn một GUI tùy chỉnh.

LocalScript
local Players = game:GetService("Players")
local GuiService = game:GetService("GuiService")
local player = Players.LocalPlayer
-- Vô hiệu hóa modal tạm dừng mặc định
GuiService:SetGameplayPausedNotificationEnabled(false)
local function onPauseStateChanged()
if player.GameplayPaused then
-- Hiển thị GUI tùy chỉnh
else
-- Ẩn GUI tùy chỉnh
end
end
player:GetPropertyChangedSignal("GameplayPaused"):Connect(onPauseStateChanged)

Gỡ lỗi thời gian chạy

Động cơ bao gồm nhiều bảng điều khiển gỡ lỗi trên màn hình có thể được bật trên khách hàng bằng cách sử dụng các phím tắt. Để truy cập thông tin gỡ lỗi phát trực tiếp:

  1. Mở lớp gỡ lỗi Tóm tắt Mạng thông qua ShiftCtrlF3 (Windows) hoặc ShiftF3 (Mac).
  2. Khi lớp gỡ lỗi đã mở, nhấn Shift1 liên tục để chuyển đổi giữa các bảng có sẵn. Bảng thứ tư là chế độ gỡ lỗi Phát trực tiếp hiển thị thông tin hữu ích về thời gian chạy:
    • Cài đặt phát trực tiếp hiện tại
    • Các khu vực hiện đang được tải (đã phát trực tiếp vào)
    • Hành vi và trạng thái phát trực tiếp

Khi được bật, các khu vực được tô màu nổi bật xuất hiện trong không gian 3D:

Màu sắcMô tả
Nhỏ hơn StreamingMinRadius
Lớn hơn hoặc bằng StreamingMinRadius và nhỏ hơn StreamingTargetRadius
Bằng StreamingTargetRadius
Lớn hơn StreamingTargetRadius
©2026 Roblox Corporation. Roblox, logo Roblox và Powering Imagination là các nhãn hiệu đã đăng ký và chưa đăng ký của chúng tôi tại Hoa Kỳ và các quốc gia khác.