Skip to main content
The open project in Summer Engine and the running game: scenes, nodes, scripts, play, input and screenshots. 85 operations. How to call them, and what the answers mean: Operations reference.
Generated from the operation catalog: src/lib/ops/public-catalog.json in publicsummerengine at 0d85f61e2b and the summer-engine npm package 4.0.0 for engine and local operations. If something here is wrong, the operation’s definition is wrong.

Value formats

Engine properties such as position, rotation_degrees and mesh take engine string syntax, not JSON objects. Node paths start with ./ from the scene root: ./World/Player is the Player child of World. Every scene change names its scene with scenePath, such as res://main.tscn; the scene does not need to be the open editor tab. Three or more scene edits: one summer_run_script with scenePath.

add_node

engine.add_node: Add a node Add one node of any type to the scene at scenePath (it need not be the open tab) and save it. For 3 or more edits, write one engine.run_script instead. Next: engine.set_prop. Inputs:
Example: Add a node

align_distribute_3d

engine.align_distribute_3d: Align or space 3D nodes
Preview: search finds it and summer_call runs it. It may still change.
Align 2 to 16 3D nodes on one world axis (min, center, max) or space them equally (centers or gaps) from their visible bounds, then save the scene. One undo step. Inputs:
Example: Align or space 3D nodes

attach_to_surface

engine.attach_to_surface: Mount a piece on a surface
Preview: search finds it and summer_call runs it. It may still change.
Turn a piece so its measured back faces a wall, ceiling or floor found by a ray, keep it upright and seat it at a standoff: pipes, lamps, signs. Saves the scene; a refused seat puts the piece back. Inputs:
Example: Mount a piece on a surface

batch

engine.batch: Run engine ops in one call Send a list of raw engine ops (AddNode, SetProp, RunVerification…) in one call: one undo step unless an op must travel alone, and one save at the end. Ask for receipt summary on long lists. For computed edits, engine.run_script is simpler. Inputs:
Example: Run engine ops in one call

capture_gameplay

engine.capture_gameplay: Capture gameplay screenshots Capture real gameplay frames (HUD included) from a hidden game window, no editor needed; game flags and player steps get past the title screen. Returns each frame’s path and size: look at them before use. Inputs:
Example: Capture gameplay screenshots

clear_console

engine.clear_console: Clear the editor console Clear the editor’s Output panel, for a clean slate before the game runs. Inputs: No inputs.
Example: Clear the editor console

connect_ports

engine.connect_ports: Join two pieces at their ports
Preview: search finds it and summer_call runs it. It may still change.
Move and turn one piece so its port (a Marker3D, or an open pipe end such as +Y) meets another piece’s port: pipe to pipe, duct to duct. Refuses joins that tilt the piece. Saves the scene. Inputs:
Example: Join two pieces at their ports

connect_signal

engine.connect_signal: Connect a signal Connect a signal of one node to a method of another so the saved scene keeps it, verified from the saved .tscn. The receiver should define the method. Then test it with engine.play. Inputs:
Example: Connect a signal

create_debug_report

engine.create_debug_report: Write a debug report Write a support-ready Markdown report: doctor checks, engine health, diagnostics, console and debugger output, and a hand-off prompt. No tokens or file contents; the person should still read it before sending it. Inputs:
Example: Write a debug report

create_scene

engine.create_scene: Create a scene file Create a new, minimal .tscn file with the root type you name. It fails when the file exists and never touches the open scene. Build it out with engine.run_script and that scenePath. Inputs:
Example: Create a scene file

debug_views

engine.debug_views: Render debug views of a pose
Preview: search finds it and summer_call runs it. It may still change.
Render one pose as a grid of debug views next to the beauty pass: lighting only, albedo, world normals, overdraw and wireframe. Shows why a shot looks wrong. Inputs:
Example: Render debug views of a pose

delete_camera_bookmark

engine.delete_camera_bookmark: Delete a camera bookmark
Preview: search finds it and summer_call runs it. It may still change.
Delete one saved camera viewpoint by name. Returns the names that remain. Inputs:
Example: Delete a camera bookmark

enable_plugin

engine.enable_plugin: Enable an editor plugin
Preview: search finds it and summer_call runs it. It may still change.
Enable an editor plugin in res://addons/<name>/ and return the real result: enabled with its autoloads, or why it failed. Older engines only queue it (queued true); then check engine.get_debugger_errors. Inputs:
Example: Enable an editor plugin

export_game

engine.export_game: Export the game Export the game headless as the file the Summer Games store takes: a bundle for iPhone, Android, macOS and Windows, a web build or a desktop download. Returns path, sha256 and size. Upload it with store.upload_file. Inputs:
Example: Export the game

export_templates

engine.export_templates: List or install export templates
Preview: search finds it and summer_call runs it. It may still change.
List or install Summer Engine export templates (web, macOS, Windows) from Summer’s CDN, each sha256-checked. Needed only for engine.export_game with format download. Inputs:
Example: List or install export templates

fabricate_3d

engine.fabricate_3d: Make a mesh with Blender
Preview: search finds it and summer_call runs it. It may still change.
Make a mesh with a bpy script in the person’s own Blender (4.2 or newer, headless), import the .glb into the project and optionally place it. For exact modular kits and effect meshes, not characters or props. Inputs:
Example: Make a mesh with Blender

frame_nodes

engine.frame_nodes: Frame nodes and render them
Preview: search finds it and summer_call runs it. It may still change.
Fit a camera to the world bounds of some nodes and render them with the scene’s real environment and lights; bookmark_name also saves the pose. Returns the image and a caption with the pose and bounds. Inputs:
Example: Frame nodes and render them

frame_shot

engine.frame_shot: Find camera poses for a shot
Preview: search finds it and summer_call runs it. It may still change.
Find, score and save camera poses for a shot type (establishing, eye level, low angle, detail, corridor), tested against the real geometry. Returns the best 3 poses and a sheet, and saves the best as a bookmark. Inputs:
Example: Find camera poses for a shot

game_control

engine.game_control: Control the game clock
Preview: search finds it and summer_call runs it. It may still change.
Pause or resume the RUNNING game, step exactly N frames, set the time scale, or list the live game instances. Step between two engine.game_probe reads for exact checks. Inputs:
Example: Control the game clock

game_input

engine.game_input: Send input to the running game
Preview: search finds it and summer_call runs it. It may still change.
Drive the RUNNING game’s input: a script of timed actions, keys and clicks, or record real input and replay it on a seeded instance. Input is an action: prove its effect with engine.game_probe. Inputs:
Example: Send input to the running game

game_probe

engine.game_probe: Probe the running game
Preview: search finds it and summer_call runs it. It may still change.
Read state and pixels of one frame of the RUNNING game together: the live tree, property values and a screenshot stamped with the same frame numbers. The evidence read of a playtest. Inputs:
Example: Probe the running game

get_console

engine.get_console: Read the editor console Read recent editor Output messages, collapsed and filtered (errors and warnings by default; errors_only false for print output). A played game’s runtime errors are not here: read engine.get_diagnostics first. Inputs:
Example: Read the editor console

get_debugger_errors

engine.get_debugger_errors: Read runtime errors Read the played game’s runtime errors from the debugger (null references, missing nodes, physics errors), collapsed, with call stacks on request. After a fix, read engine.get_diagnostics again. Inputs:
Example: Read runtime errors

get_debugger_warnings

engine.get_debugger_warnings: Read runtime warnings Read the played game’s runtime warnings from the debugger, with file, line and call stack. Inputs:
Example: Read runtime warnings

get_diagnostics

engine.get_diagnostics: Read errors and warnings Read the editor console, the runtime debugger and script errors together, with complete counts and errors first. The first read after a change and after play. Next: engine.get_debugger_errors or engine.get_console for the details. Inputs:
Example: Read errors and warnings

get_project_context

engine.get_project_context: Read the project context Bind this session to the project open in Summer Engine and read it: project, current and main scene, engine health, project memory and warnings. Call it first in every chat; the scene tree and settings come on request (include). Next: engine.get_scene_tree. Inputs:
Example: Read the project context

get_runtime_tree

engine.get_runtime_tree: Read the running game’s tree
Preview: search finds it and summer_call runs it. It may still change.
Read the node tree of the RUNNING game: spawned enemies, autoloads and pooled nodes that editor reads never show. Needs a running game. Next: engine.inspect_runtime_node. Inputs:
Example: Read the running game’s tree

get_scene_tree

engine.get_scene_tree: Read a scene’s node tree Read the node tree of a scene: names, types and paths. Pass scenePath for an exact scene and depth for deep trees; the engine stops at depth 2 and 200 nodes by default and says truncated. Next: engine.inspect_node. Inputs:
Example: Read a scene’s node tree

get_script_errors

engine.get_script_errors: Check a script for errors Check one GDScript file for parse and compile errors without running the game: line, message and severity of each. The first check after writing a script. Inputs:
Example: Check a script for errors

grep

engine.grep: Search project files
Preview: search finds it and summer_call runs it. It may still change.
Search project files with a regular expression: file, line and text of each match, with optional context lines and a result cap. Then read the part you need with engine.read_file. Inputs:
Example: Search project files

import_asset

engine.import_asset: Find and import a Summer asset Search the Summer asset library, import the best match into the project and, for a 3D model, add it to a scene. Needs the Summer sign-in. For an exact asset use engine.import_asset_by_id. Inputs:
Example: Find and import a Summer asset

import_asset_by_id

engine.import_asset_by_id: Import a Summer asset by id Import one Summer asset by its id (from a search, the person’s assets or a generation) into the project; a 3D model can go straight into the scene at scenePath. Needs the Summer sign-in. Inputs:
Example: Import a Summer asset by id

import_from_url

engine.import_from_url: Import a file from a URL Download one file (model, texture, audio) from a URL into the project and run the import, so it is ready to use. For a model, next: engine.instantiate_scene. Inputs:
Example: Import a file from a URL

import_from_url_batch

engine.import_from_url_batch: Import files from URLs Download several files from URLs into the project in one call, with one import scan at the end. Inputs:
Example: Import files from URLs

import_hdri

engine.import_hdri: Import an HDRI sky Find a CC0 HDRI sky on Poly Haven (or take an exact id) and import it into res://sky/ for environment light. Returns a ready engine.run_script snippet that wires it into the WorldEnvironment. Inputs:
Example: Import an HDRI sky

input_map_bind

engine.input_map_bind: Bind input to an action Create an input action when it is missing and bind keys or mouse buttons to it, for example jump to Space. Then try it with engine.play. Inputs:
Example: Bind input to an action

inspect_asset

engine.inspect_asset: Measure a 3D asset file
Preview: search finds it and summer_call runs it. It may still change.
Measure a 3D asset file without placing it: bounds, origin, meshes, largest flat faces, open pipe ends, Marker3D anchors and collision shapes. Measure each kit piece once before placing it. Next: engine.instantiate_scene. Inputs:
Example: Measure a 3D asset file

inspect_node

engine.inspect_node: Read a node’s properties Read one node of the open scene: every editable property with its value and type, or only the fields you name (transform, global_transform, scene_file_path, aabb). Next: engine.set_prop. Inputs:
Example: Read a node’s properties

inspect_resource

engine.inspect_resource: Read a resource Read a resource file (a mesh’s bounds and surfaces, a scene’s nodes, any resource’s non-default properties) or a resource a node holds (nodePath and property). Next: engine.set_resource_property. Inputs:
Example: Read a resource

inspect_runtime_node

engine.inspect_runtime_node: Read a node in the running game
Preview: search finds it and summer_call runs it. It may still change.
Read the live properties of one node in the RUNNING game (transform, visibility, physics state…) without stopping it. Paths are absolute; take them from engine.get_runtime_tree. Inputs:
Example: Read a node in the running game

instantiate_scene

engine.instantiate_scene: Add a scene or model as a node Add an existing .tscn, .glb or .gltf as a child node in the scene at scenePath, placed in the same call (position, rotation_degrees, scale or transform). Pass target_size for imported models. Next: engine.screenshot. Inputs:
Example: Add a scene or model as a node

invoke_ui_action

engine.invoke_ui_action: Run an editor action
Preview: search finds it and summer_call runs it. It may still change.
Run one named editor action exactly as its menu item or shortcut would: open Project Settings, switch the main screen, toggle a panel. Editor work only; scene work is engine.run_script. Read the effect back with engine.ui_tree. Inputs:
Example: Run an editor action

is_running

engine.is_running: Check whether the game runs Check whether the game is running, and which scene it runs. Inputs: No inputs.
Example: Check whether the game runs

list_camera_bookmarks

engine.list_camera_bookmarks: List camera bookmarks
Preview: search finds it and summer_call runs it. It may still change.
List the camera viewpoints saved in this project: names, poses and dates. A bookmark gives screenshots that line up before and after a change: engine.screenshot with framing bookmark. Inputs: No inputs.
Example: List camera bookmarks

list_ui_actions

engine.list_ui_actions: List editor actions
Preview: search finds it and summer_call runs it. It may still change.
List the editor’s named actions (menu items and shortcuts) with labels and shortcuts, filtered by text. Actions marked denied are refused. Next: engine.invoke_ui_action. Inputs:
Example: List editor actions

measure

engine.measure: Measure between nodes
Preview: search finds it and summer_call runs it. It may still change.
Measure the gap or overlap on each axis between two placed nodes, or check that one face of many nodes lies on one plane. Finds facade gaps and modules that stand out. Changes nothing. Inputs:
Example: Measure between nodes

engine.navigation_probe: Check a navigation route
Preview: search finds it and summer_call runs it. It may still change.
Check whether two world points are connected on the scene’s navigation map: readiness, snapped end points, route length and route points. ready false means no evidence, not no route. Inputs:
Example: Check a navigation route

open_main_scene

engine.open_main_scene: Open the main scene Open the project’s main scene (from project settings) in the editor, instead of guessing a scene file name. Inputs: No inputs.
Example: Open the main scene

open_scene

engine.open_scene: Open a scene in the editor Open a scene file in the editor and show its tab. A visible tab change for the person, not a target for edits: edits take scenePath. Take paths from engine.get_project_context; never guess them. Inputs:
Example: Open a scene in the editor

place_adjacent

engine.place_adjacent: Place a node against another
Preview: search finds it and summer_call runs it. It may still change.
Move one node so its bounds face sits against another node’s, lining up the other axes: modules edge to edge, storeys stacked. Saves the scene and verifies the gap. Inputs:
Example: Place a node against another

play

engine.play: Play the game Start the game quietly (the editor keeps its tab and focus): the main scene or a given one, embedded or as a hidden offscreen instance, with an optional seed and fixed frame rate, or a local multiplayer session (players). Next: engine.is_running, then engine.get_diagnostics. Inputs:
Example: Play the game

project_setting

engine.project_setting: Set a project setting Set one project.godot setting, such as application/run/main_scene, the window size, the renderer or the default gravity. Inputs:
Example: Set a project setting

raycast

engine.raycast: Cast a ray in a scene
Preview: search finds it and summer_call runs it. It may still change.
Cast one ray from any point in a scene: the node it hits, the point and the normal. Physics first, visible bounds as a declared fallback. Changes nothing. Inputs:
Example: Cast a ray in a scene

read_file

engine.read_file: Read a project file Read a text file of the project (res://), a line or byte window of it, or parts of a .json, with the whole file’s sha256. Pass that sha256 to engine.write_file or engine.replace_text to change the file safely. Inputs:
Example: Read a project file

recent_events

engine.recent_events: Read recent engine events
Preview: search finds it and summer_call runs it. It may still change.
Read the newest engine events (saves, plays, op results, script errors, imports) at once, and next_seq, the cursor to pass to engine.wait_for_event. Inputs:
Example: Read recent engine events

remove_node

engine.remove_node: Remove a node Remove a node and all its children from the scene at scenePath and save it. The root cannot be removed. One undo step. Remove top-level nodes only when the person asked for it. Inputs:
Example: Remove a node

repeat_along

engine.repeat_along: Repeat a scene along a line
Preview: search finds it and summer_call runs it. It may still change.
Place copies of one scene along a line in one call: fence posts, clamps, a row of windows (at most 64). Returns the created node paths and saves the scene once. Inputs:
Example: Repeat a scene along a line

replace_node

engine.replace_node: Replace a node Replace a node with another scene or node type, keeping its parent, index, name, transform and children; the saved file is read back to prove it. Next: engine.get_scene_tree. Inputs:
Example: Replace a node

replace_text

engine.replace_text: Replace text in a project file Replace text in an existing project file. The text must match exactly once unless replace_all is set; the write is guarded by the file’s sha256. Then check scripts with engine.get_script_errors. Inputs:
Example: Replace text in a project file

run_editor_script

engine.run_editor_script: Run a script in a headless editor Run an EditorScript func _run() in a fresh headless editor against the project on disk: batch and project-wide jobs such as re-saving many scenes. It cannot see unsaved edits. For the open scene use engine.run_script. Inputs:
Example: Run a script in a headless editor

run_script

engine.run_script: Run a script on a scene Run one GDScript func run(ctx) in the live editor on the scene at scenePath: the way to make 3 or more scene edits, loops, grids and procedural meshes. Returns reports, output and errors. Loop: engine.world_snapshot, this, engine.snapshot_diff, engine.screenshot. Inputs:
Example: Run a script on a scene

runtime_animate

engine.runtime_animate: Drive animation in the running game
Preview: search finds it and summer_call runs it. It may still change.
Read and drive animation in the RUNNING game: AnimationPlayer clips, AnimationTree states and Skeleton3D bone poses. cmd state only reads. Prove motion with two reads around engine.game_control step. Inputs:
Example: Drive animation in the running game

runtime_call

engine.runtime_call: Call a method in the running game
Preview: search finds it and summer_call runs it. It may still change.
Call one method on a node in the RUNNING game and return its result, to trigger gameplay code directly. A call is an action, not proof: check what it did with engine.game_probe. Inputs:
Example: Call a method in the running game

runtime_set

engine.runtime_set: Set a property in the running game
Preview: search finds it and summer_call runs it. It may still change.
Set one property on a node in the RUNNING game (the live object, never the scene file) and read back whether it applied: move the player, set health, flip a flag. Then check with engine.game_probe. Inputs:
Example: Set a property in the running game

runtime_spawn

engine.runtime_spawn: Spawn or free in the running game
Preview: search finds it and summer_call runs it. It may still change.
Spawn a scene into the RUNNING game (action spawn) or free a live node (action free) to set up a test. The scene file is not touched. Then check with engine.game_probe. Inputs:
Example: Spawn or free in the running game

save_camera_bookmark

engine.save_camera_bookmark: Save a camera bookmark
Preview: search finds it and summer_call runs it. It may still change.
Save a named camera viewpoint in the project (res://.summer/camera_bookmarks.json): position and look_at as Vector3 literals, or neither to take the editor’s 3D camera. The scene file is not touched. Next: engine.screenshot. Inputs:
Example: Save a camera bookmark

save_scene

engine.save_scene: Save a scene Save the scene at scenePath, or save it under a new path. Scene edits already save once; use this for a standalone save or a save-as. Inputs:
Example: Save a scene

scene_audit

engine.scene_audit: Audit a 3D scene
Preview: search finds it and summer_call runs it. It may still change.
Check a saved 3D scene for visual and placement problems: holes, exposed edges, floor gaps, floating or sunken props, overlaps, z-fighting, light limits. Returns issues by severity, each with the next tool. Changes nothing. Inputs:
Example: Audit a 3D scene

screenshot

engine.screenshot: Take a screenshot Return a frame as an image you see: the editor viewport, an offscreen render of a scene (preset, camera, bookmark or free pose, numbered marks) or the running game. A blank viewport frame means no redraw yet: capture again. Inputs:
Example: Take a screenshot

select_node

engine.select_node: Select a node in the editor Select a node in the editor’s scene tree and show it in the inspector, so the person sees it. The scene does not change. Inputs:
Example: Select a node in the editor

set_prop

engine.set_prop: Set a node property Set one property of a node in the scene at scenePath and save it. Values use Godot syntax: “Vector3(0, 1, 0)”, “Color(1, 0, 0, 1)”, or a resource class such as “BoxMesh”. For 3 or more edits, write one engine.run_script. Inputs:
Example: Set a node property

set_resource_property

engine.set_resource_property: Set a property of a node’s resource Set a property inside a resource a node holds, such as a collision shape’s size or a material’s albedo_color, and save the scene. The resource must exist first: assign it with engine.set_prop. Inputs:
Example: Set a property of a node’s resource

shot_sheet

engine.shot_sheet: Render a sheet of views
Preview: search finds it and summer_call runs it. It may still change.
Render several bookmarks or poses into one labelled grid with real lighting, and compare each bookmark with its last render (difference map). The quick look at every hero view after a change. Inputs:
Example: Render a sheet of views

snap_to_surface

engine.snap_to_surface: Snap a node onto a surface
Preview: search finds it and summer_call runs it. It may still change.
Move one 3D node along a ray until it sits at the given gap on the first surface (floor, ramp, shelf, table), then save the scene. Returns before and after transforms and the evidence. Inputs:
Example: Snap a node onto a surface

snapshot_diff

engine.snapshot_diff: Compare two scene snapshots
Preview: search finds it and summer_call runs it. It may still change.
Compare two scene snapshots: added, removed and changed nodes and count changes. The proof that a change did what you meant; an empty diff after a change means it did not land. Next: engine.screenshot. Inputs:
Example: Compare two scene snapshots

starcast

engine.starcast: Read the space around a node
Preview: search finds it and summer_call runs it. It may still change.
Read the clearance around one 3D node in 26 directions: what blocks each side and how far, contact, grounding and nearby objects. Changes nothing. Use it before and after placing. Inputs:
Example: Read the space around a node

stop

engine.stop: Stop the game Stop the running game, or one offscreen instance by name. Scene edits stay as they are; nothing is undone or saved. Inputs:
Example: Stop the game

test_placement

engine.test_placement: Test a placement without moving
Preview: search finds it and summer_call runs it. It may still change.
Test one 3D node at a candidate world position and rotation without moving it: overlaps, grounded state and the gap to the floor. Changes nothing. Then place it with engine.set_prop or engine.snap_to_surface. Inputs:
Example: Test a placement without moving

ui_activate

engine.ui_activate: Use an editor control
Preview: search finds it and summer_call runs it. It may still change.
Use one editor control by its tree path (press, toggle, focus, select a tab, type text, set a value) or dismiss a dialog; the control’s state is read back. Only when no named action fits. Inputs:
Example: Use an editor control

ui_screenshot

engine.ui_screenshot: Screenshot the editor UI
Preview: search finds it and summer_call runs it. It may still change.
Return an image of the editor window, or of one dock, dialog or control: the last resort to look at the UI, never to pick click points. For scene views use engine.screenshot. Inputs:
Example: Screenshot the editor UI

ui_tree

engine.ui_tree: Read the editor UI
Preview: search finds it and summer_call runs it. It may still change.
Read the live editor UI as a tree (controls, paths, text, state), or every visible dialog and whether one blocks input. Its paths are what engine.ui_activate takes. Inputs:
Example: Read the editor UI

wait_for_event

engine.wait_for_event: Wait for an engine event
Preview: search finds it and summer_call runs it. It may still change.
Wait for an engine event (game started, op applied or failed, script error, scene saved) instead of sleeping; it says so honestly at the timeout. Take a cursor with engine.recent_events first. Inputs:
Example: Wait for an engine event

world_snapshot

engine.world_snapshot: Take a scene snapshot
Preview: search finds it and summer_call runs it. It may still change.
Take a structured snapshot of the edited scene: node paths, transforms, world bounds, fingerprints and counts, filtered by subtree, class or field. Returns snapshot_id, the baseline to diff after a change. Next: engine.snapshot_diff. Inputs:
Example: Take a scene snapshot

write_file

engine.write_file: Write a project file Create a text file (create_only true) or overwrite one (expected_sha256 from engine.read_file); exactly one guard is required, so a stale write fails. Scripts, scenes, resources, JSON. Then check scripts with engine.get_script_errors. Inputs:
Example: Write a project file

zoom

engine.zoom: Zoom into part of a frame
Preview: search finds it and summer_call runs it. It may still change.
Render a close-up of part of a frame (a region, or mark N of a marks render) at full resolution: real detail, seams and gaps, not enlarged pixels. Inputs:
Example: Zoom into part of a frame