AI tools: Start here and scenes
Overview, finding tools, entities, prefabs and saving. 43 tools. You see every step your AI takes and can undo any of them.
apply_scene_text
Create or edit many objects at once with scene text: `entity Name { ... }` blocks. Existing names are edited (partially), new names are created. All in one undoable step.
| Argument | Type | What it does |
|---|---|---|
label | string | Short name for this change in History, e.g. "Build market street". |
text required | string | One or more entity blocks. Ids (#n) are optional; new objects get fresh ids. |
builder_guide core
The full workflow for building a whole game from scratch in TTR Engine, from plan to packaged app.
No arguments.
capabilities
What can be done to one object: its editable fields, components it could gain, and the tools that act on it.
| Argument | Type | What it does |
|---|---|---|
entity required | string | Entity name (e.g. "Tower_B") or id (e.g. "#7"). |
create_creature
Build and add a creature from a short spec: generic lofted body, spine, limbs, tail, fins/wings, automatic skin weights. Presets minnow/bass/shark, sparrow/gull, dog. Fish need a named ocean; birds fly; dog has the existing quadruped walk/trot/gallop rig and cycles. Generated model faces +Z, animator facing 0. Native bounded authoring, no downloads or external generation. Aggregate scene authoring limit: 1000 creatures, including passive dogs; over-capacity requests are refused before writing assets or entities.
| Argument | Type | What it does |
|---|---|---|
group | string | Optional schooling/flocking group; omitted makes a separate group. |
half_extents | list of number | |
name | string | Name of this creature or group. Existing entities are preserved. |
perch | string | Birds: optional named, stationary, horizontal box collider to land on. All landing slots must fit its top inside the habitat. |
perch_after | number | |
position required | list of number | |
spec | object | A saved .creature.json (camelCase) or compact blueprint overrides: species, name, family, spine_length, spine_segments, body_segments, appendages (or limbs/fins/wings/tail), color, belly, speed, cadence, radial_sides. Body sections: {at,width,top,bottom,center}. Appendages: {name,kind,attach,points:[[x,y,z],...],radii:[],rootChord,tipChord,parent:null}. Dimensions are fractions of spine_length; +Y up, +Z nose. At=0 nose, at=1 rump. Chains must precede parts parented to them. |
species | minnow / bass / shark / sparrow / gull / dog | minnow, bass, shark, sparrow, gull or dog. |
water | string | Exact ocean, lake, pond or pool entity name (required for fish); habitat is clipped below its surface (an ocean: its lowest wave trough). |
create_entity core
Add an object. Give a unique name, optional group, and components as scene text. One undoable step.
| Argument | Type | What it does |
|---|---|---|
components | string | Scene text, e.g. transform { position (3, 0, 2) scale (1, 1, 1) } mesh_renderer { mesh "builtin:cube" color (0.8, 0.2, 0.1) } |
group | string | Folder in the Scene panel. Default "Scene". |
name required | string | Unique name: letters, digits, _ (e.g. "Crate_01"). |
create_sequence
Create (or resize) a cinematic sequence in the project's Sequences folder: a timeline of transform tracks with bezier/ease curves, property tracks (lights, colours, visibility, any field), animation clips on characters, camera cuts, events and slow motion that slows physics, animation and particles together. Give json for a whole sequence at once (format "ttr.sequence", in script_reference), or build it key by key with add_track, set_key, add_clip, add_event, add_camera_cut, set_time_scale_key and record_physics. An existing sequence keeps its tracks (length and hold_player change); replace: true starts it over.
| Argument | Type | What it does |
|---|---|---|
camera_body | string | The physical camera every cut films with unless it says otherwise: a sensor (camera_gear lists them; "" clears). |
hold_player | boolean | Hold the player still and show the sequence's camera (default: when it has camera cuts). |
json | string | A whole sequence (format "ttr.sequence"). |
length | number | Story seconds. |
lens_kit | string | The lens kit every cut uses unless it says otherwise (camera_gear; "none" or "": the classic camera). |
name required | string | e.g. "bottle" (saved as Sequences/bottle.sequence.json) |
replace | boolean |
delete_entity core
Remove an object and everything attached to it (an assembled car's body, wheels and lamps; a character's held gun), listed in the reply. Undo brings them all back with the same ids.
| Argument | Type | What it does |
|---|---|---|
entity required | string | Entity name (e.g. "Tower_B") or id (e.g. "#7"). |
keep_attached | boolean | Leave the objects attached to it in place (default false: they go with it). |
duplicate_entity
Copy an object under a new name, optionally moved by an offset in meters.
| Argument | Type | What it does |
|---|---|---|
entity required | string | Entity name (e.g. "Tower_B") or id (e.g. "#7"). |
new_name required | string | |
offset | list of number |
edit_entity core
Change an object with scene text. Only what you write changes; everything else keeps its value. One undoable step.
| Argument | Type | What it does |
|---|---|---|
changes required | string | e.g. transform { position (4, 0, -2) } about { role "Main gate" } remove ["spin"] |
entity required | string | Entity name (e.g. "Tower_B") or id (e.g. "#7"). |
engine_overview core
Project, open scene, unsaved changes, object count by group, selection, camera, assets and frame rate. Start here.
No arguments.
find_asset
Search for models and surfaces: the project's own models first (installed packs, imports; hero quality first, placeholders marked, KIT files of separate parts marked with how to place one part), then Poly Haven's free CC0 library: 500+ photo-scanned 3D models and 800+ scanned surfaces (concrete, brick, dirt, metal, wood...). Returns paths or ids, real-world sizes and popularity. Then import_asset for Poly Haven ids.
| Argument | Type | What it does |
|---|---|---|
include_placeholders | boolean | Also show placeholder-quality (low-poly) project models in a game whose style isn't toy. |
kind required | model / surface / sound | sound: the project's recorded sounds (installed packs too) and the game names that play them; synthesized tones are placeholders. |
limit | integer | Default 10. |
query required | string | Words to match, e.g. "wooden crate", "concrete wall", "rusty metal", "coin". |
find_reference
Look for reference pictures of something you're about to build (a jet, a car, an animal, a building): searches Wikimedia Commons (free licenses, no account) and returns a numbered contact sheet with each picture's size, license and link. Three-view drawings and plain side/top/front photos help most. Save good ones with add_reference.
| Argument | Type | What it does |
|---|---|---|
limit | integer | Default 12, max 24. |
query required | string | e.g. "F/A-18E Super Hornet three-view", "Super Hornet nozzle". |
find_tools core
Find the right tools for a goal in plain words ("make a character from a picture", "enemies with swords", "make it run faster"). Leads with the proven pipelines (the order of tools for the best result), then the best-matching tools. Start here when you don't know which tool to use.
| Argument | Type | What it does |
|---|---|---|
goal required | string | What you want to make or do. |
limit | integer |
get_asset
An asset's full record: permanent id, size, bounds, counts, memory, license, source and import warnings.
| Argument | Type | What it does |
|---|---|---|
path required | string |
get_entity
One object in full, as scene text (the same format edit_entity accepts).
| Argument | Type | What it does |
|---|---|---|
entity required | string | Entity name (e.g. "Tower_B") or id (e.g. "#7"). |
get_plan
The scene's game brief (requirements with stable ids, plain text and the check that proves each; proof_report plays them) and its Game Plan (requirements with route tests, and decisions). Protected items are the person's and can't be changed by agents.
No arguments.
get_sequence
Read a cinematic sequence: every track with its keys' span, recorded stretches, camera cuts, events and the time scale (story seconds, and how long it takes to watch with slow motion). json: true also returns the file.
| Argument | Type | What it does |
|---|---|---|
json | boolean | |
name required | string | The sequence's name (Sequences/<name>.sequence.json). |
hello
Say hello to the person's Arcwright editor: the connection test from Connect an AI App. The editor shows your app's name and a short message, so the person sees the link works. Changes nothing.
| Argument | Type | What it does |
|---|---|---|
message | string | A short greeting to show (one sentence). |
inspect
Look closely: frame one object, or one spot on it (part: a point in its own frame, e.g. a canopy, an eye, a hoof), from several angles at once, in channels that show what surfaces are made of, beside a reference photo, or as a motion strip over time. Every view is measured (brightness, blown highlights, crushed shadows, fine detail). Use it to judge detail and realism up close; screenshot is for the whole scene.
| Argument | Type | What it does |
|---|---|---|
angles | array | Each a name (front, back, left, right, top, below, three_quarter, three_quarter_back, nose, tail, view) or a direction [x, y, z] from the object to the camera in its own frame. Default three_quarter, front, left, top. |
bone | string | Frame an animated character's bone where it is now (head, neck_01, hand_r, foot_l): close-ups that follow the motion. part is then an offset from the bone in the character's own frame (not the bone's). |
channels | list of final / normals / base_color / material / texture_density / lighting / wireframe / shadows … | What each view shows (default final). Several channels make a grid: a row per angle. |
fov | number | Lens, degrees (default 32: little distortion). |
frames | integer | More than 1 makes a motion strip (max 24) with the first angle and channel; the camera rides along with the target. |
from | list of number | Look from this exact point (with look_at) instead of framing angles: a cockpit, a doorway. |
interval | number | Seconds between strip frames (default 0.1). |
look_at | list of number | |
part | list of number | A spot on the target in its own frame (meters from its origin, before rotation): zooms there. With bone, an offset from the bone in the character's frame. |
point | list of number | |
radius | number | Half the width to frame, meters (default: the whole object, or 0.6 m around a part). |
reference | string | Path to a reference image (a photo of the real thing) shown first. |
supersample | boolean | Render at 2× and shrink, for crisp edges (default true). |
target | string | Object name. Or give point instead. |
tile | integer | Pixels per view (default 512, max 1024). |
list_assets
Models in the project's Assets folder that fit the game's art style, best quality first (hero, standard; placeholder-quality low-poly models only in a toy-style game or with include_placeholders), with size in meters, triangles, textures, GPU memory, license, and a KIT notice for files that hold separate parts.
| Argument | Type | What it does |
|---|---|---|
filter | string | |
include_placeholders | boolean | Also list placeholder-quality (low-poly, flat-coloured) models in a game whose style isn't toy. Only when the person asked for that look. |
list_builders
The builders working in this scene, each on its own copy (the editor's multiview shows them live): name, what it is doing, the checks it ran, and what it changed so far. The person brings a builder's work into their scene after a review.
No arguments.
list_components
Every component type with its fields, types, units and meaning, plus the scene text syntax. Read this before editing.
| Argument | Type | What it does |
|---|---|---|
name | string | One component ("rigid_body") or several, comma-separated ("joint, collider"): only those fields. Leave out for the whole catalog. |
list_entities core
List objects: name, id, group, components and role. Filter by text, group or component.
| Argument | Type | What it does |
|---|---|---|
component | string | Only objects with this component, e.g. point_light. |
filter | string | Text the name or role must contain. |
group | string | |
limit | integer | Default 200. |
measure
Measure between two objects: centre to centre (straight, along the ground, height difference) and the gap between their bounding boxes (0 when they touch or overlap, with how deep). Check spacing, reach and fit without guessing: "is the jump 3 m?", "does the car fit through the gate?".
| Argument | Type | What it does |
|---|---|---|
from required | string | An object's name or #id. |
to required | string | Another object's name or #id. |
new_scene
Start a new, empty scene (just a sun) and save it as Scenes/<name>.ttrscene. The current scene must be saved first if it has changes.
| Argument | Type | What it does |
|---|---|---|
name required | string | Scene name, e.g. "Night_Shift". |
request | string | The person's request in their words: the style is read from it when style isn't given. |
style | realistic / stylized / toy / 2d | The game's one art style, kept by every asset (recorded in the Game Plan). Default: read from request, else realistic (the highest-quality look). |
open_scene
Open another scene from the project in the editor (so the person watches the scene you work on). Use discard: true to replace an unsaved scene without saving it.
| Argument | Type | What it does |
|---|---|---|
discard | boolean | Explicitly discard unsaved changes before opening the scene. |
name required | string | Scene name, e.g. "Outpost". |
place
Move an object by describing where it goes; the engine computes exact coordinates from real sizes. Relations: on_top_of, against, next_to, in_front_of, between, on_ground, at. Optionally turn it to face another object.
| Argument | Type | What it does |
|---|---|---|
distance | number | For in_front_of: meters along the target's facing direction. Default 2. |
entity required | string | Entity name (e.g. "Tower_B") or id (e.g. "#7"). |
facing | string | Turn to face this object. |
gap | number | For next_to: meters between the two. Default 0.3. |
offset | list of number | |
point | list of number | |
relation required | on_top_of / against / next_to / in_front_of / between / on_ground / at | |
side | north / south / east / west | For against/next_to. North is -Z, east is +X. For against, omit to use the nearest face. |
target | string | The object it relates to (for between: the first one). |
target2 | string | For between: the second object. |
prefab_apply
Pushes a copy's own changes into its prefab, so every copy gets them: the components the copy keeps (or the ones named) are written into the prefab file and the copy stops keeping them. Every copy is then remade.
| Argument | Type | What it does |
|---|---|---|
components | list of string | Only these ("mesh_renderer", "rigid_body"). Default: every component the copy keeps. |
entity required | string | An object's name (e.g. "Crate_3") or id ("#7"). |
prefab_list
Lists the project's prefabs (Assets/Prefabs), their parts, and how many copies of each this scene has.
No arguments.
prefab_make
Saves an object as a prefab (Assets/Prefabs/<name>.ttrprefab), with the objects attached to it as its parts, and makes the object its first copy. Then place more with prefab_place (or world.spawnPrefab in scripts): edit the prefab and every copy follows. Use it for anything placed many times: enemies, crates, trees, lamps, houses.
| Argument | Type | What it does |
|---|---|---|
entity required | string | An object's name (e.g. "Crate_3") or id ("#7"). |
name | string | The prefab's name (default: the object's name without a trailing number). |
parts | boolean | Take the objects attached to it as its parts (default true). |
prefab_place
Places a copy of a prefab: it follows the prefab (edit the prefab, every copy changes) while its place, name and group are its own. Its parts come with it, named <copy>_<part>.
| Argument | Type | What it does |
|---|---|---|
group | string | Outliner group (default "Prefabs"). |
name | string | The copy's name (default: the prefab's name with a number). |
position required | list of number | [x, y, z] in metres. |
prefab required | string | The prefab: its name ("Crate") or file ("Prefabs/Crate.ttrprefab"). |
rotation | list of number | [x, y, z] in degrees (default 0, 0, 0). |
scale | number | Uniform scale, times the prefab's own size (default 1: the size it was made at). |
prefab_refresh
Remakes every prefab copy from its prefab file (after a prefab file was edited by hand or by write_file), keeping each copy's own changes. One undoable step.
No arguments.
prefab_revert
Puts a copy back to its prefab: it stops keeping its own version of the named components (default all) and is remade from the prefab. Undoable.
| Argument | Type | What it does |
|---|---|---|
components | list of string | Only these. Default: everything it keeps. |
entity required | string | An object's name (e.g. "Crate_3") or id ("#7"). |
project_map
What this project already has: its scenes (object counts, which is open), scripts with what each says it does (its first comment) and which objects in the open scene run it, briefs, prefabs, sprite sheets, tilesets, sounds and UI files. Read it when you come back to a project or before making something new, and reuse what's there instead of making a second copy. Start each script with a one-line comment saying what it does.
No arguments.
redo
Redo the most recently undone change.
No arguments.
report_problem
Report a problem in Arcwright itself to the Arcwright team so it gets fixed: a tool that failed or gave a wrong result, something that froze, a feature you needed that is missing. Never the person's game or files, never personal data or keys. The person decides in Privacy & Updates: they are asked each time (the default: a card in the editor with Send / Always send / Don't send), reports go automatically, or never. Say what you were doing, what happened and what you expected. The same problem is sent once.
| Argument | Type | What it does |
|---|---|---|
details required | string | What you were doing, what happened, what you expected. Plain words, no file contents. |
title required | string | The problem in a few words ("terrain tool times out on a 2 km island"). |
tool | string | The Arcwright tool involved, if any (its name). |
save_scene core
Save the scene to its file, or with name to Scenes/<name>.ttrscene (save as: the open scene's own file is left as it was).
| Argument | Type | What it does |
|---|---|---|
name | string | Save as this scene name (letters, digits, _ or -). Without it, the scene's own file. |
scene_load_check
List what the open scene uses that can't be loaded here (model files, weapon sets, surfaces and recipes), each with why, and what loads only through the developer checkout's material library (missing on a player's machine). Use before packing or exporting a game.
No arguments.
select_builder
Work inside a builder: your own copy of the scene, shown live in the editor's multiview with your status and checks, which the person reviews and brings into their scene. Every later call of this connection then reads and changes only that copy (until you select another, or "my scene"). Use create: true to start a new one with that name. Any single call can instead pass an extra "builder" argument. Project files (scripts, kits, briefs) are shared, so tools that write them are refused inside a builder.
| Argument | Type | What it does |
|---|---|---|
builder required | string | The builder's name, or "my scene" to work on the person's scene again. |
create | boolean | Start a new builder with this name if none exists (default false). |
select_entity
Select an object in the editor so the person sees which one you mean, or several (entities): the Inspector then edits all of them at once.
| Argument | Type | What it does |
|---|---|---|
entities | list of string | Several objects (names or #ids): the first is the Inspector's. |
entity | string | Entity name (e.g. "Tower_B") or id (e.g. "#7"). |
spatial_query
Ask about space instead of guessing: what's near an object or point (with compass directions), its exact box, or where on the ground a footprint fits free of obstacles.
| Argument | Type | What it does |
|---|---|---|
depth | number | free_space: footprint depth (z) in meters. |
entity | string | Entity name (e.g. "Tower_B") or id (e.g. "#7"). |
mode required | near / bounds / free_space | |
point | list of number | |
radius | number | Search radius in meters. Default 10. |
width | number | free_space: footprint width (x) in meters. |
status
Say what you're doing right now, in a short plain sentence (what and why): the editor's workshop shows it to the people watching, above the code you're changing. Empty clears it.
| Argument | Type | What it does |
|---|---|---|
text | string |
undo
Undo the most recent change (yours or the person's; check history first).
No arguments.