Skip to Content
ScriptingAnimated Asset Authoring

Animate a mapped prop

A streamed drawable is not enough to start an animation. The model, Blender action, animation entry, clip, clip dictionary and YTYP archetype must agree. This guide covers both material UV animation and bone-driven prop animation; start with an owned mesh from the asset-authoring lab.

These are authoring and acceptance instructions, not a claim that a downloadable animated fixture has passed an in-game test. Work in a copy of the project and retain the static working export as a rollback.

Material UV animation

Use a simple sign named lab_sign with a texture whose horizontal edges tile. The mesh stays still while the material’s texture coordinates move.

  1. In Sollumz Tools, open Animations and create a Clip Dictionary Template. Name the dictionary anim@lab_sign.
  2. Under its Animations container, create an Animation; under its Clips container, create a Clip. Give both a name that identifies lab_sign.
  3. Set the Animation’s Hash to the drawable/object name. Select Materials as its target and choose the exact material assigned to the sign.
  4. Set the Clip’s Hash to the same object name and its Name to lab_sign.clip. Add a Linked Animation entry referencing the Animation. Set its frame range to the keyed interval.
  5. In the material’s Sollumz Animation Tracks, add a UV Transformation. Key the X/Y translation at the start and end of the interval. For a repeating horizontal scroll, move by one full tile across the interval rather than relying on an arbitrary offset.
  6. Assign the resulting material UV Action to the Animation. An action visible in Blender but not assigned here will not become the intended exported track.
  7. Convert the prop to a Drawable if necessary. Recheck or recalculate the Clip Hash after conversion or renaming.

The upstream clip workflow uses duration in seconds equal to the exported frame span divided by 30. A 60-frame span is two seconds. Match the clip duration, linked frame range and action keys; do not assume changing Blender’s preview frame rate rewrites every exported setting.

Export the Drawable and Clip Dictionary. In a YTYP, create the drawable’s archetype and set Clip Dictionary to anim@lab_sign, without an invented filesystem path. Enable UV Anims (YCD) and Auto Start Anim on that archetype.

Bone-driven prop animation

For a moving sign panel or another rigid prop, use an armature-backed drawable instead of a material target.

  1. Create an Armature and set its Sollumz type to Drawable. Use a stable drawable name such as lab_panel.
  2. Convert and parent the mesh into that drawable hierarchy. Add a Copy Transforms constraint targeting the armature and the intended bone.
  3. Create a separate clip dictionary, such as anim@lab_panel, with an Animation and Clip.
  4. Target the Animation at the Drawable. Set the Animation Hash and Clip Hash to its name, and use lab_panel.clip for the clip name.
  5. Add the Linked Animation entry, frame range and duration. Enter Pose Mode to key the bone, then assign that pose Action to the Animation.
  6. Export both the drawable and dictionary. Point the YTYP archetype at anim@lab_panel; enable Has Anims (YCD) and Auto Start Anim.

An object-mode movement of the outer hierarchy is not a substitute for the intended bone track. Check the actual action and target before diagnosing a game-side failure. Animated visuals also do not establish that the collision follows correctly: inspect collision independently.

Package the result

A local map resource can contain the exported .ydr, optional external .ytd, .ycd, .ytyp and placement .ymap files in stream/. For a YTYP named lab_sign.ytyp, use:

-- fxmanifest.lua fx_version 'cerulean' game 'gta5' this_is_a_map 'yes' files { 'stream/lab_sign.ytyp' } data_file 'DLC_ITYP_REQUEST' 'stream/lab_sign.ytyp'

Use the exact exported filenames. Loading a different YTYP with the same archetype name can make an otherwise correct edit appear ineffective. Follow streaming and registration and keep the target game track/build in your test record.

SymptomCheck
Animation plays in Blender, not in the exported assetAnimation target and assigned Action; linked frame range; exported YCD present.
Prop appears but stays staticYTYP Clip Dictionary name and the correct UV/prop animation flag; Auto Start Anim.
Wrong surface scrollsMaterial chosen as the Animation target and material assignment on the mesh.
Bone moves but mesh does notCopy Transforms target/bone and drawable hierarchy.
Loop jumps or runs at the wrong speedBoundary keys, interpolation, frame span and clip duration.
Animation works only after an unrelated resource restartDuplicate archetype names, stale exports, or another resource registering conflicting data.

For acceptance, record Blender/Sollumz versions, exported names, FXServer artifact and client track/build. Test a clean load, resource restart, leaving/re-entering streaming range and a second client. Check collisions and LOD transitions separately. Keep an actual capture of the working result; a browser or file-header test cannot verify engine animation.

Sources and next steps

The workflow is based on Cfx.re asset series Part 7 . Continue with door authoring, collision and LOD diagnosis, or asset-library setup.