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.

ArgumentTypeWhat it does
labelstringShort name for this change in History, e.g. "Build market street".
text requiredstringOne 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.

ArgumentTypeWhat it does
entity requiredstringEntity 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.

ArgumentTypeWhat it does
groupstringOptional schooling/flocking group; omitted makes a separate group.
half_extentslist of number
namestringName of this creature or group. Existing entities are preserved.
perchstringBirds: optional named, stationary, horizontal box collider to land on. All landing slots must fit its top inside the habitat.
perch_afternumber
position requiredlist of number
specobjectA 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.
speciesminnow / bass / shark / sparrow / gull / dogminnow, bass, shark, sparrow, gull or dog.
waterstringExact 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.

ArgumentTypeWhat it does
componentsstringScene text, e.g. transform { position (3, 0, 2) scale (1, 1, 1) } mesh_renderer { mesh "builtin:cube" color (0.8, 0.2, 0.1) }
groupstringFolder in the Scene panel. Default "Scene".
name requiredstringUnique 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.

ArgumentTypeWhat it does
camera_bodystringThe physical camera every cut films with unless it says otherwise: a sensor (camera_gear lists them; "" clears).
hold_playerbooleanHold the player still and show the sequence's camera (default: when it has camera cuts).
jsonstringA whole sequence (format "ttr.sequence").
lengthnumberStory seconds.
lens_kitstringThe lens kit every cut uses unless it says otherwise (camera_gear; "none" or "": the classic camera).
name requiredstringe.g. "bottle" (saved as Sequences/bottle.sequence.json)
replaceboolean

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.

ArgumentTypeWhat it does
entity requiredstringEntity name (e.g. "Tower_B") or id (e.g. "#7").
keep_attachedbooleanLeave 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.

ArgumentTypeWhat it does
entity requiredstringEntity name (e.g. "Tower_B") or id (e.g. "#7").
new_name requiredstring
offsetlist of number

edit_entity core

Change an object with scene text. Only what you write changes; everything else keeps its value. One undoable step.

ArgumentTypeWhat it does
changes requiredstringe.g. transform { position (4, 0, -2) } about { role "Main gate" } remove ["spin"]
entity requiredstringEntity 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.

ArgumentTypeWhat it does
include_placeholdersbooleanAlso show placeholder-quality (low-poly) project models in a game whose style isn't toy.
kind requiredmodel / surface / soundsound: the project's recorded sounds (installed packs too) and the game names that play them; synthesized tones are placeholders.
limitintegerDefault 10.
query requiredstringWords 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.

ArgumentTypeWhat it does
limitintegerDefault 12, max 24.
query requiredstringe.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.

ArgumentTypeWhat it does
goal requiredstringWhat you want to make or do.
limitinteger

get_asset

An asset's full record: permanent id, size, bounds, counts, memory, license, source and import warnings.

ArgumentTypeWhat it does
path requiredstring

get_entity

One object in full, as scene text (the same format edit_entity accepts).

ArgumentTypeWhat it does
entity requiredstringEntity 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.

ArgumentTypeWhat it does
jsonboolean
name requiredstringThe 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.

ArgumentTypeWhat it does
messagestringA 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.

ArgumentTypeWhat it does
anglesarrayEach 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.
bonestringFrame 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).
channelslist 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.
fovnumberLens, degrees (default 32: little distortion).
framesintegerMore than 1 makes a motion strip (max 24) with the first angle and channel; the camera rides along with the target.
fromlist of numberLook from this exact point (with look_at) instead of framing angles: a cockpit, a doorway.
intervalnumberSeconds between strip frames (default 0.1).
look_atlist of number
partlist of numberA 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.
pointlist of number
radiusnumberHalf the width to frame, meters (default: the whole object, or 0.6 m around a part).
referencestringPath to a reference image (a photo of the real thing) shown first.
supersamplebooleanRender at 2× and shrink, for crisp edges (default true).
targetstringObject name. Or give point instead.
tileintegerPixels 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.

ArgumentTypeWhat it does
filterstring
include_placeholdersbooleanAlso 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.

ArgumentTypeWhat it does
namestringOne 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.

ArgumentTypeWhat it does
componentstringOnly objects with this component, e.g. point_light.
filterstringText the name or role must contain.
groupstring
limitintegerDefault 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?".

ArgumentTypeWhat it does
from requiredstringAn object's name or #id.
to requiredstringAnother 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.

ArgumentTypeWhat it does
name requiredstringScene name, e.g. "Night_Shift".
requeststringThe person's request in their words: the style is read from it when style isn't given.
stylerealistic / stylized / toy / 2dThe 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.

ArgumentTypeWhat it does
discardbooleanExplicitly discard unsaved changes before opening the scene.
name requiredstringScene 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.

ArgumentTypeWhat it does
distancenumberFor in_front_of: meters along the target's facing direction. Default 2.
entity requiredstringEntity name (e.g. "Tower_B") or id (e.g. "#7").
facingstringTurn to face this object.
gapnumberFor next_to: meters between the two. Default 0.3.
offsetlist of number
pointlist of number
relation requiredon_top_of / against / next_to / in_front_of / between / on_ground / at
sidenorth / south / east / westFor against/next_to. North is -Z, east is +X. For against, omit to use the nearest face.
targetstringThe object it relates to (for between: the first one).
target2stringFor 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.

ArgumentTypeWhat it does
componentslist of stringOnly these ("mesh_renderer", "rigid_body"). Default: every component the copy keeps.
entity requiredstringAn 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.

ArgumentTypeWhat it does
entity requiredstringAn object's name (e.g. "Crate_3") or id ("#7").
namestringThe prefab's name (default: the object's name without a trailing number).
partsbooleanTake 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>.

ArgumentTypeWhat it does
groupstringOutliner group (default "Prefabs").
namestringThe copy's name (default: the prefab's name with a number).
position requiredlist of number[x, y, z] in metres.
prefab requiredstringThe prefab: its name ("Crate") or file ("Prefabs/Crate.ttrprefab").
rotationlist of number[x, y, z] in degrees (default 0, 0, 0).
scalenumberUniform 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.

ArgumentTypeWhat it does
componentslist of stringOnly these. Default: everything it keeps.
entity requiredstringAn 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.

ArgumentTypeWhat it does
details requiredstringWhat you were doing, what happened, what you expected. Plain words, no file contents.
title requiredstringThe problem in a few words ("terrain tool times out on a 2 km island").
toolstringThe 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).

ArgumentTypeWhat it does
namestringSave 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.

ArgumentTypeWhat it does
builder requiredstringThe builder's name, or "my scene" to work on the person's scene again.
createbooleanStart 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.

ArgumentTypeWhat it does
entitieslist of stringSeveral objects (names or #ids): the first is the Inspector's.
entitystringEntity 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.

ArgumentTypeWhat it does
depthnumberfree_space: footprint depth (z) in meters.
entitystringEntity name (e.g. "Tower_B") or id (e.g. "#7").
mode requirednear / bounds / free_space
pointlist of number
radiusnumberSearch radius in meters. Default 10.
widthnumberfree_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.

ArgumentTypeWhat it does
textstring

undo

Undo the most recent change (yours or the person's; check history first).

No arguments.

Arcwright Beta 2 (0.4.0) · generated from the engine source (25e375c86)Something wrong or missing? Tell us
Download Arcwright free