ASequence / Accelerated Accelerated · 12 modules

AshForge Sequence · the whole tool, one course

Two keys, a clock,
and substitutions nothing tells you about.

Sequence authors cutscenes: keyframes on a timeline, props staged in a scene, and a render at the end. It substitutes quietly for anything it cannot find, so a scene that looks finished can be built largely from fallbacks.

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

What it is

A timeline. Keys hold values at times, the gaps between them are interpolated, and props populate the shot.

Modules 1–4 are keys and timing, 5–8 are staging, 9–12 are output.

The honest limit

A cutscene can never ship as data. The game reads three folders from a mod and none of them carries a timeline — Sequence's route to the game is a compiled assembly, not content.

Worth knowing before you plan a mod around it. Module 9 onward.

Why this is one course

Sequence 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

The model

A key and a clock

Read five curves

To find the camera at a moment, the tool sorts the keys by time, finds the pair the playhead sits between, and turns that into a number from 0 to 1: how far through the segment you are. Every other value follows that one number — position, rotation, field of view and shake alike.

The straight fraction of elapsed time is only the starting point. It is passed through the departing key's Ease first, and there are five to choose from.

EaseCurveAt the halfway pointFeels like
lineart0.50Constant speed. Mechanical.
in0.25Starts slow, arrives fast.
out1 − (1−t)²0.75Starts fast, settles.
inout (default)smoothstep0.50Eases both ends. The safe one.
hold0, always0.00Does not move at all.
Key
Because everything rides the eased number, a zoom is eased too. A 20° to 60° field-of-view change with in easing is only a quarter done at the halfway point — measured, 30.0, where linear time would give you 40. If a zoom feels like it lands late, the ease is why, not the timing.
Typos are silent
An ease name the tool does not recognise falls through to inout without complaint. There is no error and no visible difference from choosing it deliberately.
02

Ownership

Which key owns what

Do departing vs arriving

Build two keys ten seconds apart, put the playhead at five, and change the ease on each key in turn. Only one of them moves the camera.

ChangeCamera at t=5Effect
Ease in on the departing keyx = 20.31Real. A quarter of the way.
Ease linear on the departing keyx = 50.00Real. Halfway.
Any ease on the arriving keyunchangedNo effect at all.

The panel calls it ease out of this key, which is exactly right and easy to read past. A key's ease governs the segment that starts there. It says nothing about how the camera arrives at it — that was decided by the key before.

So to soften the end of a move, you change the ease on the key you are moving from, and set it to out. Changing the destination key does nothing, which is the more natural thing to try and the reason this comes first.

key A — departing key B — arriving this segment A decides the whole segment: Ease · start position · rotation start FOV · start shake its ease is "ease OUT of this key" B decides only: Cut · end position · rotation end FOV · end shake its EASE is ignored for this segment

Figure 01 — the split down the middle of a segment The last key of a track is never a departing key, so its ease is dead in every segment.

03

Hard cuts

Two ways to cut

Compare opposite keys

There are two controls that produce a held shot followed by a snap, and they sit on opposite ends of the same segment.

ControlLives onWhat it doesCamera at t=9.9 of 10
Ease holdthe departing keyFreezes the segment at 0.still at key A
Cut checkboxthe arriving keyForces the segment to 0.still at key A

Both were measured on a ten-second move from x=0 to x=100: at 9.9 seconds the camera was still exactly at zero, and at 10 seconds it was at 100. A held shot, then a single-frame snap.

They are interchangeable in effect and not in authoring. Cut is the one to reach for, because it describes the edit the way an editor would — "cut to this shot" — and it travels with the shot it introduces. hold is useful when you want the previous shot to sit still for a beat and the reason belongs to that shot rather than the next one.

Key
If a cut is landing on the wrong frame, check which key you put it on. A Cut on key B ends the shot at B's time; a hold on key A does the same thing but is set two keys away from where the change appears in the timeline.
Outside the keys
Before the first key the camera holds the first shot; after the last it holds the last. So a cutscene Duration longer than your final key is a still frame, not a black screen — useful for letting a line of dialogue finish.
04

Position

The path is a curve

Diagnose four keys at once

The camera does not travel in a straight line between two keys. Its position is a Catmull-Rom spline, which passes exactly through every key and curves between them, using the keys on either side as the shape of the curve.

With three keys at (0,0), (50,40) and (100,0), the straight-line halfway point of the first segment would be (25, 20). Measured, the camera was at (21.9, 22.5) — noticeably off the line, bowed by the pull of the key that comes after.

This is what makes camera moves look filmed rather than driven, and it is also why a camera can swing wide of something you framed it against. If a move clips a wall it never should have reached, the cause is usually the key beyond the one you were watching.

Diagnosing a clip
A spline is shaped by four keys at a time: the two you are between, plus one on each side. Moving a key you are not looking at will change a segment you are. When a path bulges the wrong way, look at the neighbours, not the pair.
SymptomWhat it meansFix
Ease setting appears to do nothingIt is on the last key, or on the arriving key of the segment. Set it on the key the move starts from.
Camera does not move at all in a segmentThe departing key is set to hold, or the arriving key has Cut. Both are deliberate holds; clear whichever you did not intend.
A zoom lands lateFOV rides the eased curve, not the clock. Use linear on that key, or move the key.
Camera clips scenery mid-moveThe spline bowed toward a neighbouring key. Adjust the neighbour, or add a key to straighten the segment.
Shot freezes at the end and staysDuration runs past the last key. Expected. Shorten Duration or add a key.
05

Set dressing

Props, and the one with no mesh

Read six kinds

A prop has a Kind, and five of the kinds are shapes: box, sphere, cylinder, capsule, plane. The sixth is different in a way worth understanding early.

KindMakes a mesh?What it is for
Box, Sphere, Cylinder, Capsule, PlaneYes Blocking out a set: walls, crates, ground planes.
MarkerNo — none, ever A named point. An actor's spot, a focus target, a spawn.
Anything unrecognisedYes — a Box Forward compatibility, so nothing vanishes.

A Marker is not a small or invisible prop — it produces no geometry at all, and still produces none if you give it an asset path. It exists to be aimed at: you put one where an actor will stand, then point a camera key's look-at at it, and the shot is composed against a thing the game will never render.

The unrecognised case matters more than it looks. A scene saved by a newer version of the tool, carrying a prop kind this one has never heard of, opens as a grey box in the right place rather than dropping the prop. Your composition survives a version gap with a placeholder instead of a hole.

Key
Markers cost nothing and travel with the scene. Place them for anything the camera needs to know about — a face, a doorway, the point an explosion happens — because a look-at aimed at a marker keeps working when the set around it changes.
06

Assets

Kind is your fallback

Compose choose it deliberately

Give a prop an asset path — a dec-style path like Models/Items/Wood, written the way the game refers to its own content, with no file extension — and it stages that asset instead of a primitive.

Unless it cannot. The base-game pack is opt-in and is off until you mount it, so on a fresh checkout every asset path falls through. What you get is the prop's Kind, and this is the part worth internalising: it is not a generic placeholder. A prop set to Sphere with an asset path falls back to a sphere, verified.

Which turns Kind from dead metadata into a decision. Once you set an asset path it is easy to stop thinking about the shape underneath — but that shape is what you and everyone without the game will actually see.

prop has an AssetPath? is the content pack mounted AND enabled? stage the game asset stage the primitive for the prop's Kind no on either question → the lower path. Marker returns nothing on BOTH paths. Measured with the pack off: Kind "Sphere" + an asset path produced a SphereMesh, not a box.

Figure 01 — two questions, one mesh Neither "no" is reported anywhere; both simply take the other branch.

Habit
When you set an asset path, set the Kind to the nearest shape at roughly the right scale. It costs one dropdown and it is what your scene looks like to anyone without the game — including you, until you mount it.
07

Diagnosis

The silent substitutions

Recognise four of them

The stage substitutes in four places. None of them log, none of them mark the object, and all of them look exactly like a deliberate choice.

When this is missingYou silently getHow to tell
The game assetThe prop's Kind primitive, correctly placed. Check whether the content pack is mounted.
The material setThe prop's flat colour. Check the Vault library is on and the set still exists.
The environment presetClear Noon. Compare the preset name against the shipped list.
The parcelAn empty stage. Props still appear; only the set is absent.

The environment one is the easiest to misread. Ask for a preset the tool does not ship — a typo, or one removed since the scene was made — and you get Clear Noon, which is also the default a brand-new cutscene starts on. A scene whose careful night lighting has quietly become midday is indistinguishable from a scene nobody set an environment on.

The material one is subtler still. A prop stores its material as the set's hash, not its name, because names in a real library are not unique — several sets share one. Storing a name would mean "the first set called this", so re-indexing the library could hand a saved scene a different material than the one it was composed with. The hash avoids that, and the cost is that a missing set gives you a flat colour with nothing readable to search for.

The pattern
Every one of these is a preference, not a requirement — which is what lets a scene open anywhere. The trade is that "this looks wrong" and "this is missing" are the same picture, so when a shot looks off, check what is mounted before you start re-authoring it.
08

Places and effects

A place is not a prop

Compose two exceptions

Two things on the stage are deliberately not ordinary props, and both separations pay off the moment a scene gets real.

A parcel is a whole prefab place — the shipped duplex is hundreds of placements — staged by name under its own root. It is not in the prop list, and it should not be: a few hundred rows of building parts would bury the four props you positioned by hand. Swap the parcel and your props stay exactly where they were, verified.

A VFX prop carries a time and a duration, and no other prop does. That is the whole reason effects are a separate kind rather than another asset path: a muzzle flash happens on a beat; a crate simply is. A duration of zero means it never stops emitting — right for smoke drifting through a shot, wrong for an impact.

SymptomWhat it meansFix
Everything is grey shapesThe content pack is off, so every asset path fell through. Mount it, or accept the blockout — the composition is still correct.
A prop is the wrong shape without the gameIts Kind was never set to match the asset. Set Kind to the nearest primitive at the right scale.
A prop is invisible entirelyIt is a Marker. Markers never have geometry. Working as designed — aim a look-at at it.
Night scene opens at middayThe preset name is not one the tool ships. Re-pick from the list; the fallback is always Clear Noon.
A prop lost its materialThe library is off, or the set's hash no longer resolves. Re-enable the library; otherwise re-pick the set.
An effect runs foreverDuration is 0, which means never stop. Give it a duration.
09

The two buttons

Two exports, one scene

Compare 2648 vs 689

Take one cutscene — a camera track, a lamp called KeyLight, a prop called SignpostProp, the duplex parcel and a Clear Noon environment — and press both export buttons. Then search each file for those names.

In the sceneRuntime exportBundle export
Tracks and keysPresentPresent
LampsPresentAbsent
Props and markersPresentAbsent
ParcelPresentAbsent
EnvironmentPresentAbsent
File size2648 chars689 chars

The runtime export serialises the cutscene whole — it is the model, written out. The bundle is a deliberately reduced projection: name, duration, and for each track its name, type and keys. It is a timing document, and a good one, but the stage is not in it.

Neither button says so. They log the same success and hand back a path, and the smaller file is only obviously smaller if you go looking. A quarter of the size is the giveaway.

Which to use
Runtime when something needs to reproduce the shot — the game playing your cutscene, or another tool staging it. Bundle when something needs the beats and will supply its own world. If you are unsure, runtime is the one that cannot lose anything.
Exports accumulate
Every press writes a new timestamped file and overwrites nothing. After an afternoon the output folder holds a dozen of each, and nothing in the tool marks which one is current. The newest timestamp is your only clue, so clear the folder before a real export if anyone else will read it.
Where this actually goes

A cutscene is not content the game can load, and no export on this page changes that.

The game reads exactly three folders from a mod — Dec/, Assembly/ and Parcels/ — and there is no cutscene, timeline or camera definition among its 69 definition types. The nearest-sounding candidate carries a label and a description and nothing else. So both files described above are real and useful between tools and to your own code; neither is a route into the game.

Sequence's route is an Assembly/ — a cutscene reaches a player as code that plays it, not as data the game reads. That is a settled verdict rather than pending work; see ashforge_shared/docs/TOOL_ROUTES_TRIAGE.md. ⚠ Both exports also land in the tool's own output folder, which nothing else scans.

10

Validation

What Validate cannot see

Diagnose shape, not content

Validate answers one question: is this the right shape? It is worth knowing exactly what that covers, because the name promises a great deal more.

Validate catchesValidate does not catch
A project with no cutscenesA parcel name nothing can resolve
A cutscene with zero durationAn asset path that loads nothing
A cutscene with no tracksA material set that no longer exists
A track with no keysAn ease name the tool does not recognise
 A key at 999s in an eight-second cutscene

That right-hand column is not hypothetical. A cutscene was built carrying every one of those five problems at once and validation returned clean — no issues, no warnings about any of them.

Which follows directly from tier two. The stage substitutes silently for everything it cannot find, so by the time validation looks, there is nothing to find wrong: the asset already fell back to a primitive, the preset already became Clear Noon, the ease name already became inout. A validator downstream of a silent fallback can only ever see success.

So use it for what it is
Validate is a structural check before export — it catches the empty track you forgot and the duration you zeroed. It is not a content check and cannot be one. The content check is opening the shot with your set mounted and looking at it, which no button replaces.
11

Frames

Rendering frames

Ship deterministic

The one output you can judge with your eyes: a folder of PNGs, one per frame, rendered by stepping the playhead and posing the camera for exactly that instant.

frames = ceil(Duration × fps)

8s at 24 fps   → 192
10s at 30 fps  → 300
0.5s at 24 fps → 12

Note what drives the count. It is the cutscene's Duration, not the time of its last key — so the still frame you deliberately left at the end, from tier one, costs real frames and real time. If a render is taking longer than the action lasts, that is why.

The render is deterministic by design: the playhead is stepped to frame / fps and posed there, rather than played in real time, so the result does not depend on how fast your machine drew the previous frame. The same cutscene rendered twice gives the same frames.

Two guards
A cutscene with no duration and a frame rate of zero or less are both refused up front with a message rather than producing an empty folder. Those are the only two ways the render declines — everything else about the shot, including a stage full of substitutions, renders exactly as it looks in the viewport.
It borrows the preview
Rendering takes over the preview viewport — its size, its update mode and which camera is current — and restores all three afterwards. Do not be alarmed by the preview changing shape mid-render, and let it finish rather than killing the tool, so the restore runs.
12

The habit

The order that works

Ship five steps
Before you hand it over

Cutscene to file

  1. Set the mod name. it becomes the filename of every export, and the default is not yours
  2. Mount the content pack and library, then watch the shot once. this is the only content check there is; validation cannot see substitutions
  3. Press Validate for the structural problems. it catches the empty track and the zeroed duration, which are easy to miss
  4. Clear the output folder, then export. exports accumulate with timestamps and nothing marks which is current
  5. Choose runtime unless you know the consumer supplies its own world. the bundle silently omits lamps, props, parcel and environment
SymptomWhat it meansFix
The shot plays with no setA bundle was shipped where a runtime export was needed. Re-export as runtime.
Validate passes but the shot looks wrongWorking as designed — it checks shape, not content. Mount your content and watch it; see tier two.
Nobody knows which export is currentEvery press wrote a new timestamped file. Clear the folder, export once, hand over one file.
The render is far longer than the actionFrames follow Duration, not the last key. Shorten Duration, or accept the held tail.
The render refused to startZero duration, or a frame rate of zero or less. The only two refusals; both are reported.
Exported files are named for nobodyThe mod name was never set. Set it and export again.

Course complete

What you now know

Check yourself

  • The camera at any moment comes from the pair of keys the playhead sits between, reduced to one number from 0 to 1.
  • Position, rotation, field of view and shake all ride that same eased number.
  • Ease belongs to the departing key — "ease out of this key" — so the last key's ease can never do anything.
  • The five eases are linear, in, out, inout (the default) and hold; an unrecognised name silently becomes inout.
  • Cut belongs to the arriving key, and produces the same held-then-snap as hold on the departing one.
  • Outside the keyed range the camera holds the first or last shot, so extra Duration is a still frame.
  • Position is a Catmull-Rom spline, shaped by four keys at a time, so paths bow and neighbours matter.
  • A look-at target is only interpolated when both keys carry one.
  • A cutscene owns props, lamps, a parcel and an environment, and none of them are required for it to open.
  • Five prop kinds are shapes; a Marker has no mesh at all, even with an asset path.
  • An unrecognised Kind becomes a Box, so a scene from a newer tool loses nothing.
  • Base-game content is opt-in and off by default, so asset paths fall through until you mount it.
  • Kind is the fallback shape for a prop with an asset path — a Sphere falls back to a sphere, not a generic box.
  • A material set is stored as a hash, not a name, because library names are not unique; a missing one falls back to the prop's colour.
  • An unknown environment preset silently becomes Clear Noon, which is also the default — the two are indistinguishable.
  • A parcel is a place, not a prop; swapping it leaves hand-placed props alone.
  • A VFX prop carries a start time and duration; duration 0 means it never stops.
  • Runtime export serialises the cutscene whole — tracks, lamps, props, parcel and environment.
  • Bundle export keeps name, duration and tracks, and silently omits the entire stage — 689 characters against the runtime's 2648 for the same scene.
  • Both report success identically, so the choice is yours to get right.
  • Every export is timestamped and accumulates; nothing marks which file is current.
  • Validate checks shape, not content: no cutscenes, zero duration, no tracks, no keys.
  • A scene with an unresolvable parcel, a dead asset path, a missing material, an invalid ease and a key past the end validates clean — because the stage already substituted for all of them.
  • Frames are ceil(Duration × fps), driven by Duration rather than the last key, and the render is deterministic.
  • The render refuses only on zero duration or a non-positive frame rate.

That is Sequence. ⛔ Its output is a render and a record, not shippable content — the value is in previsualising something you will then build in code.