Skip to content
Tuxedo CatSTUDIO
Menu

LineDelivery V1 interchange

Review draft. This source page has not completed website editorial and release-specific verification.

LineDelivery interchange uses schema DialogueDirector.LineDelivery, schemaVersion: 1. The document records ownerDialogueId, ownerTextIdentityGuid, exported dataTable.assetPath location metadata, and rows. The owner pair is the semantic Dialogue identity scope (StableId, GUID, and TextIdentityGuid together); the source table path is not a required destination. Each row is identified by textId (FDialogueTextId.Value); native DataTable FName row names are internal and are not serialized.

Rows contain textId, deliveryMode, writtenText, writtenFormatArguments, captionText, captionFormatArguments, nullable voiceAsset, defaultCaptionTiming, and ordered cultureTimingOverrides. Delivery tokens are WrittenOnly, CaptionOnly, VoiceOnly, and VoiceAndCaption. Timing values are finite nonnegative Numbers. Culture names use Unreal culture identifiers; canonical duplicate cultures are rejected. Voice modes require a registered asset whose class derives from USoundBase; preflight reads Asset Registry class metadata without loading the referenced voice object. Row export is sorted by TextId.Value; physical DataTable iteration order has no authoring meaning.

Written and Caption text use the existing Dialogue localization identity helper, scoped by the owning Definition’s TextIdentityGuid and row TextId, with distinct Written/Caption keys. Format argument declarations remain separate for each source. Culture timing changes timing data only and does not introduce another TextId. Nonempty WrittenText and CaptionText are translator-facing surfaces; empty overrides do not create duplicate localization entries. The host project gathers and translates these fields through Unreal localization. See Localization.md.

The importer supports UpdateExisting, CreateNewPreservingIdentity, and CreateNewIndependentClone. Update requires an explicit current owner and its actual LineDelivery table, with exact DialogueId StableId/GUID and TextIdentityGuid equality. Preserving creation requires a matching owner that has no other table. Independent clone takes the preplanned destination Dialogue root identity and an explicit distinct destination table path; it preserves TextIds and authored rows while applying localization under the planned TextIdentityGuid. Create modes require caller destination paths; serialized source path is metadata only. A table referenced by another Definition cannot be adopted.

On update, rows match by TextId; existing internal row names are retained for matched rows, removed semantic rows are removed, and new rows receive opaque collision-free names. New tables process rows canonically by TextId and use deterministic opaque row names. Row names are never semantic identity. Independent clone can produce an unreferenced companion table before the planned Definition is created; if later Definition creation fails, the orchestration caller can use CleanupCreatedTable on the successful creation result. Cleanup refuses tables that are already owned or saved.

Application does not save packages. The Content Browser action is available only for DataTables with the Dialogue LineDelivery row structure. The focused surface resolves a unique owning DialogueDefinition before export or mutation; shared and unowned tables are reported without guessing an owner. Independent companion cloning is exposed through the owning Definition’s Data & Interchange workflow, not as a standalone LineDelivery clone. See DataInterchangeTooling.md. PO operations are owned by Unreal; see Localization.md. NAS/Perforce operations are outside this workflow.