AAtlas / Accelerated Accelerated · 12 modules

AshForge Atlas · the whole tool, one course

A lattice, four shares of one budget,
and a falloff that runs backwards.

Atlas builds terrain: a height lattice, painted material shares, and props on top. Three of its controls do the opposite of what their names suggest, and one does nothing at all — this course front-loads those rather than saving them for an advanced tier.

Application  AshForge Atlas Prerequisites  none Format  one course, 12 modules Time  ~75 min

What it is

A terrain editor. Heights on a grid, four material weights per point, and props placed over them.

Modules 1–4 are the lattice, 5–8 are painting, 9–12 are chunks and export.

Three surprises

Falloff is backwards, one slider does nothing, and props do not follow the terrain you move under them.

All three are measured, not inferred. Modules 3, 4 and 8.

Why this is one course

Atlas is a focused tool. Its content is 12 things worth knowing, not three escalating tiers — the old split implied the later material needed the earlier, and it does not. Read straight through, or jump to the module that matches your problem.

01

Resolution against size

The lattice under the level

Read one division

A level carries two numbers that sound similar and are not. Size is how much ground it covers. Resolution is how many height values are stored across that ground. The terrain you see is those values with straight lines drawn between them.

SizeX      256   units of ground
Resolution  16   height values across that ground

spacing = SizeX / (Resolution − 1) = 256 / 15 = 17.07 units

The subtraction matters. Sixteen points have fifteen gaps between them, not sixteen, so the spacing is 256 divided by 15. Everything else on this page is a consequence of that single figure.

What it means in practice: between any two stored heights there are seventeen metres of ground with no data at all. The surface there is interpolation. You cannot sculpt a feature smaller than the spacing, because there is nowhere to put it.

Key
Raising Resolution adds detail; raising Size spreads the same detail thinner. A 512-unit level at resolution 16 has 34-unit spacing and is half as sculptable as a 256-unit one, without anything on screen looking different until you paint.
Non-square levels
The spacing is computed from SizeX only, and the same figure is used for the Z axis. On a 256×1024 level the lattice is still spaced as though it were 256 wide, so a brush that is round in grid terms lands as an ellipse on the ground. Keep levels square unless you want that.
02

The first stroke

Why you get a spike

Do count the points

Take a fresh level, leave every brush setting alone, and click once. Then count how many height values changed.

Brush radiusAgainst 17.07 spacingPoints movedWhat you see
10 (default)smaller than one gap1 A single point pulled up. A spike.
20clears one gapmore than 1 Neighbours come with it. A slope.

The centre of the brush always lands exactly on a grid point — the tool rounds your click to the nearest one — so that point is always at distance zero and always gets the full strength. With a strength of 2 it moves by exactly 2. Its neighbours sit 17.07 away, outside a radius of 10, so they are not considered at all.

That is the whole of the effect. One value moved by two metres, fifteen metres of interpolation running away from it in every direction.

radius 10 — reaches no neighbour 17.07 one point up, a spike radius 20 — clears the gap neighbours come too, a slope Measured on a fresh 256-unit level at resolution 16: r=10, strength 2 → 1 point moved, by exactly 2.0000 (the centre's factor is 1) r=20, strength 2 → more than one point moved Rule of thumb: a brush radius below the spacing can only ever move a single value.

Figure 01 — the gap the default brush cannot cross The click is rounded to the nearest grid point, so the centre always takes the full strength.

Drill01

Make the spike deliberately
  1. New level, default brush, one click.
  2. Look from a low angle, not from above.
  3. Raise the radius past 17 and click again nearby.

Done when you can produce a spike and a slope on purpose, and say which radius gives which.

Drill02

Work out a level's spacing before you touch it
  1. Read Size and Resolution.
  2. Divide size by resolution minus one.
  3. Set your radius to at least twice that.

Done when this is the first thing you do on any new level.

03

Modes

The slider that does nothing

Diagnose two of four

The brush has four sculpting modes, and the Strength slider only reaches two of them.

ModeWhat it doesReads Strength?
RaiseAdds strength × factor to each point in range.Yes
LowerThe same with the sign flipped.Yes
SmoothMoves each point halfway toward the local average.No
FlattenMoves each point to the local average.No

Smooth and flatten work from the gap between a point and the average of everything under the brush. The strength number never enters that calculation, so dragging the slider from 1 to 999 produces identical terrain — verified by running both and comparing every value.

The two modes are otherwise the same expression. Flatten moves exactly twice as far as smooth, because smooth carries a one-half and flatten does not. Two presses of smooth are not quite one press of flatten, but they are close, and if you want finer control than smooth gives you the answer is fewer strokes rather than a lower strength.

Key
If you are trying to soften terrain and the strength slider seems to make no difference, it is making no difference. Control smooth and flatten with the radius and the number of strokes, which are the only inputs they read.
04

The last setting

Falloff is backwards

Derive one exponent

Every point in range is scaled by how far it sits from the centre, and Falloff bends that curve. The word suggests that turning it up makes the edge softer. It does the opposite.

factor = (1 − dist / radius) ^ (1 − falloff × 0.9)

falloff 0   → exponent 1.0   a straight cone, fading evenly to nothing
falloff 1   → exponent 0.1   near full strength almost to the rim, then a cliff

Raising falloff lowers the exponent, and a lower exponent keeps the factor closer to 1 for longer. Measured at a point near the rim of a 60-unit brush, falloff 1 left more height there than falloff 0 did — a broader, flatter dome with a harder edge, not a softer one.

Read it as
Think of it as edge hardness rather than falloff. Low values give you a gentle cone; high values give you a plateau. Both are useful, and neither is what the label suggests.
05

Splat weights

Four shares of one budget

Read sums to 1

A level can carry four terrain textures, no more. Every grid point stores four numbers saying how much of each shows there, so a 16×16 level holds 16 × 16 × 4 = 1024 weights alongside its 256 heights.

The important part is what happens after each dab: the four weights are divided by their total, so they always add up to exactly 1. They are not four independent sliders. They are four shares of one budget.

Which means painting is always subtraction as well as addition. Adding grass to a point necessarily removes rock, sand and snow from it in proportion. There is no way to have two textures both at full strength anywhere, and no setting that would allow it.

before — channel 0 holds the whole budget ch0 1.00 after a dab of channel 1 — everything renormalises ch0 0.85 0.15 The bar is always the same length. Adding to one channel is taking from the others, which is why a texture you painted earlier fades as you work beside it.

Figure 01 — one grid point, four competing weights Asking for a fifth texture is not a setting you have missed; the array is four deep.

Key
Plan your four textures before you paint. Because the weights renormalise, replacing one of the four later means repainting every point that used it — there is no channel you can swap out cleanly once it has been blended into the ground.
06

Strength

The gentler brush

Compare one seventh

Set the strength to 1 and click once with each brush at the same radius, on the same point. The height brush moves the ground by 1.00. The texture brush moves the weight by 0.15.

height brush   delta  = strength × factor
texture brush  weight = strength × factor × 0.15

The texture brush carries a hidden multiplier of 0.15, so at the same slider position it is roughly one seventh as strong as the sculpting brush. This is deliberate — texture wants to build up over several passes rather than land in one — but nothing says so, and the usual first reaction is that the texture brush is not working.

It is working. It is applying fifteen percent of what you asked for, and it will get there in about seven strokes.

Use it
Because the multiplier is fixed, the strength slider on the texture brush is really a rate control. Leave it high and use fewer strokes for hard-edged terrain types; leave it low and build up for a natural blend. Both reach the same place.
Shared settings
Radius and falloff are shared between the two brushes and behave identically — the same (1 − dist/radius) curve, the same backwards falloff from tier one. Only the strength means something different. A radius below the grid spacing paints exactly one point's weights, for the same reason it moved exactly one height.
07

History

What undo leaves out

Diagnose half the work

Watch the history list while you work. Paint a texture and an entry appears. Raise the terrain and nothing appears at all.

ActionSnapshot taken?Appears in history?Undoable
Texture paintYesYesYes
Layer paint (biome, vegetation…)YesYesYes
Raise / LowerNoNoNo
Smooth / FlattenNoNoNo

Measured directly: a sculpting stroke left the history count exactly where it was, and the very next texture stroke raised it by one. The two texture operations snapshot the level before they touch it; the terrain brush writes straight into the height array and returns.

The consequence is worse than "sculpting has no undo", because the history list is not empty — it is full of your texture work. Stepping back through it restores heights from whenever the last texture snapshot happened to be taken, which is not a state you chose and may be many sculpting strokes ago.

Habit
Save before a sculpting pass, and again after one you are happy with. Saving is the only checkpoint sculpting has. Treat the history list as a paint history, because that is what it is.
08

Order of operations

Props do not follow

Order sculpt first

When you place a prop, Atlas reads the terrain height under it and sets the prop's height to match. That happens once, at placement. Nothing re-reads it afterwards.

StepGroundPropResult
Place a prop on flat ground0.000.00Sitting on the surface.
Raise the terrain under it25.000.00Buried 25 units deep.

Lower the ground instead and you get the same problem upside down: the prop hangs in the air with a hole beneath it. Either way the prop keeps the height it was given and the ground moves without it.

There is no re-seat command, so the working order matters more here than anywhere else in the tool: shape the ground first, scatter props second. If you must sculpt afterwards, the props over that area have to be deleted and placed again.

SymptomWhat it meansFix
Props half-sunk into a hillThe ground was raised after they were placed. Delete and re-place them; there is no re-seat.
Props floating over a valleyThe ground was lowered after placement. Same fix, same cause.
Texture brush "does nothing"It applies 0.15 of the strength per stroke. Keep painting, or raise strength.
A texture you painted earlier is fadingWeights renormalise; the neighbours took its share. Expected. Repaint it, or plan the four channels first.
Undo restored the wrong terrainIt restored the last texture snapshot. Save around sculpting passes instead.
09

Load and unload

Streaming is a boolean

Read one flag

A level is divided into a grid of chunks — a new one arrives as 2×2 — and each carries a Loaded flag you can toggle. Unload one and watch what happens to the props inside it.

Nothing happens to them. Unloading a chunk sets its flag to false and writes a log line. The props stay in the chunk, the level still holds every one of them, and no memory is released because nothing was ever separately held.

That is not a criticism — the flag is meaningful. It is a declaration, carried into the exported data, telling whatever loads your world which chunks should start resident. It is a value you are authoring, not an operation you are performing.

Key
Read Loaded as "should this chunk be resident when the world starts", not as "is this chunk in memory right now". Toggling it is authoring, and it costs nothing at edit time however large the level is.
Stream All
The Stream All button toggles every chunk rather than loading them all — press it twice and you are back where you started, press it once on a mixed set and you have inverted it. Check the list afterwards rather than assuming.
10

Level of detail

LODs are records

Derive three numbers

Generating LODs writes three rows and changes nothing else. Your props are all still there, at full count, exactly as they were.

props on the level: 12

LOD 1   factor 1/2   6
LOD 2   factor 1/3   4
LOD 3   factor 1/4   3

Each row is base props ÷ (level + 1), rounded down. The tool's own summary is candid about it — it does not mutate props — and the numbers exist so an exporter or the game can act on them later. No mesh is simplified and no prop is removed at any point inside Atlas.

Which makes the records a snapshot of a count, and snapshots go stale. Add twelve more props after generating and the rows still describe the twelve you had: verified, the LOD 1 row stayed at 6 while the level grew to 24.

Habit
Generate LODs last, after all prop work, and regenerate after any change. They are cheap to produce and there is no signal at all when they no longer match the level.
11

The failure that costs work

The export walks chunks

Diagnose silent

A prop lives in two places at once. It is in the level's own list, which is what the viewport draws and what the save file records. It is also filed into whichever chunk contains its position, at the moment you place it.

The game export reads the second list. It walks every chunk and writes out that chunk's props, because that is the shape the game wants. As long as the two lists agree, nobody needs to know there are two.

Re-dividing the level is where they stop agreeing. Rebuilding the chunk grid clears the old chunks entirely, taking their filed props with them, and builds fresh empty ones. Nothing walks the level's prop list to re-file them.

after placing — the two lists agree level.Props 6 chunk.LocalProps 6 → export writes 6 after re-chunking — only one list survived level.Props 6 — still drawn, still saved chunk.LocalProps 0 → export writes 0, and says success Measured: 2831 bytes describing four chunks and no props, for a level showing six.

Figure 01 — two lists, one exported Everything you can see keeps working, which is what makes this expensive to find late.

Every visible signal stays healthy. The viewport draws six props, the save file holds six props, reopening the project shows six props, and the export returns a success with a real file in it. The only place the loss is observable is inside that file.

Also
A prop placed outside every chunk is filed into chunk 0 as a fallback, keeping its real coordinates. It exports as chunk 0's content while sitting nowhere near it — harmless if you know, confusing if you are reading the file to work out why something is in the wrong place.
12

The artefact

The order that works

Ship one sequence

Everything on this page and the two below it reduces to a working order. Each step invalidates something produced by an earlier one, so doing them in this sequence means never having to redo any of it.

Order

Level to game data

  1. Set Size and Resolution, and work out the spacing. it decides the smallest feature you can sculpt, and changing it later rescales everything
  2. Divide into chunks now, at the granularity you want. re-chunking later orphans every prop already placed
  3. Sculpt the terrain, saving around each pass. sculpting records no undo, so a save is the only checkpoint it has
  4. Paint your four texture channels. painting does snapshot, so this is the part undo genuinely covers
  5. Place props last of the authoring steps. their height is snapped once and never re-read, so the ground must be final
  6. Generate LODs, then export. the records are a snapshot of the prop count, so any later prop work makes them wrong
SymptomWhat it meansFix
Exported world has no propsChunks were rebuilt after the props were placed. Re-place them, or chunk before placing. Check the file, not the viewport.
LOD counts do not match the levelRecords are a snapshot from when you generated them. Regenerate after any prop change.
Unloading a chunk changed nothingWorking as designed — it sets a flag. Nothing to fix. Read it as authoring, not performance.
Stream All made things worseIt toggles rather than loads. Press again, or set the flags individually.
A prop exports under the wrong chunkIt sits outside every chunk and fell back to chunk 0. Move it inside the grid, or accept the labelling.
Before you ship
Open the exported file and count something. It is the only check that covers the failure this page exists for, it takes ten seconds, and every other signal in the tool will look correct while it is wrong.
Where this actually goes

The exported file is real, and it is not yet a route into the game.

Heightmaps, chunks and LOD records have no counterpart among the game's definition types — maps are generated from a biome and a topography rather than authored. What Atlas's model does match is a parcel: the game ships twelve hand-authored map pieces whose tiles and entities line up almost one for one with TerrainData and PropPlacement, and it already scans active mods for a Parcels/ folder and places what it finds.

The obstacle is that it scans its own native mods folder, while AshForge mods live in the loader's root — so the route needs a loader patch that has not been made. Until then, treat this export as a record of your level rather than a delivery of it. ⚠ It also lands in the tool's own output folder, which nothing scans. See ashforge_shared/docs/TOOL_ROUTES_TRIAGE.md.

Course complete

What you now know

Check yourself

  • Terrain is a Resolution × Resolution lattice of heights stretched over Size units of ground.
  • Spacing is Size / (Resolution − 1)17.07 on a fresh level, because 16 points have 15 gaps.
  • The default brush radius of 10 is smaller than that, so a first click moves exactly one point and makes a spike.
  • The click is rounded to the nearest grid point, so the centre always gets the full strength.
  • You cannot sculpt a feature smaller than the spacing; raise Resolution, or accept it.
  • Smooth and flatten ignore the Strength slider entirely. Only raise and lower read it.
  • Flatten moves exactly twice as far as smooth.
  • Higher falloff means a harder edge, not a softer one.
  • Spacing comes from SizeX for both axes, so non-square levels distort the brush into an ellipse.
  • Every grid point carries four texture weights as well as a height — 1024 weights on a 16×16 level.
  • The weights renormalise to sum to 1, so painting one channel always takes from the other three.
  • Four is the hard limit, and a channel cannot be swapped out cleanly once blended.
  • The texture brush multiplies strength by 0.15 — about one seventh of the height brush at the same setting.
  • Radius and falloff are shared and behave identically, including the backwards falloff.
  • Sculpting records no undo history. Texture and layer painting do.
  • The history list is a paint history, so undo restores heights from the last texture snapshot — not from the stroke you meant.
  • Props are snapped to the ground once, at placement, and never re-seated. Sculpt first, place second.
  • A level divides into a grid of chunks; a new one arrives as 2×2.
  • Load and Unload set a boolean. Nothing is freed, nothing is fetched, no prop moves.
  • The flag is authoring: it declares which chunks should start resident in the exported world.
  • Generating LODs writes records, one per level, at base ÷ (level + 1). Nothing is decimated.
  • Those records are a snapshot of a count and go stale the moment you add a prop.
  • A prop is held in the level's list and filed into a chunk when placed.
  • Re-chunking clears the filed copies and never re-files them, and the export walks the chunks — so it ships no props while reporting success.
  • Chunk before you place; sculpt before you place; LOD last; then open the file and count.

That is Atlas. ⛔ Its heightmaps have no counterpart in the game — the route for its content is parcels, and that needs a loader change that has not been made.