Concevoir de grandes cartes ouvertes sur Roblox impose une contrainte majeure : plus de 60% des connexions s'effectuent sur des smartphones disposant de moins de 3 Go de RAM. Répliquer l'intégralité d'un monde complexe provoque instantanément des crashs pour manque de mémoire.
La fonctionnalité StreamingEnabled charge et décharge dynamiquement les objets 3D en fonction de la proximité du joueur. Ce guide détaille l'usage de StreamOutBehavior, ModelStreamingMode, RequestStreamAroundAsync et la gestion des scripts clients adaptés.
Gestion dynamique du monde 3D par le moteur Roblox :
Préserver l'intégrité des véhicules et mécanismes :
-- Streaming-Resilient Tag Binder using CollectionService
local CollectionService = game:GetService("CollectionService")
local Workspace = game:GetService("Workspace")
local TAG_NAME = "InteractiveNPC"
local function onObjectStreamedIn(instance)
if not instance:IsA("Model") then return end
-- Ensure primary part exists before attaching UI
local primaryPart = instance.PrimaryPart or instance:WaitForChild("HumanoidRootPart", 5)
if not primaryPart then return end
print("[Streaming] Interactive object loaded: " .. instance.Name)
-- Attach billboard prompt or local animation controller
end
local function onObjectStreamedOut(instance)
print("[Streaming] Interactive object unloaded: " .. instance.Name)
-- Clean up any active local tweens, highlights, or sound emitters
end
CollectionService:GetInstanceAddedSignal(TAG_NAME):Connect(onObjectStreamedIn)
CollectionService:GetInstanceRemovedSignal(TAG_NAME):Connect(onObjectStreamedOut)
-- Initial sweep for parts already streamed in upon join
for _, obj in ipairs(CollectionService:GetTagged(TAG_NAME)) do
task.spawn(onObjectStreamedIn, obj)
end
Éliminer la chute dans le vide lors des déplacements rapides :
player:RequestStreamAroundAsync() sur le serveur avant la téléportation.Maintenir la qualité visuelle tout en réduisant la VRAM :
Parce que les objets lointains n'existent pas sur le client tant que le joueur ne s'en approche pas. Les accès directs retournent nil.
Atomic préserve la mémoire en déchargeant le bloc complet au loin ; Persistent le garde en permanence dans la RAM client.
En ne conservant que quelques centaines de studs en mémoire, maintenant l'empreinte RAM sous les 800 Mo.
Oui ! Le serveur conserve l'intégralité du Workspace en mémoire à tout moment.
Évaluez votre profil technique et optimisez votre concentration grâce aux outils DopaBrain.
Découvrir les Tests DopaBrain