AI tools: Worlds, nature and light
Terrain, forests, water, weather, sky, lighting and streaming. 29 tools. You see every step your AI takes and can undo any of them.
build_path
The game's build path, read from the real project: world → player → enemies → goal → menus → sound → test → share, each done or not with what's there, the next step, and the Teach Me lesson for it. The person sees the same path in Make mode ("Your game"). Use it to know what's left and say it in their words; to show them how to do a step by hand, teach {action:"start", lesson}.
No arguments.
build_road
Lay a road of any type along control points (a smooth spline through them): city street, avenue, highway, ramp, country road, dirt or gravel track, alley, runway, taxiway, race track, bridge street. It joins the scene's road network: intersections build themselves where it meets other roads (corner curbs, crosswalks, stop lines, lane arrows, signals or stop signs), ramps merge into highways, it becomes a bridge with piers over water and deep valleys, the land is cut and filled to it, ground cover cleared, lamps, signs and guard rails placed by its type, and the lane graph updated for traffic. Same name again replaces that road. One undo step.
| Argument | Type | What it does |
|---|---|---|
absolute | list of number | Spans whose deck follows the control points' own heights (world metres) instead of the land: pairs of distances along the road [from, to, ...] (a main span between pylons on cliffs; points outside keep their lifts; [] clears). |
bank | number | Banking into curves in degrees; -1 automatic. |
bridge | auto / never / always | |
closed | boolean | A loop (race track, ring road). |
control | auto / signals / stop / yield / none | Its intersections: auto (signals where busy roads meet, stop signs on minor ones), signals, stop, yield, none. |
follow_ground | boolean | Default true: heights from the land, smoothed to the type's grade. |
lane_width | number | |
lanes | number | Lanes each way (one-way: total). 0 = the type's own. |
markings | boolean | |
name | string | Object name, e.g. Main_Street. Same name replaces it. |
one_way | boolean | |
pebbles | number | trail/footpath: pebbles along it, 0 none ... 1 a few per metre (default 0.5). |
pier_free | list of number | Bridge spans with no piers: pairs of distances along the road in metres [from, to, from, to...] (a cable-stayed main span hung from its pylons; [] clears). |
points required | list of list of number | Control points [[x, z], ...] or [[x, y, z], ...] (world meters). On a ground-following road y is a lift above the land (an overpass hump: 7); otherwise the height itself. |
profile | city_street / avenue / highway / ramp / country / dirt / gravel / alley … | Road type. city_street (2 lanes, parking, sidewalks), avenue (2+2, median, wide sidewalks), highway (2+2 with shoulders, median barrier, guard rails), ramp (one-way interchange ramp; its ends merge into highways), country (2 lanes, gravel verge), dirt, gravel, alley, runway, taxiway, race (one-way, kerbs and gravel runoff), bridge_street, trail (a 1 m footpath worn into the land: no verges, a ragged edge the ground cover thins toward, a darker worn middle, sunk a few cm, roots and pebbles; lane_width sets its width) or footpath (1.4 m). |
props | boolean | Lamps, signs, signals and guard rails. |
roots | number | trail/footpath: roots crossing it per 10 m (default 0.6). |
speed_limit | number | km/h |
surface | string | Pavement layer override: asphalt, gravel, dirt or concrete. |
cost_map
What each part of the map costs the frame from this view, in GPU milliseconds, measured: every group of objects (or, with group, every object in that group) is left out of the live view for a moment and the frame timed against everything shown. The scene itself never changes. Use it while building to know what a thing costs, and before optimizing to know where to start. Lamps count with the object that owns them. Over HTTP it returns a job_id at once: read the result with tool_job.
| Argument | Type | What it does |
|---|---|---|
camera | object | Measure from this view: the camera is moved here first (even with Follow AI off) and left there, so the person sees what was measured. Omitted: the view as it is (the report still says what it was). |
group | string | Measure each object in this group instead of each group. |
lights_with_owner | boolean | Leave an object's lamps out with it (default true). |
limit | integer | Parts to measure, largest groups first (default 24). |
objects | list of string | Measure exactly these objects (names), each on its own. |
repeat | integer | Measure each part this many times and keep the median (default 1, max 5): pins down one object's cost when the frame is noisy. |
seconds | number | How long each part is measured (default 1, 0.4...3). |
design_land
Design land from intent: a base style plus features the landscape must satisfy, solved in order (cliffs, passes, level pads, lakes, then a river along the lowest ground, then roads routed and cut/filled to a maximum grade around the water). Roads become asphalt ribbons, rivers and lakes water. Reports what each feature became and a survey (walkable/drivable share, buildable areas, lookouts, whether features can be reached on foot and by car). Replaces a terrain of the same name.
| Argument | Type | What it does |
|---|---|---|
features | list of object | Each {"type": "cliffs"|"pass"|"flat"|"lake"|"river"|"road", "name", "at": [x, z], "points": [[x, z], ...], "side": "north"|"south"|"east"|"west", "width", "height" (cliffs), "depth" (river, lake), "max_grade" (road, e.g. 0.08)}. Examples: {"type": "road", "side": "west", "points": [[-20, 20]], "max_grade": 0.08}; {"type": "flat", "name": "Village", "at": [-20, 20], "width": 22}; {"type": "river"}; {"type": "cliffs", "side": "north", "height": 18}; {"type": "pass", "at": [60, 40]}. Coordinates are world x, z. |
grass | string | |
height | number | Relief in meters. Default 35. |
name | string | Default "Land". |
road_surface | string | Surface for roads, e.g. asphalt_02. |
rock | string | |
sand | string | |
seed | integer | |
size | number | Meters across. Default 300. |
snow | string | |
snow_line | number | |
style | hills / mountains / island / valley / canyon / flat | Base land. Default valley. |
grow_plant
Grow a park or garden plant natively, with real leaf detail and wind sway: oak (mature, broad crown), young_oak, maple (red leaf_color [0.62,0.07,0.04] for autumn), willow (weeping strands), pine, birch, bush, flowering_bush, hedge (a clipped segment `length` long to repeat along a path with add_hedge). Tropical: flame_tree (a wide umbrella crown in bloom), breadfruit (a dense round crown with fruit), banyan (broad and low, aerial roots hanging from its limbs, the oldest grown into pillar trunks); and big-leaf clumps heliconia, elephant_ear, bird_of_paradise, banana, tree_fern (real bent leaf blades or fronds on stalks cut from the species' photo atlas, flowers and fiddleheads on their own stalks; the tree fern on a photo-bark trunk); forest floor: fern (a crown of arching fronds from the ground, ~0.7 m) and bracken (a stalk with one broad frond held nearly level, ~1 m), from the library's fern fronds or leaf_atlas / species_atlas, and herb (broad leaves on long stalks in a low clump, ~0.3 m; give its leaf_atlas or species_atlas, e.g. one made with make_cover_atlas), sorrel (wood sorrel: a low mat of trefoils, ~0.1 m), bramble (arching shoots of three-leaflet leaves, ~0.55 m), ivy (a creeping ground carpet, ~0.12 m), holly (glossy spiny leaves on upright sprigs, ~0.5 m), dogs_mercury (~0.3 m) and seedling (a tree seedling, ~0.14 m), each from the engine's own leaf sheets; and bougainvillea, a climber covering a wall `length` wide and `height` tall (its face toward +z: place it against a wall, fence or facade), stems up the wall and a cascade over the top. Bark is a photo from the engine's material library (real fissures with depth, moss on the north side); leaves use the library's photo atlas for the species when it has one, else cut-out cards drawn in the species' leaf shape, crown-shaded, lit through from behind; two levels of detail are written beside it. Into Assets/Forge/Nature/<name>.glb (+ _LOD1, _LOD2). Same kind + another seed = another plant of that kind. HTTP calls return a job_id immediately; read progress and the final result with tool_job instead of repeating the tool.
| Argument | Type | What it does |
|---|---|---|
bark | string | Bark from the material library by name or species (e.g. bark_pine, birch), or "drawn". Default: the kind's own photo bark. |
bark_color | list of number | sRGB 0...1 |
crown_fill | number | Leaf clumps through the crown, 0...1 (default 0: clumps at the limb ends only, an open park crown; forest trees read as tufts on sticks from far off without some). Each clump hangs on a twig grown from the nearest wood. |
flower_color | list of number | sRGB 0...1 |
foliage | number | 0 bare ... 1 normal ... 1.5 lush. |
form | park / forest / full / dead / snag | park (default): broad, low crown. forest: slender, tall clean trunk, small high crown. full: a round, dense storybook crown (cartoon and stylised worlds; oak, young_oak, maple, birch), leaf clumps all through it on twigs. dead: bare, grey. snag: a broken dead trunk. |
height | number | Meters (default: typical for the kind). |
kind required | oak / young_oak / maple / willow / pine / birch / bush / flowering_bush … | |
leaf_atlas | string | Optional photographic 2x2 leaf atlas inside Assets (PNG with alpha: cells 0-1 sunlit sprays, 2 shaded inner leaves, 3 a variant or the willow's hanging strand), e.g. sprays cut from a Nano Banana reference sheet; the crown is then built of more, spray-sized cards. |
leaf_atlas_normal | string | Its normal map inside Assets (optional). |
leaf_color | list of number | sRGB 0...1 |
length | number | Hedge segment length, or a climber's wall width (m, default 2). |
moss | number | Moss on the bark 0...1 (default: the bark's own; it grows on the north and upper sides). |
name required | string | |
seed | integer | |
twigs | boolean | Default true: up close the crown is real twigs with real leaves or needles (drawn as instances, casting real shadows); farther out, spray cards. |
width | number | Hedge depth (m, default 0.9). |
light_truth
Does the light match what you see? Checks every see-through surface in the scene (windows, door glass, bottles, lamp globes: a material with transmission, or one named glass/window/pane) and reports two numbers each: how see-through it looks (the share of the view through it that reaches the eye: the material's transmission dimmed by its dust, frost, smudges and condensation) and how much of the sun's or moon's light it lets into the room (glass that casts shadows tints and dims the light by exactly the same layers; a pane with casts_shadows off passes it untouched; an opaque pane blocks it). A mismatch over 20 points is flagged: a pane that looks solid while full moonlight comes through it throws off the eye. Lamps within 1.5 m of a pane that stand in for light through it (a window fill) are listed with the share their light should keep. Also flags glass forged without transmission (it draws as a solid grey panel; re-forge with f.glass). fix: true turns casts_shadows on for real glass that passes light untouched (one undoable step); opaque glass needs a re-forge. Read-only otherwise.
| Argument | Type | What it does |
|---|---|---|
entity | string | Check only this object (name or #id). |
fix | boolean | Turn casts_shadows on for see-through glass whose light passes untouched (one undoable step). |
lighting
Lighting report and settings: bounced light (probe grid spacing around the camera, the near-camera cascade that gives small rooms in big levels their own dense probes, probes re-traced per frame and GPU ms), the night sky (what lights the scene, sun or moon, the moon's direction, phase and light, star visibility) and reflections (screen-space strength, placed room captures and the automatic one in closed rooms), with fixes for common mistakes (a night made with a blue sun above the horizon, reflections at 0, rooms smaller than the probe spacing). Set near_cascade / near_cascade_budget / night_sky / auto_capture to change the renderer for this session (A/B). City scale (Open City): far_cascade (bounced light out to a few hundred metres past the 72 m grid), traced_reach (how far objects go into bounced light's traced scene), far_shadow / far_shadow_reach / far_shadow_every (the sun's shadow past the cascades, redrawn every few frames), city_glow_map (the night glow by where the city's buildings and lights are, not an even dome); the report gives each one's numbers. The moon itself is set on the directional_light: moon, moon_phase, moon_azimuth, moon_elevation, stars. For sheltered surfaces, author reflection_capture.weather_occlusion as interior or roof; the volume also shields scene-wide rain, damp and puddles on room-facing walls, while exterior faces and locally authored wetness remain exposed. Its fade is the bounded wall-face probe distance.
| Argument | Type | What it does |
|---|---|---|
auto_capture | boolean | Automatic room reflection captures (in closed rooms without a reflection_capture) on or off (session only). |
bounce_texel | integer | Full-resolution pixels a traced bounce texel spans per axis (default 4, a quarter resolution: the bounce is soft light; 2 half resolution traces four times the rays). Session only, A/B. |
capture_bounces | boolean | Reflection bounces in room captures (default on): glossy things a capture sees reflect that room's previous capture instead of the sky, so mirrors in closed rooms show the room and mirror-in-mirror. Off: the sky (session only, A/B). |
city_glow_map | boolean | The night city glow by direction (where the city's built-up area and lights are) instead of an even dome (session only, A/B; needs directional_light city_glow > 0). |
displaced_relief | boolean | Bark (relief surfaces) as real tessellated, displaced geometry near the camera on or off; off shows its flat maps (session only, A/B). |
far_cascade | boolean | The far cascade of bounced light (24 x 6 x 24 probes 24 m apart, following the camera) in levels bigger than the 72 m grid, on or off (session only; on rebuilds the grid). |
far_cascade_budget | integer | Far-cascade probes re-traced per frame (default 96). |
far_shadow | boolean | The far city shadow: the sun's shadow past the cascades out to far_shadow_reach, in the shadow map's last slice, redrawn every far_shadow_every frames (session only, A/B). Not drawn where ray-traced sun shadows already reach everything. |
far_shadow_every | integer | Frames between far city shadow redraws when nothing else changed (default 4). |
far_shadow_reach | number | How far each way the far city shadow covers (m; default 1200). |
near_cascade | boolean | The near-camera cascade of bounced light on or off (session only; on takes effect when the probe grid is next rebuilt). |
near_cascade_budget | integer | Near-cascade probes re-traced per frame (default 160). |
night_sky | boolean | The moon disc, stars and moonlit air on or off (session only). |
ray_traced_bounce | boolean | The ray-traced bounce and occlusion (with ray-traced shadows) on or off; off uses the probes and screen-space AO (session only, A/B). |
ray_traced_shadows | boolean | Ray-traced sun shadows (Renderer 2.0: every leaf, twig and caster traced toward the sun's disc, soft with distance from the blocker) on or off; off shades with the shadow cascades alone (session only, A/B). |
relief_reach | number | How far bark relief (tessellated, displaced trunks) reaches from the camera (m, to a trunk's nearest point): full within half of it, none beyond it (default 5). Session only, A/B. |
rt_twig_reach | number | Ray-traced sun shadows: trees' real twigs traced within this many metres (default 12; 0: everywhere). Farther, a tree casts from its coarser cards: raise it for denser sun dapples on a forest floor (costs tracing time). |
shadow_checkerboard | boolean | Traced sun rays in a checkerboard, half the pixels each frame (the temporal filter fills the others; default on). Session only, A/B. |
traced_reach | number | How far from the camera objects go into bounced light's traced scene (m, to their boxes across the ground; default 1500; 0 everything). Session only, A/B. |
make_biome
Grow a whole biome over the land in one undoable step, every layer with its own noise patches: canopy trees (forest form, some dead and snags), a mid layer of young trees and shrubs, deadwood (logs, stumps), a litter layer of small forged pieces (needle clumps, leaves, twigs, cones, stones, moss pads, bark), photo ground cover (grass, ferns, leaves, pebbles) and painted ground layers. Presets: temperate_woods, pine_forest, beech_forest, or a saved Assets/Biomes/<name>.biome.json (save_as writes the preset to edit). Missing tree and litter models are grown first. Keeps clear of roads, trails and water. The same name again replaces the earlier biome. HTTP calls return a job_id immediately; read progress and the final result with tool_job instead of repeating the tool.
| Argument | Type | What it does |
|---|---|---|
as_forest | boolean | Canopy and mid layer as forest objects (one object per layer, millions of trees, drawn at any distance; trees then have no own objects). Default: on when the area would hold more than 3,000 canopy trees. |
center | list of number | [x, z] (default the land's middle). |
crown_fill | number | Leaf clumps through the trees' crowns, 0...1 (default 0.6 for forest-grown trees, else 0): without them a wood's crowns read as tufts on bare sticks from 100 m. Applies when the trees are grown (a new biome or regrow). |
deadwood_radius | number | Logs and stumps (objects) only within this many metres of the centre (default: the radius, at most 250 m: each is an object with a collider). |
density | number | Multiplier on every layer's density (default 1). |
forest_cover | number | As forest objects: the share of the land under woods, 0.05...1 (default 0.82; the rest meadows and clearings). |
forest_edge | number | As forest objects: how softly the woods end, 0 a crisp edge ... 1 thinning out far into the meadow (default 0.6). |
forest_patch | number | As forest objects: how big the woods and meadows are (m across, default 120). |
keep_clear | list of string | Objects to keep clear of (their position, 6 m). |
name | string | Prefix for everything it makes (default Biome). |
preset | string | temperate_woods (default), pine_forest, beech_forest, or a saved preset's name. |
radius | number | Metres (default: all of the land). |
regrow | boolean | Grow the tree and litter models again even if they exist. |
save_as | string | Also save the preset as Assets/Biomes/<save_as>.biome.json. |
seed | integer | |
terrain | string | The land (default the first terrain). |
make_horizon
Surround the land with distant country so it never ends at a hard edge: its edge carried out (width, default 1200 m) and up into wooded ridges (ridge, default 30 m), with a ring of far trees (the trees' coarsest level; count, default 600) on it, fading into the haze. Visual only (nothing walks there). Replaces an earlier horizon.
| Argument | Type | What it does |
|---|---|---|
count | integer | |
ridge | number | |
seed | integer | |
surface | string | Material for the far land (default moss_ground, at a 40 m scale). |
terrain | string | |
trees | list of string | Tree models for the far ring (default: the scene's own tree models). |
width | number |
make_terrain
Make land: hills, mountains, an island in a sea, a valley or a canyon, as a heightmap painted by slope and height (grass, rock on steep ground, sand by the water, snow on peaks). Players walk on it, cars drive on it, bullets hit it, bots path around steep ground. Shape it afterwards with sculpt_terrain. Replaces a terrain of the same name.
| Argument | Type | What it does |
|---|---|---|
grass | string | Surface for gentle ground (Assets/Surfaces name). Find more with find_asset kind surface. |
height | number | Meters from the lowest to the highest ground, roughly. Default 18. |
name | string | File name (letters, digits, _). Default "Land". |
position | list of number | |
resolution | integer | Samples across (detail). Default 257, max 1025. |
rock | string | |
sand | string | |
sand_level | number | Below this height: sand. Default: none (island: 0.8, the shore). |
seed | integer | Different seeds, different land. Default 1. |
size | number | Meters across (square). Default 200, max 16000 (flight games). |
snow | string | |
snow_line | number | Above this height: snow. Default none. |
style | hills / mountains / island / valley / canyon / flat / rocky / stones | Default hills. rocky: a rough hillside strewn with rocks and stones to walk over; stones: flat-topped stepping stones and rounded boulders 20-45 cm high with gaps between (for both, height: meters it rises over 30 m; use resolution for about 5 cm a sample). |
many_lights
Stochastic lamps (the idea of Unreal's MegaLights): each pixel shades two of the lamps that reach it, picked by how much each could light it, each with a ray-traced shadow, instead of shading every lamp, so a scene's cost stops growing with its lamp count and lamps without a shadow map cast real shadows (a bulb no longer lights through a wall). on: true/false for the session; debug: true shows the picks view (where pixels shade from their picks, where the picks were shadowed, where every lamp is still shaded in full). Reports the scene's lamps (in the pool: every lamp without its own shadow map, bulbs, spots, tubes and panels; the few lamps given a shadow map are shaded in full as before), and the lamp path: forward_up_to sets how many lamps in view every pixel walks before the clusters' lists take over and whether the last frame used the picks (it needs ray-traced shadows on this GPU). Measure it with frame_profile {"experiments": ["stochastic_lamps"]} (GPU busy is the number to trust) and judge it moving (it is averaged over frames) before keeping it on.
| Argument | Type | What it does |
|---|---|---|
debug | boolean | The picks view: green where a pixel shades its lamps from its picks (brighter: more of them reached their lamp), blue where both were shadowed, grey where no lamp of the pool reaches it, red where every lamp is shaded in full (no picks for its surface). false: back to the picture. |
forward_up_to | integer | Up to this many lamps in view every pixel walks every lamp (the forward lit programs); beyond it, the clusters' lists (session only; measure both with frame_profile's lamp_clusters / forward_lamps experiments). |
on | boolean | Stochastic lamps on or off (session only). |
ocean_look
Put a reference-matched ocean look on the scene, one undoable step: the spectral sea's wind, fetch, spread, chop, colour, clarity, absorption and foam, the camera look's neutral tone curve (the filmic one crushes the sea's dark tones) and the cloud cover the look's references were photographed under. Every value stays a live ocean field afterwards (edit_entity, the Inspector). Without look: lists them.
| Argument | Type | What it does |
|---|---|---|
look | open_ocean / tropical / caribbean / deep_pacific / north_sea / arctic / mediterranean / murky_coastal … |
plant_trees
Plant a forest, a grove or a row of trees here: models from grow_plant (or any tree/bush model) scattered over an area (center + radius, or an outline `points`), `count` or `per_100m2`, kept `spacing` apart, out of water and clear of named objects, sized and turned at random, standing on the land. Each tree gets a trunk collider. One group, one undoable change; the same name again replaces the earlier set.
| Argument | Type | What it does |
|---|---|---|
center | list of number | |
count | integer | |
ground_y | number | |
keep_clear | list of string | |
meshes required | list of string | |
name required | string | |
per_100m2 | number | |
points | list of list of number | |
radius | number | |
scale | list of number | [min, max] (default [0.85, 1.15]). |
seed | integer | |
spacing | number | |
trunk_radius | number | Collider radius (m, default 0.3; 0 none). |
rebuild_roads
Rebuild everything made from the scene's roads (meshes, props, signals, colliders, cut-and-fill, ground cover clearing) after editing roads by hand in scene text or the inspector. One undo step. Land whose cut-and-fill another scene's roads made (scenes sharing terrain files) is left alone and reported; take_land: true cuts it for this scene's roads instead.
| Argument | Type | What it does |
|---|---|---|
remove_stale | boolean | Also remove objects showing a land-design road, river or lake that no longer exists (the reply lists them either way). Default false. |
take_land | boolean | Cut land another scene's roads own (their cut-and-fill is replaced). Default false. |
road_network
Whole road layouts from intent, as ordinary roads in the network. kind "grid": a town grid of streets (columns × rows blocks, optional avenues), with building plots along the blocks facing their street (and buildings placed on them from `buildings` models, turned to the street). kind "route": a road from one point to another over the land, routed to keep its grade and stay out of water (a country road into the hills, a dirt track). kind "interchange": a highway lifted on a bridge over a crossing road with four ramps (a diamond). kind "settings": the network's drive side, signal timing, lit lamps, cut-and-fill, ground-cover clearing, wet pavement, wear. One undo step.
| Argument | Type | What it does |
|---|---|---|
all_red | number | |
amber | number | |
avenue_every | integer | Every Nth inner street is an avenue (0 none). |
block | list of number | Block size [x, z] between street centerlines, meters (default [90, 70]). |
buildings | list of string | Models to put on the grid's plots (picked at random, seeded), facing the street. |
center | list of number | [x, z] world meters |
chunk | number | |
columns | integer | |
conform | boolean | |
crossing | list of list of number | Interchange: [[x, z], [x, z]] the crossing road's ends. |
drive_side | right / left | |
from | list of number | [x, z] world meters |
green | number | |
highway | list of list of number | Interchange: [[x, z], [x, z]] the highway's ends. |
kind required | grid / route / interchange / settings | |
lamps_lit | boolean | |
lift | number | Interchange: how high the highway rises over the crossing road (default 7.5 m). |
lot_width | number | |
max_grade | number | Route: steepest grade wanted (default the type's own). |
name | string | Prefix for the roads made (Town, Hill_Road, Interchange). |
puddles | number | |
rows | integer | |
seed | integer | |
shed_foliage | boolean | |
street | city_street / avenue / highway / ramp / country / dirt / gravel / alley … | Street type for a grid (default city_street); route type (default country). |
to | list of number | [x, z] world meters |
wear | number | |
wetness | number | |
yaw | number | Grid turn, degrees. |
rooms
Room visibility (room and portal components): the renderer draws the room the camera is in and the rooms seen through its open portals (doorways, windows), each only through its opening; objects wholly inside a room nobody can see aren't drawn and its lamps fade out. Rooms within `near` m of the eye stay on, rooms linger `linger` s after they were last seen, lamps fade over `light_fade` s, portal openings count `portal_margin` (share of the half-screen) wider. view: true draws the rooms view (rooms green seen / yellow kept on / dark red off; portals cyan see-through / red closed). culling: false turns it off (A/B). Reports the rooms drawn this frame.
| Argument | Type | What it does |
|---|---|---|
culling | boolean | Room visibility on (default) or off. |
light_fade | number | Seconds lamps take to fade in or out (default 0.35). |
linger | number | Seconds a room stays on after it was last seen (default 0.5). |
near | number | Rooms this close to the eye stay on, m (default 3). |
portal_margin | number | How much wider portal openings count on screen (default 0.06). |
view | boolean | Draw the rooms view over the viewport. |
scatter
Scatter copies of models over the land by rules: how many, where (an area, a height band such as a beach, the steepest slope allowed), how far apart, size and lean variety, random turn. Seeded, so the same call gives the same layout; calling again with the same name replaces the earlier set (one undo step). For trees, palms, rocks, bushes, ruins, crates.
| Argument | Type | What it does |
|---|---|---|
center | list of number | [x, z] middle of the area. Default the land's middle. |
count | integer | How many. Default 20, at most 2000. |
keep_clear | list of string | Object names to keep clear of (spacing distance plus 3 m). |
lean | number | Largest random tilt, degrees (palms ~8, rocks 20). Default 3. |
max_height | number | Highest ground allowed, world meters. |
max_slope | number | Steepest ground allowed, degrees. Default 25. |
mesh | string | Model to place, e.g. "Forge/Palm_C1.glb". |
meshes | list of string | Several models to mix (picked at random). |
min_height | number | Lowest ground allowed, world meters (default: just above the sea when there is one). |
name | string | Name prefix and group ("Palms" makes Palms_01, Palms_02, ...). Default from the model. |
radius | number | Area radius in meters. Default: the whole land. |
road_clearance | number | Meters to keep clear of the edges of roads, rivers and lakes from the land design (default 3; -1 allows on them). |
scale | list of number | [min, max] size range. Default [0.85, 1.15]. |
seed | integer | |
spacing | number | Minimum distance between copies, meters. Default 4. |
spider_webs
Spin spider webs between real surfaces (never floating: Gordon's rule, webs live in corners, connected to things). Give spots near corners: a post meeting a beam, a doorway's top corner, a counter by a wall, between ride bars. For each, rays go out into the scene's own triangles (every model near it, and the land) and the web is built from what they hit: kind "orb" (frame threads ending on the surfaces round the spot, radials and a sticky spiral; `facing` sets its plane's normal, default: tried round and the best kept), "sheet" (a cobweb's sagging tangle between the faces meeting at a corner), "strands" (a few long threads between surfaces), or "auto" (an orb where the surfaces surround the spot, else a corner sheet, else strands). A spot with too little to hang from gets no web, and the report says so. Each web is written as a model (Assets/FX/webs/gen/<name>_<hash>.glb, a new file each spin) on a new object at its spot, in one undo step. Replaces objects of the same names.
| Argument | Type | What it does |
|---|---|---|
around | string | Instead of spots: an object's name; spots are found just off its own surfaces (walls, posts, beams, under its roof) and the best anchored webs kept. |
count | integer | With around: how many webs (default 6), at least 1.2 m apart. |
group | string | Their group (default Webs). |
height | list of number | With around: [lowest, highest] metres above its base for the webs (default [1.2, 4.5]). |
name | string | Name prefix for the web objects (default Web). |
seed | integer | |
spots | list of object |
stream_build_hlod
Makes the far stand-ins of the open streamed map (HLOD): for each cell, its objects merged into one model (their coarsest levels where they stand, flat colours baked from materials and textures, things smaller than min_size left out, simplified to max_triangles), written to Assets/HLOD/<map>/c_<column>_<row>.glb. The map then shows each cell's stand-in out to far_radius while the cell itself isn't loaded, so the whole city stays on the horizon. Only cells whose file changed are rebuilt unless rebuild_all.
| Argument | Type | What it does |
|---|---|---|
far_radius | number | How far stand-ins show, metres (default 6000). |
max_triangles | number | Per cell (default 20000). |
min_size | number | Objects smaller than this (their longest side, metres) are left out (default 2). |
rebuild_all | boolean |
stream_split
Cuts the open scene (a whole map: a city blockout, an island) into a streamed map: every placed object goes into the scene file of the cell it stands in (an attached object goes with what it follows), and a new map scene keeps what is always there (land, sea, sky, sun, roads, the player and cameras, vehicles, creatures, ground cover, forests, water, weather, sound mixes, anything wider than three quarters of a cell) plus a world_streaming component pointing at the cells. The open scene is not changed. Open the new scene, fly around, and read stream_status.
| Argument | Type | What it does |
|---|---|---|
cell_size | number | Cell side in metres (default 256). |
cells | string | The cells' folder under the project. Default: Scenes/<out_scene>.cells. |
dry_run | boolean | Report what would go where, write nothing. |
load_radius | number | Default 640 m. |
origin | list of number | [x, z] of the grid's lowest corner. Default: the objects' lowest x and z, rounded down to a cell. |
out_scene | string | The streamed map scene to write, under Scenes/ ("OC_Map"). Default: the open scene's name + "_streamed". |
replace | boolean | Overwrite an existing out_scene and its cell files (old c_*.ttrscene files there that this split doesn't write are removed). |
unload_radius | number | Default 800 m. |
stream_status
A streamed map (world_streaming) right now: the grid and its settings, where the eye is and where it is heading, cells loaded / entering / reading / leaving / failed, objects streamed in, what entered and left last frame, the step's cost, the slowest cells to load and why any failed. Turn the cell grid on in the view with the component's show_grid.
No arguments.
survey_land
Read a terrain the way a level designer would: walkable and drivable share, buildable flat areas, lookout points and how much they see, and whether named places can be reached from a start on foot and by car.
| Argument | Type | What it does |
|---|---|---|
places | object | Named points to check: {"Village": [x, z], ...}. |
start | list of number | [x, z] where players start. Default: the player. |
terrain | string | Default: the first terrain. |
terrain_hole
Cut a hole in the land (a cave's mouth, a pit, a shaft) or close one again: the cells within an ellipse round `at` [x, z] (world, metres; `radius` one number or [along x, along z]) open: nothing is drawn or grown there, nothing stands on it, and rays, bodies and walkers pass through to whatever is below (a cave mesh brings its own walls; the land hangs a short rim into the hole). close: true fills them back. Saved beside the heightmap (<name>.ttrhole); undoable.
| Argument | Type | What it does |
|---|---|---|
at required | list of number | [x, z] |
close | boolean | Fill the cells back in (default false: open them). |
radius | any | Meters: one number (round) or [x, z] (an oval). Default 2. |
terrain | string | The terrain object's name. Default: the first terrain. |
tornado
Tornadoes and waterspouts (the `tornado` component: one object each, touching down where it stands; every field stays live in the Inspector). action: spawn (at [x, y, z] plus any fields; name optional), steer (name, or none when there is one; change any field while it runs: a new heading or speed turns it from where it is, at moves its start), remove (name), or list (the default: every tornado now: stage forming / mature / rope_out / gone, age, where its foot is, how fast it moves, core radius and peak wind now). Fields: strength (EF 0...5), radius (core m; -1 typical for the strength), height (cloud base m; -1 the weather's), speed (m/s), heading (compass degrees it travels toward), waterspout, lifetime (s; 0 endless), loop, delay (s), wobble 0...1, path [[x, z], ...] (m from its position, followed at speed), clockwise, lift (scales lift on loose bodies), debris 0...2, seed, enabled. points [[x, y, z], ...] also reports the whole wind there (weather and tornadoes, m/s) and each tornado's own share. Loose bodies in reach are pushed and the light ones lifted (EF mass limits); scripts hear tornado_touchdown, tornado_rope_out, tornado_lifted and tornado_hit.
| Argument | Type | What it does |
|---|---|---|
action | spawn / steer / remove / list | |
at | list of number | |
clockwise | boolean | |
debris | number | |
delay | number | |
enabled | boolean | |
heading | number | |
height | number | |
lifetime | number | |
lift | number | |
loop | boolean | |
name | string | |
path | list of list of number | Track points [x, z], meters from its position; [] goes back to the heading. |
points | list of list of number | World points to sample the wind at (up to 256). |
radius | number | |
seed | number | |
speed | number | |
strength | number | |
waterspout | boolean | |
wobble | number |
traffic_status
City traffic and pedestrians in play: how many traffic cars are round the player against how many the road network's traffic setting wants (cars per km of lane within traffic_radius, at most traffic_max), how many template cars they're copied from (cars tagged traffic_template), and how many came and went. Set traffic on the road_network object (edit_entity: road_network { traffic 8 }) and tag one or more parked cars traffic_template.
No arguments.
water
Ask the sea: its level and waves (length, period, speed, direction), and at given spots the water's surface right now, the depth to the bottom and what that means (dry land, wading, swimming, boats can pass, bottom visible). Matches what the renderer draws.
| Argument | Type | What it does |
|---|---|---|
points | list of list of number | Spots as [x, z] (up to 20). |
water_event
Tsunamis and floods. action "tsunami": a long travelling wave on the scene's ocean from `origin` [x, z] or [x, y, z] toward `heading` (compass degrees): amplitude (m in open water), wavelength (m), shape solitary or n_wave (the sea draws back first), drawdown, depth (m; 0 uses speed m/s), width (crest length, 0 endless), reach (m), start (s after Play; -1 waits for action start), break_ratio. It shoals against the terrain's seabed, breaks, runs inland; boats and floating things ride it. action "flood": rising water over `center` [x, y, z] in a circle of `radius` (or `outline` [[x, z], ...] around center): from / to (world heights, m), rise_time (s), start, current_heading, current_speed (m/s), rain_rise / drain (m/h with the weather's rain), ceiling, debris (floating planks and drums to drop in, 0-60); muddy water by default. action "start" (name): start or restart one now. action "remove" (name). action "query": `points` [[x, y, z], ...]: water surface, depth and current there. action "list" (default): what's set up and how far along it is. Scripts hear 'tsunami_arrival' and 'flood_level'.
| Argument | Type | What it does |
|---|---|---|
action | list / tsunami / flood / start / remove / query | |
amplitude | number | |
break_ratio | number | |
ceiling | number | |
center | list of number | |
current_heading | number | |
current_speed | number | |
debris | number | |
depth | number | |
drain | number | |
drawdown | number | |
from | number | |
heading | number | |
name | string | |
origin | list of number | |
outline | list of list of number | |
points | list of list of number | World points to sample (up to 256). |
radius | number | |
rain_rise | number | |
reach | number | |
rise_time | number | |
shape | solitary / n_wave / surf | |
speed | number | |
start | number | |
to | number | |
wavelength | number | |
width | number |
weather
The scene's weather. Set any of: preset (clear, overcast, rain, storm, thunderstorm, snow, fog, hurricane), intensity 0...1, transition (seconds to blend in while playing), wind_heading (compass degrees it blows toward; -1 the preset's), wind_speed (m/s at 10 m; -1 the preset's), gusts and turbulence (multipliers), seed, storm_center [x, y, z] and storm_area (m), drive_plants / drive_clouds / precipitation_fx, cycle (a list of "<preset> <seconds> [intensity]" played in order and again: sun, overcast, fog, rain, thunderstorm, clearing). remove: true takes the weather out (the scene's own wind and clouds come back). Always reports the blended state now; `points` [[x, y, z], ...] also reports the wind there (m/s, with gust, updraft and turbulence); cells: true lists the storm cells alive now (centre, radius, rotation, up/downdraft, strength).
| Argument | Type | What it does |
|---|---|---|
cells | boolean | List the storm cells alive now. |
cycle | list of string | A weather cycle: entries "<preset> <seconds> [intensity]" played in order and again, each blending in over transition (e.g. ["clear 90", "overcast 45", "fog 40", "rain 60", "thunderstorm 50", "overcast 30"]); [] ends it. |
drive_clouds | boolean | |
drive_plants | boolean | |
gusts | number | |
intensity | number | |
points | list of list of number | World points to sample the wind at (up to 256). |
precipitation_fx | boolean | |
preset | clear / overcast / rain / storm / thunderstorm / snow / fog / hurricane | |
remove | boolean | |
seed | number | |
storm_area | number | |
storm_center | list of number | |
transition | number | |
turbulence | number | |
wind_heading | number | |
wind_speed | number |
weather_view
The weather view, drawn over the viewport (editing or playing) so the person watches the weather being tuned: wind arrows on a grid around the camera at chosen heights (length = how far the air moves in 0.5 s; colour by speed: cyan calm < 6 m/s, green breeze, yellow 14+ gale, orange 24+ storm, red 33+ hurricane; they tilt with updrafts), storm cells as rings on the ground (core white, downdraft ring blue, updraft column green, scaled by strength), lightning bolts while they flash, and the sea's wind as one long blue arrow from the camera's foot.
| Argument | Type | What it does |
|---|---|---|
arrows | boolean | |
bolts | boolean | |
cells | boolean | |
heights | list of number | Heights above the ground for arrow layers, m (default [2, 25]). |
on | boolean | Draw the view (default: leave as it is). |
reach | number | Grid radius around the camera, m (default 70). |
sea | boolean | |
spacing | number | Arrow grid spacing, m (default 10). |