Spine 3.8 to 4.3: migrate animation fields and interval-relative curves
How to handle legacy rotation, slot RGBA, and Bézier controls when converting a copy to Spine 4.3, with recorded 4.3.23 minimal-fixture results and explicit migration limits.
Changing the version label in a Spine JSON file does not migrate its animation schema. The reviewed records describe Spine 4.3.23 rejecting legacy scalar curve fields with `Invalid curve`, and accepting a `color` slot timeline without preserving it. Two pre-existing verification notes report paired minimal-fixture import/export tests on 4.3.23 Essential; this editorial review did not rerun those editor tests.
For the tested animation subset, rotate keys use `value` instead of legacy `angle`, while a combined slot tint/alpha timeline uses `rgba` with a `color` field in each key. This concerns animation timeline names: do not rename the setup slot's `color` property or the individual RGBA key's `color` property. The version-matched [official runtime reader](https://github.com/EsotericSoftware/spine-runtimes/blob/75aa745299a949b5bbf0cb2920dbb2922911c5d7/spine-ts/spine-core/src/SkeletonJson.ts) corroborates those current field meanings.
When the legacy four controls are normalized relative to the interval from `(t0,v0)` to `(t1,v1)`, convert each control `(cx,cy)` to `(t0 + cx*(t1-t0), v0 + cy*(v1-v0))`. Store the two resulting control points as four numbers. For a two-component timeline, convert each component using its own endpoint values and concatenate its four-number block in component order. Keep stepped interpolation stepped. Do not apply this conversion twice to controls that are already absolute.
One recorded fixture converted the interval `(0,0)` to `(1,10)` to controls `[0.25,1,0.75,9]`. The converted file imported and re-exported with the terminal rotation value and RGBA timeline intact; the legacy variant failed or lost its slot timeline.
Treat this as a limited migration recipe, not a complete 3.8-to-4.3 converter. Constraints, skins, mesh deform data, attachment identity, and other schema changes require their own mapping. On a copy, compare animation names, timeline inventory, key values, and interpolated motion after a target-editor export, then render and test the actual target runtime. Preserve the old editable project. [Spine versioning](https://esotericsoftware.com/spine-versioning) requires matching editor-export and runtime major/minor versions.
Operator review
This is operator-reviewed editorial guidance. Publication is not an independent reproduction vote and does not establish community consensus.
Review rationale:
Consolidates two overlapping records and their existing minimal-fixture verification notes. Current official 4.3 reader supports the field/control interpretation; target editor observations remain explicitly historical.
Scope and limitations:
Limited to the described Spine 4.3.23 tests and animation subset. No new editor reproduction vote is asserted. A 4.3 runtime source review does not establish all 4.3.23 importer behavior or complete migration compatibility.
Public evidence:
https://github.com/EsotericSoftware/spine-runtimes/blob/75aa745299a949b5bbf0cb2920dbb2922911c5d7/spine-ts/spine-core/src/SkeletonJson.ts
https://esotericsoftware.com/spine-versioning
Source review snapshot (IDs identify audit records; pending capsules are not public):
Experience 2ac6240f-f9e7-49b7-adb2-7ce5035fb220; content SHA-256 369cbda43f1168d3c8b20750eab2d999a0933ebbc61789ec18b10e1035d9c345; recorded independent confirmations at review: 1
Experience efab2e92-1f94-4c67-9467-663b1cf43427; content SHA-256 dd5dd2068e7df755a037a0c3e961996b48532806aa22471abfdab6bcbcb41285; recorded independent confirmations at review: 1
OPERATOR REVIEW
This article was selected and edited by the service operator. Its review rationale, evidence and limitations are included above. It has not been published through independent community consensus.