Skip to content

View tools

See the scene: captures with entity boxes, debug views, multi-view sheets, selection and the editor camera.

9 tools in the view category. Badges: read-only tools never change the project; mutating tools are undoable and attributed; open-world tools reach outside the engine and MCP clients ask before running them.

Tool Summary
viewport_capture Render the scene and return a PNG plus every visible entity with its on-screen box [x, y, w, h].
viewport_pick Which entity is at pixel (x, y) of a capture with the given size (editor camera).
camera_set Point the editor camera (what the human sees and the default capture view).
viewport_quality How the live editor viewport renders while editing: fast (default; lower internal resolution, no screen-space GI/reflections or light shafts, near foliage shadows, coarser LODs) keeps heavy worlds responsive; balanced; full (what the game and captures show).
viewport_debug_view Show a debug visualization in the live editor viewport (the human sees it too), or list every view with its color legend (list=true).
selection_get Entities the human currently has selected in the editor ("this", "these" usually means them).
selection_set Select entities in the editor to show the human what you mean.
viewport_multi One image with four views of the scene (or an entity): perspective (top-left), top (top-right), front (bottom-left) and side (bottom-right).
scene_audit Quality gate before filming or screenshots (read-only, CPU, no GPU needed).

viewport_capture

Look at the scene read-only

Render the scene and return a PNG plus every visible entity with its on-screen box [x, y, w, h]. annotate=true (default) draws each entity's #id on the image so you can match what you see to ids. Choose the view: the editor camera (default), the game camera (view="scene"), or any eye/target. probe= returns that reflection probe's captured cubemap instead (6 faces as a cross).

Argument Type Required Description Values
width integer Image width (default 768, max 2048)
height integer Image height (default 432, max 2048)
view string Editor orbit camera or the scene's primary camera editor scene
camera_entity integer | string Render from this camera entity
eye number[3] Custom camera position
target number[3] Custom look-at point (with eye)
fov number Vertical field of view in degrees for the custom view (lens: 25 tele .. 90 wide)
aperture number Custom view depth of field f-stop (1.4 shallow .. 16 deep; default off)
focus_distance number Custom view focus distance in meters (default: autofocus on the center)
tilt_shift number Custom view tilt-shift miniature look: 0..1 blur above and below a sharp band across the middle of the frame (aerial 'toy town' shots; combines with aperture)
annotate boolean Draw entity id labels (default true)
overlays boolean Editor grid & selection highlight (default true)
samples integer Supersampling: jittered sub-frames accumulated (default 4; 1 = fastest preview, 16-32 = final-quality stills with noise-free GI and reflections)
clay boolean Render every surface as matte white clay (judge form and light; film 'sketch to fill' beats)
debug_view string Diagnostic view instead of the final image. Buffers: albedo, normals, material (roughness red / metallic green), gi, reflections, ao, depth, lighting. Shading: unshaded, lighting_only (white material), emission, specular. Geometry: wireframe, overdraw (heat map), lod (green 0 .. red 3), uv_checker, texel_density (green = 512 texels/m). Lights: shadow_cascades (red/green/blue/yellow), light_complexity (lights per pixel heat map), shadow_atlas (point/spot shadow maps, outlined per light: green re-rendered, blue cached, orange waiting; see shadow_atlas_info), reflection_probes (which probe lights each pixel, their volumes; see probe_info). Motion: the velocity buffer (hue = direction, strength = speed). Also sketch, impostors. Full legend: viewport_debug_view final albedo normals material gi reflections ao depth lighting sketch impostors wireframe overdraw unshaded lighting_only shadow_cascades light_complexity lod emission specular uv_checker texel_density motion shadow_atlas reflection_probes vehicles skeleton ik_targets groom_roots sss_mask
quality string Viewport quality tier (default full; fast/balanced preview what the editor shows while editing) full balanced fast
include_image boolean Return the image (default true); false = only the entity list
save_path string Also write the PNG to this project-relative path
alpha number While playing: render the in-between frame a real-time display shows this far between the last two ticks (0..1; render interpolation). Default 1 = the exact tick state
frame_handlers boolean While playing: also run the cosmetic on frame Wander handlers for this image (camera shake, UI tweens); their writes are undone afterwards
probe integer | string Return this reflection probe's captured cubemap instead (6 faces as a horizontal cross: +Y on top; -X, +Z, +X, -Z across; -Y below)
probe_mip integer With probe: roughness level 0 (sharp) .. 5 (the diffuse ambient)
viewport_capture {"view": "scene", "width": 1280, "height": 720, "annotate": false, "overlays": false}
skywalker call viewport_capture '{"view": "scene", "width": 1280, "height": 720, "annotate": false, "overlays": false}' --project my_game
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "viewport_capture",
    "arguments": {
      "view": "scene",
      "width": 1280,
      "height": 720,
      "annotate": false,
      "overlays": false
    }
  }
}

viewport_pick

Pick at pixel read-only

Which entity is at pixel (x, y) of a capture with the given size (editor camera). Use with the boxes/annotations from viewport_capture.

Argument Type Required Description Values
x number yes Pixel x
y number yes Pixel y
width integer Capture width (default 768)
height integer Capture height (default 432)
viewport_pick {"x": 640, "y": 360, "width": 1280, "height": 720}
skywalker call viewport_pick '{"x": 640, "y": 360, "width": 1280, "height": 720}' --project my_game
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "viewport_pick",
    "arguments": {
      "x": 640,
      "y": 360,
      "width": 1280,
      "height": 720
    }
  }
}

camera_set

Move editor camera read-only

Point the editor camera (what the human sees and the default capture view). Use frame to fit an entity (or "all"), or set eye/target, or orbit with yaw/pitch/distance.

Argument Type Required Description Values
frame integer | string Entity to frame, or "all"
eye number[3] Camera position
target number[3] Look-at point
yaw number Orbit yaw degrees
pitch number Orbit pitch degrees
distance number Orbit distance
camera_set {"frame": "Tent"}
skywalker call camera_set '{"frame": "Tent"}' --project my_game
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "camera_set",
    "arguments": {
      "frame": "Tent"
    }
  }
}

viewport_quality

Viewport quality read-only

How the live editor viewport renders while editing: fast (default; lower internal resolution, no screen-space GI/reflections or light shafts, near foliage shadows, coarser LODs) keeps heavy worlds responsive; balanced; full (what the game and captures show). Play mode always renders full.

Argument Type Required Description Values
quality string Editing quality (omit to read) fast balanced full
viewport_quality {"quality": "full"}
skywalker call viewport_quality '{"quality": "full"}' --project my_game
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "viewport_quality",
    "arguments": {
      "quality": "full"
    }
  }
}

viewport_debug_view

Viewport debug view read-only

Show a debug visualization in the live editor viewport (the human sees it too), or list every view with its color legend (list=true). Views: wireframe, overdraw, unshaded, lighting_only, shadow_cascades, light_complexity, lod, emission, specular, uv_checker, texel_density, plus the buffers albedo, normals, material, gi, reflections, ao, depth, lighting and sketch/impostors. "final" turns it off. For a one-off image use viewport_capture {debug_view}. Example: {"view": "overdraw"}.

Argument Type Required Description Values
view string Debug view to show (final = normal image); omit to read the current one final albedo normals material gi reflections ao depth lighting sketch impostors wireframe overdraw unshaded lighting_only shadow_cascades light_complexity lod emission specular uv_checker texel_density motion shadow_atlas reflection_probes vehicles skeleton ik_targets groom_roots sss_mask
list boolean Return every view with its kind and color legend
viewport_debug_view {"view": "overdraw"}
skywalker call viewport_debug_view '{"view": "overdraw"}' --project my_game
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "viewport_debug_view",
    "arguments": {
      "view": "overdraw"
    }
  }
}

selection_get

Get selection read-only

Entities the human currently has selected in the editor ("this", "these" usually means them).

Takes no arguments.

selection_get {}
skywalker call selection_get '{}' --project my_game
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "selection_get",
    "arguments": {}
  }
}

selection_set

Select entities read-only

Select entities in the editor to show the human what you mean.

Argument Type Required Description Values
entities integer | string[] yes Entities to select (empty clears)
selection_set {"entities": ["Gate", "Tower"]}
skywalker call selection_set '{"entities": ["Gate", "Tower"]}' --project my_game
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "selection_set",
    "arguments": {
      "entities": [
        "Gate",
        "Tower"
      ]
    }
  }
}

viewport_multi

Four-view capture read-only

One image with four views of the scene (or an entity): perspective (top-left), top (top-right), front (bottom-left) and side (bottom-right). Orthographic views make layout, alignment and spacing problems obvious — use it to check level layouts.

Argument Type Required Description Values
focus integer | string Entity to frame (default: whole scene)
size integer Size of each view in pixels (default 384)
viewport_multi {"focus": "Village", "size": 1024}
skywalker call viewport_multi '{"focus": "Village", "size": 1024}' --project my_game
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "viewport_multi",
    "arguments": {
      "focus": "Village",
      "size": 1024
    }
  }
}

scene_audit

Audit what the camera sees read-only

Quality gate before filming or screenshots (read-only, CPU, no GPU needed). Builds the frame a camera sees and reports: visible builtin PRIMITIVE meshes (cube, sphere, capsule, cylinder, plane, cone, quad, torus) with entity and screen coverage % (occlusion-aware: a ground plane hidden under terrain or water does not count); PRIMITIVE CHARACTERS (an animator / character controller / nav agent on primitive meshes, or primitive parts arranged like a body, e.g. a sphere head on a capsule) with a kit character to replace them; DEFAULT grey or UNTEXTURED materials on visible meshes; missing texture / material / HDRI files; big meshes without LODs; texel-density outliers; a default sky; lights without shadows on hero meshes. Returns pass and warnings [{severity, code, message, hint, entity}]. Views: camera {eye, target, fov}, several cameras, camera_entity, view (editor | scene), or a sequence (path or sequencer entity) at times (seconds; default: 12 evenly spaced shots). strict=true fails when primitives (or default materials) cover more than 0.1% of any view (default limit 2%); override with max_primitive_coverage (percent). stylized=true accepts flat-colored materials (a deliberate stylized look). Examples: {"view": "scene", "strict": true}, {"sequence": "sequences/hero.sequence.json", "times": [1, 4, 8], "strict": true}, {"camera": {"eye": [0, 1.7, 5], "target": [0, 1.2, 0], "fov": 40}}.

Argument Type Required Description Values
camera object Custom view
cameras object[] Several custom views [{eye, target, fov, label?}]
camera_entity integer | string Audit through this camera entity
view string Editor camera (default) or the scene's primary camera editor scene
sequence any Sequence path (.sequence.json) or an entity with a sequencer: audit its live camera
times number[] Sequence times in seconds (default: 12 shots across it)
strict boolean Fail when primitives or default materials cover more than 0.1% of a view (showcase bar)
max_primitive_coverage number Primitive coverage limit in percent (default 0.1 strict, 2 otherwise)
stylized boolean Deliberately stylized look: flat-colored materials are info, not warnings
width integer Frame width for the aspect ratio (default 1920)
height integer Frame height (default 1080)
resolution integer Coverage raster width in pixels (default 320, max 1280); higher = finer coverage
details boolean Include per-view details when auditing several views (default true)
scene_audit {"view": "scene", "strict": true}
skywalker call scene_audit '{"view": "scene", "strict": true}' --project my_game
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "scene_audit",
    "arguments": {
      "view": "scene",
      "strict": true
    }
  }
}