con un clic
scene-analysis
// Analyze and optimize Roblox scenes using SceneAnalysisService — rendering, memory, instance composition, unparented instances, and animation/audio assets. Use when investigating performance, memory, or leaks in a place.
// Analyze and optimize Roblox scenes using SceneAnalysisService — rendering, memory, instance composition, unparented instances, and animation/audio assets. Use when investigating performance, memory, or leaks in a place.
Convert a non-streaming Roblox game to use streaming or fix streaming bugs and anti-patterns.
Control the Studio Device Simulator to test UI across device form factors. Use when switching devices, testing orientations, running multi-device comparisons, or verifying UI layout via MCP tools (execute_luau + screen_capture).
Look up Roblox Engine API documentation using the http_get tool. Use when you need accurate, up-to-date details about classes, datatypes, enums, globals, or libraries.
Simulate mouse, keyboard, and pointer input on running Roblox games to test UI interactions programmatically. Use when clicking buttons, typing text, scrolling, zooming, panning, adjusting camera, or running multi-step interaction tests via MCP tools (execute_luau + screen_capture).
| name | scene-analysis |
| description | Analyze and optimize Roblox scenes using SceneAnalysisService — rendering, memory, instance composition, unparented instances, and animation/audio assets. Use when investigating performance, memory, or leaks in a place. |
Uses SceneAnalysisService to analyze and optimize Roblox game scenes. All commands follow the same cycle:
SceneAnalysisService only works at runtime)SceneAnalysisServiceperformance, memory, draw calls, triangles, scene health, unparented, leak, optimize, SceneAnalysisService| Command | What it does |
|---|---|
/scene-health | Full overview — runs all 6 queries, summarizes rendering, memory, instances, and unparented objects |
/optimize-rendering | Deep rendering analysis — auto-finds geometry hotspots, sweeps camera at player height, measures triangles and draw calls per view, places hotspot markers in the scene |
/optimize-memory | Memory analysis — script VM memory, animation clip memory, audio asset memory with reference counts |
/fix-leaks | Traces unparented instances to host scripts, reads the source, identifies cleanup patterns, offers to apply fixes |
| Query | Returns |
|---|---|
GetInstanceCompositionAsync() | Instance counts by category and class |
GetTriangleCompositionAsync() | Triangle and draw call counts by render pass (view-dependent) |
GetScriptMemoryAsync() | Per-script Luau VM heap memory |
GetUnparentedInstancesAsync() | Instances held in memory but not in the DataModel, traced to host scripts |
GetAnimationMemoryAsync() | Loaded animation clip memory with owner Animators |
GetAudioMemoryAsync() | Loaded audio asset memory with owner Sound/AudioPlayer instances |
See QuerySpecs.md in this skill for full data shape documentation.
SceneAnalysisService queries runtime data (GPU render passes, Luau VM heap, loaded assets). It doesn't work in edit mode./optimize-rendering handles this with an automatic hotspot sweep.CameraType = Scriptable before programmatically moving the camera, or the PlayerModule will override it each frame.Frame findings as opportunities, not problems. Be helpful and collaborative. Avoid language like "CRITICAL", "WARNING", "bloat", "problem", "offender", "over budget", "failing". Don't assign grades or severity labels. Present data clearly and let the creator decide what to act on.
~800k triangles and ~600 draw calls is roughly the range where most devices can maintain 60fps. Present these as context, not pass/fail criteria — some creators target higher fidelity and accept lower framerates. Ask about framerate/device target before making strong recommendations.
Internally, each draw call costs roughly the equivalent of 20,000 triangles in GPU overhead — use this to prioritize draw call reduction in recommendations, but don't show the ratio to the creator.