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.

ArgumentTypeWhat it does
absolutelist of numberSpans 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).
banknumberBanking into curves in degrees; -1 automatic.
bridgeauto / never / always
closedbooleanA loop (race track, ring road).
controlauto / signals / stop / yield / noneIts intersections: auto (signals where busy roads meet, stop signs on minor ones), signals, stop, yield, none.
follow_groundbooleanDefault true: heights from the land, smoothed to the type's grade.
lane_widthnumber
lanesnumberLanes each way (one-way: total). 0 = the type's own.
markingsboolean
namestringObject name, e.g. Main_Street. Same name replaces it.
one_wayboolean
pebblesnumbertrail/footpath: pebbles along it, 0 none ... 1 a few per metre (default 0.5).
pier_freelist of numberBridge 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 requiredlist of list of numberControl 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.
profilecity_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).
propsbooleanLamps, signs, signals and guard rails.
rootsnumbertrail/footpath: roots crossing it per 10 m (default 0.6).
speed_limitnumberkm/h
surfacestringPavement 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.

ArgumentTypeWhat it does
cameraobjectMeasure 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).
groupstringMeasure each object in this group instead of each group.
lights_with_ownerbooleanLeave an object's lamps out with it (default true).
limitintegerParts to measure, largest groups first (default 24).
objectslist of stringMeasure exactly these objects (names), each on its own.
repeatintegerMeasure each part this many times and keep the median (default 1, max 5): pins down one object's cost when the frame is noisy.
secondsnumberHow 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.

ArgumentTypeWhat it does
featureslist of objectEach {"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.
grassstring
heightnumberRelief in meters. Default 35.
namestringDefault "Land".
road_surfacestringSurface for roads, e.g. asphalt_02.
rockstring
sandstring
seedinteger
sizenumberMeters across. Default 300.
snowstring
snow_linenumber
stylehills / mountains / island / valley / canyon / flatBase 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.

ArgumentTypeWhat it does
barkstringBark from the material library by name or species (e.g. bark_pine, birch), or "drawn". Default: the kind's own photo bark.
bark_colorlist of numbersRGB 0...1
crown_fillnumberLeaf 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_colorlist of numbersRGB 0...1
foliagenumber0 bare ... 1 normal ... 1.5 lush.
formpark / forest / full / dead / snagpark (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.
heightnumberMeters (default: typical for the kind).
kind requiredoak / young_oak / maple / willow / pine / birch / bush / flowering_bush …
leaf_atlasstringOptional 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_normalstringIts normal map inside Assets (optional).
leaf_colorlist of numbersRGB 0...1
lengthnumberHedge segment length, or a climber's wall width (m, default 2).
mossnumberMoss on the bark 0...1 (default: the bark's own; it grows on the north and upper sides).
name requiredstring
seedinteger
twigsbooleanDefault true: up close the crown is real twigs with real leaves or needles (drawn as instances, casting real shadows); farther out, spray cards.
widthnumberHedge 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.

ArgumentTypeWhat it does
entitystringCheck only this object (name or #id).
fixbooleanTurn 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.

ArgumentTypeWhat it does
auto_capturebooleanAutomatic room reflection captures (in closed rooms without a reflection_capture) on or off (session only).
bounce_texelintegerFull-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_bouncesbooleanReflection 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_mapbooleanThe 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_reliefbooleanBark (relief surfaces) as real tessellated, displaced geometry near the camera on or off; off shows its flat maps (session only, A/B).
far_cascadebooleanThe 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_budgetintegerFar-cascade probes re-traced per frame (default 96).
far_shadowbooleanThe 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_everyintegerFrames between far city shadow redraws when nothing else changed (default 4).
far_shadow_reachnumberHow far each way the far city shadow covers (m; default 1200).
near_cascadebooleanThe near-camera cascade of bounced light on or off (session only; on takes effect when the probe grid is next rebuilt).
near_cascade_budgetintegerNear-cascade probes re-traced per frame (default 160).
night_skybooleanThe moon disc, stars and moonlit air on or off (session only).
ray_traced_bouncebooleanThe 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_shadowsbooleanRay-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_reachnumberHow 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_reachnumberRay-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_checkerboardbooleanTraced sun rays in a checkerboard, half the pixels each frame (the temporal filter fills the others; default on). Session only, A/B.
traced_reachnumberHow 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.

ArgumentTypeWhat it does
as_forestbooleanCanopy 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.
centerlist of number[x, z] (default the land's middle).
crown_fillnumberLeaf 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_radiusnumberLogs 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).
densitynumberMultiplier on every layer's density (default 1).
forest_covernumberAs forest objects: the share of the land under woods, 0.05...1 (default 0.82; the rest meadows and clearings).
forest_edgenumberAs forest objects: how softly the woods end, 0 a crisp edge ... 1 thinning out far into the meadow (default 0.6).
forest_patchnumberAs forest objects: how big the woods and meadows are (m across, default 120).
keep_clearlist of stringObjects to keep clear of (their position, 6 m).
namestringPrefix for everything it makes (default Biome).
presetstringtemperate_woods (default), pine_forest, beech_forest, or a saved preset's name.
radiusnumberMetres (default: all of the land).
regrowbooleanGrow the tree and litter models again even if they exist.
save_asstringAlso save the preset as Assets/Biomes/<save_as>.biome.json.
seedinteger
terrainstringThe 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.

ArgumentTypeWhat it does
countinteger
ridgenumber
seedinteger
surfacestringMaterial for the far land (default moss_ground, at a 40 m scale).
terrainstring
treeslist of stringTree models for the far ring (default: the scene's own tree models).
widthnumber

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.

ArgumentTypeWhat it does
grassstringSurface for gentle ground (Assets/Surfaces name). Find more with find_asset kind surface.
heightnumberMeters from the lowest to the highest ground, roughly. Default 18.
namestringFile name (letters, digits, _). Default "Land".
positionlist of number
resolutionintegerSamples across (detail). Default 257, max 1025.
rockstring
sandstring
sand_levelnumberBelow this height: sand. Default: none (island: 0.8, the shore).
seedintegerDifferent seeds, different land. Default 1.
sizenumberMeters across (square). Default 200, max 16000 (flight games).
snowstring
snow_linenumberAbove this height: snow. Default none.
stylehills / mountains / island / valley / canyon / flat / rocky / stonesDefault 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.

ArgumentTypeWhat it does
debugbooleanThe 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_tointegerUp 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).
onbooleanStochastic 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.

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

ArgumentTypeWhat it does
centerlist of number
countinteger
ground_ynumber
keep_clearlist of string
meshes requiredlist of string
name requiredstring
per_100m2number
pointslist of list of number
radiusnumber
scalelist of number[min, max] (default [0.85, 1.15]).
seedinteger
spacingnumber
trunk_radiusnumberCollider 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.

ArgumentTypeWhat it does
remove_stalebooleanAlso remove objects showing a land-design road, river or lake that no longer exists (the reply lists them either way). Default false.
take_landbooleanCut 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.

ArgumentTypeWhat it does
all_rednumber
ambernumber
avenue_everyintegerEvery Nth inner street is an avenue (0 none).
blocklist of numberBlock size [x, z] between street centerlines, meters (default [90, 70]).
buildingslist of stringModels to put on the grid's plots (picked at random, seeded), facing the street.
centerlist of number[x, z] world meters
chunknumber
columnsinteger
conformboolean
crossinglist of list of numberInterchange: [[x, z], [x, z]] the crossing road's ends.
drive_sideright / left
fromlist of number[x, z] world meters
greennumber
highwaylist of list of numberInterchange: [[x, z], [x, z]] the highway's ends.
kind requiredgrid / route / interchange / settings
lamps_litboolean
liftnumberInterchange: how high the highway rises over the crossing road (default 7.5 m).
lot_widthnumber
max_gradenumberRoute: steepest grade wanted (default the type's own).
namestringPrefix for the roads made (Town, Hill_Road, Interchange).
puddlesnumber
rowsinteger
seedinteger
shed_foliageboolean
streetcity_street / avenue / highway / ramp / country / dirt / gravel / alley …Street type for a grid (default city_street); route type (default country).
tolist of number[x, z] world meters
wearnumber
wetnessnumber
yawnumberGrid 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.

ArgumentTypeWhat it does
cullingbooleanRoom visibility on (default) or off.
light_fadenumberSeconds lamps take to fade in or out (default 0.35).
lingernumberSeconds a room stays on after it was last seen (default 0.5).
nearnumberRooms this close to the eye stay on, m (default 3).
portal_marginnumberHow much wider portal openings count on screen (default 0.06).
viewbooleanDraw 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.

ArgumentTypeWhat it does
centerlist of number[x, z] middle of the area. Default the land's middle.
countintegerHow many. Default 20, at most 2000.
keep_clearlist of stringObject names to keep clear of (spacing distance plus 3 m).
leannumberLargest random tilt, degrees (palms ~8, rocks 20). Default 3.
max_heightnumberHighest ground allowed, world meters.
max_slopenumberSteepest ground allowed, degrees. Default 25.
meshstringModel to place, e.g. "Forge/Palm_C1.glb".
mesheslist of stringSeveral models to mix (picked at random).
min_heightnumberLowest ground allowed, world meters (default: just above the sea when there is one).
namestringName prefix and group ("Palms" makes Palms_01, Palms_02, ...). Default from the model.
radiusnumberArea radius in meters. Default: the whole land.
road_clearancenumberMeters to keep clear of the edges of roads, rivers and lakes from the land design (default 3; -1 allows on them).
scalelist of number[min, max] size range. Default [0.85, 1.15].
seedinteger
spacingnumberMinimum 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.

ArgumentTypeWhat it does
aroundstringInstead 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.
countintegerWith around: how many webs (default 6), at least 1.2 m apart.
groupstringTheir group (default Webs).
heightlist of numberWith around: [lowest, highest] metres above its base for the webs (default [1.2, 4.5]).
namestringName prefix for the web objects (default Web).
seedinteger
spotslist 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.

ArgumentTypeWhat it does
far_radiusnumberHow far stand-ins show, metres (default 6000).
max_trianglesnumberPer cell (default 20000).
min_sizenumberObjects smaller than this (their longest side, metres) are left out (default 2).
rebuild_allboolean

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.

ArgumentTypeWhat it does
cell_sizenumberCell side in metres (default 256).
cellsstringThe cells' folder under the project. Default: Scenes/<out_scene>.cells.
dry_runbooleanReport what would go where, write nothing.
load_radiusnumberDefault 640 m.
originlist of number[x, z] of the grid's lowest corner. Default: the objects' lowest x and z, rounded down to a cell.
out_scenestringThe streamed map scene to write, under Scenes/ ("OC_Map"). Default: the open scene's name + "_streamed".
replacebooleanOverwrite an existing out_scene and its cell files (old c_*.ttrscene files there that this split doesn't write are removed).
unload_radiusnumberDefault 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.

ArgumentTypeWhat it does
placesobjectNamed points to check: {"Village": [x, z], ...}.
startlist of number[x, z] where players start. Default: the player.
terrainstringDefault: 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.

ArgumentTypeWhat it does
at requiredlist of number[x, z]
closebooleanFill the cells back in (default false: open them).
radiusanyMeters: one number (round) or [x, z] (an oval). Default 2.
terrainstringThe 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.

ArgumentTypeWhat it does
actionspawn / steer / remove / list
atlist of number
clockwiseboolean
debrisnumber
delaynumber
enabledboolean
headingnumber
heightnumber
lifetimenumber
liftnumber
loopboolean
namestring
pathlist of list of numberTrack points [x, z], meters from its position; [] goes back to the heading.
pointslist of list of numberWorld points to sample the wind at (up to 256).
radiusnumber
seednumber
speednumber
strengthnumber
waterspoutboolean
wobblenumber

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.

ArgumentTypeWhat it does
pointslist of list of numberSpots 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'.

ArgumentTypeWhat it does
actionlist / tsunami / flood / start / remove / query
amplitudenumber
break_rationumber
ceilingnumber
centerlist of number
current_headingnumber
current_speednumber
debrisnumber
depthnumber
drainnumber
drawdownnumber
fromnumber
headingnumber
namestring
originlist of number
outlinelist of list of number
pointslist of list of numberWorld points to sample (up to 256).
radiusnumber
rain_risenumber
reachnumber
rise_timenumber
shapesolitary / n_wave / surf
speednumber
startnumber
tonumber
wavelengthnumber
widthnumber

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).

ArgumentTypeWhat it does
cellsbooleanList the storm cells alive now.
cyclelist of stringA 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_cloudsboolean
drive_plantsboolean
gustsnumber
intensitynumber
pointslist of list of numberWorld points to sample the wind at (up to 256).
precipitation_fxboolean
presetclear / overcast / rain / storm / thunderstorm / snow / fog / hurricane
removeboolean
seednumber
storm_areanumber
storm_centerlist of number
transitionnumber
turbulencenumber
wind_headingnumber
wind_speednumber

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.

ArgumentTypeWhat it does
arrowsboolean
boltsboolean
cellsboolean
heightslist of numberHeights above the ground for arrow layers, m (default [2, 25]).
onbooleanDraw the view (default: leave as it is).
reachnumberGrid radius around the camera, m (default 70).
seaboolean
spacingnumberArrow grid spacing, m (default 10).
Arcwright Beta 2 (0.4.0) · generated from the engine source (25e375c86)Something wrong or missing? Tell us
Download Arcwright free