Run it
Copy the script and paste it into your executor.
RunService = :()
Stats = :()
Workspace = :()
Lighting = :()
ReplicatedStorage = :()
export TroveTask = RBXScriptConnection | | () -> () | thread
export EngineConfig = {
TargetFramerate: number,
SamplingWindow: number,
AdaptiveThrottling: boolean,
AggressiveLOD: boolean,
}
DEFAULT_CONFIG: EngineConfig = {
TargetFramerate = ,
SamplingWindow = ,
AdaptiveThrottling = ,
AggressiveLOD = ,
}
Trove = {}
Trove.__index = Trove
Trove.()
({ _tasks = {} :: { TroveTask } }, Trove)
Trove:<T>(: T & TroveTask): T
.(self._tasks, )
Trove:()
_, (self._tasks)
() ==
:()
() ==
:()
() ==
()
() ==
.()
.(self._tasks)
ObjectPool = {}
ObjectPool.__index = ObjectPool
ObjectPool.(template: , prewarmSize: number)
self = ({}, ObjectPool)
self._template = template
self._pool = {} :: { }
self._container = .()
self._container.Name = .. template.Name
self._container.Parent = ReplicatedStorage
_ = , prewarmSize
obj = template:()
obj.Parent = self._container
.(self._pool, obj)
self
ObjectPool:():
obj:
#self._pool >
obj = .(self._pool) ::
obj = self._template:()
obj
ObjectPool:(obj: )
obj.Parent = self._container
.(self._pool, obj)
ObjectPool:()
self._container:()
.(self._pool)
OptimizationEngine = {}
OptimizationEngine.__index = OptimizationEngine
OptimizationEngine.(config: EngineConfig?)
self = ({}, OptimizationEngine)
self.Config = config DEFAULT_CONFIG
self.Trove = Trove.()
self.RemoteRegistry = ({}, { __mode = }) :: { []: number }
self.PartCache = ({}, { __mode = }) :: { [BasePart]: boolean }
self.CurrentFramerate =
self.IsThrottled =
self.IsActive =
self
OptimizationEngine:()
(()
settingsObj = ()
physics = settingsObj:()
physics .EnviromentalPhysicsThrottle
physics.PhysicsEnvironmentalThrottle = .EnviromentalPhysicsThrottle.DefaultAuto
network = settingsObj:()
network
network.IncomingReplicationLag =
)
(()
.InterpolationThrottlingMode
Workspace.InterpolationThrottling = .InterpolationThrottlingMode.Enabled
.AnimatorRetargetingMode
Workspace.Retargeting = .AnimatorRetargetingMode.Disabled
)
OptimizationEngine:()
roots = { ReplicatedStorage, Workspace }
(instance: )
instance:() instance:()
self.RemoteRegistry[instance] = .()
self.Config.AggressiveLOD instance:()
self.PartCache[instance] =
.(()
yieldThreshold =
count =
_, root (roots)
_, child (root:())
(child)
count +=
count % yieldThreshold ==
.()
)
_, root (roots)
self.Trove:(root.DescendantAdded:(register))
self.Trove:(root.DescendantRemoving:((child)
self.RemoteRegistry[child]
self.RemoteRegistry[child] =
self.PartCache[child :: BasePart]
self.PartCache[child :: BasePart] =
))
OptimizationEngine:()
lastCheck = .()
frameCount =
targetFrametime = / self.Config.TargetFramerate
self.Trove:(RunService.Heartbeat:((dt: number)
frameCount +=
now = .()
now - lastCheck >= self.Config.SamplingWindow
self.CurrentFramerate = frameCount / (now - lastCheck)
frameCount =
lastCheck = now
self.Config.AdaptiveThrottling
self:(dt > (targetFrametime * ))
))
OptimizationEngine:(shouldThrottle: boolean)
shouldThrottle == self.IsThrottled
self.IsThrottled = shouldThrottle
shouldThrottle
Lighting.GlobalShadows =
part, _ (self.PartCache)
part.Parent part.CastShadow
part.CastShadow =
Lighting.GlobalShadows =
OptimizationEngine:(): { TotalMB: number, LuauHeapKB: number, ActiveRemotes: number }
{
TotalMB = Stats:(),
LuauHeapKB = (),
ActiveRemotes = self:(),
}
OptimizationEngine:(): number
count =
remote, _ (self.RemoteRegistry)
remote.Parent ~=
count +=
count
OptimizationEngine:()
self.IsActive
self.IsActive =
self:()
self:()
self:()
OptimizationEngine:()
self.IsActive =
self.Trove:()
.(self.RemoteRegistry)
.(self.PartCache)
System = OptimizationEngine.({
TargetFramerate = ,
SamplingWindow = ,
AdaptiveThrottling = ,
AggressiveLOD = ,
})
System:()
{
System = System,
ObjectPool = ObjectPool,
Trove = Trove,
}
Universal