Stage config spec changelog

Changes to the format of stage config JSON files will be documented here.

The format is based on Keep a Changelog, and this spec adheres to Semantic Versioning.

[0.6.0] - 2022-12-03 - Rolled Out v0.5.7

This released with Rolled Out! v0.5.7.


  • Mesh node data: goal_volume and warp_distance were added to make passing through a mesh finish the stage

  • Mesh node data: gravity_volume and gravity_dir were added to change gravity direction (permanently, like gravity floors)


  • Quaternions are now normalized when loading a stage config

[0.5.0] - 2022-06-25 - Rolled Out v0.5.6

This released with Rolled Out! v0.5.6.


  • Mesh node data: trigger_volume was added to make a mesh act as an invisible trigger, even if it is not marked as a wind or fallout volume. This can be used in conjunction with activate_touch_platform_groups to start animations when entering a trigger volume.

  • Bonus stages can be marked with "bonus": true on the root object of a config

  • "timer_seconds": null can be used to make stages with no time limits

[0.4.0] - 2021-11-16 - Rolled Out v0.5.5

This released with Rolled Out! v0.5.5.


  • Axis string: none has been deprecated (it works identically to the y axis when used as the seesaw axis)

[0.3.0] - 2021-03-22 - Rolled Out v0.5.0

This released with Rolled Out! v0.5.0.


  • conveyor_uv_velocity was added as a mesh node option (of type Vector2), for conveyors that should follow a mesh’s UVs

  • animations was added as a material option (of type Array[Identifier String])

  • Animations with channels that reference paths like parameter_overrides.scalar.metallic_multiplier or parameter_overrides.vector2.tex_coord_offset.y can now be used to animate materials

  • scalar, vector2, and vector3 properties are supported


  • conveyor_velocity was renamed to conveyor_local_velocity

  • Touch platforms have been overhauled
    • In short: instead of touch platforms groups being connected to mesh nodes, they can now be connected to any animation (including material animations). Mesh nodes can specify an array of which touch platform groups they should activate.

    • Touch platform group object > animations (Array[Identifier String], default []) has been added

    • Touch platform group object > playback_speed (Float, default 1.0) has been added

    • Touch platform group object > ping_pong (Boolean, default false) has been added

    • Touch platform group object > playback_type has been removed (use ping_pong for ping pong animations, and define looping animations by setting loop_zone on animation objects.

    • Touch platform group object > name (Identifier String) has been added otherwise specify on your animations whether they should play once or loop with a loop zone)

    • Touch platform group object > nodes has been removed (and replaced with the below bullet point)

    • Mesh nodes now specify themselves what touch platform groups they activate with a activate_touch_platform_groups array

    • Mesh node touches_enabled has been removed


  • Switch node data Object > link_nodes was deprecated. Eventually, switches should be linked to animations, instead of linked to scene nodes containing animations. This replacement doesn’t exist yet.


  • Various bits related to touch platforms has been removed with the touch platform rework. See the Changed section for a breakdown.

[0.2.0] - 2020-11-05


  • timer_seconds was added as an integer option to the root of the config. This lets you specify the number of seconds a player has to complete the stage.


Nothing to note here, this is when we started versioning this