{
  "version": "0.11.0",
  "dateModified": "2026-11-04",
  "count": 66,
  "groups": [
    {
      "id": "phase-changes",
      "name": "Phase changes",
      "count": 5
    },
    {
      "id": "electricity",
      "name": "Electricity",
      "count": 5
    },
    {
      "id": "fire-smoke-gas",
      "name": "Fire, smoke and gas",
      "count": 7
    },
    {
      "id": "liquids",
      "name": "Liquids",
      "count": 13
    },
    {
      "id": "particle-spell-effects",
      "name": "Particle and spell effects",
      "count": 20
    },
    {
      "id": "waves",
      "name": "Waves",
      "count": 2
    },
    {
      "id": "characters-motion",
      "name": "Characters and motion",
      "count": 3
    },
    {
      "id": "hand-drawn-sprites",
      "name": "Hand-drawn sprites",
      "count": 4
    },
    {
      "id": "tile-sets",
      "name": "Tile sets",
      "count": 3
    },
    {
      "id": "scenes",
      "name": "Scenes",
      "count": 4
    }
  ],
  "montage": {
    "path": "montage.gif",
    "width": 768,
    "height": 96,
    "durationMs": 3360,
    "frames": 48,
    "colors": 59,
    "background": "#1b1d2a",
    "bytes": 82134,
    "pieces": [
      {
        "name": "campfire",
        "animation": "campfire",
        "durationMs": 1680,
        "repeats": 2
      },
      {
        "name": "torch",
        "animation": "torch",
        "durationMs": 1120,
        "repeats": 3
      },
      {
        "name": "steam-vent",
        "animation": "steam-vent",
        "durationMs": 1680,
        "repeats": 2
      },
      {
        "name": "potion",
        "animation": "potion",
        "durationMs": 1680,
        "repeats": 2
      },
      {
        "name": "honey",
        "animation": "honey",
        "durationMs": 1680,
        "repeats": 2
      },
      {
        "name": "drip",
        "animation": "drip",
        "durationMs": 1680,
        "repeats": 2
      },
      {
        "name": "plasma-globe",
        "animation": "plasma-globe",
        "durationMs": 1680,
        "repeats": 2
      },
      {
        "name": "boiling-pot",
        "animation": "boiling-pot",
        "durationMs": 3360,
        "repeats": 1
      }
    ],
    "still": "montage-still.png",
    "preview": "preview.png"
  },
  "omitted": [
    {
      "file": "examples/quality/",
      "reason": "not shown"
    },
    {
      "file": "examples/caption.json",
      "reason": "old caption"
    },
    {
      "file": "examples/effects.json",
      "reason": "compiled copy of effects.fx.json"
    },
    {
      "file": "examples/swing.json",
      "reason": "compiled copy of swing.poses.json"
    },
    {
      "file": "examples/forest-spirit-normal.json",
      "reason": "lighting pass used by the lit scene"
    },
    {
      "file": "examples/forest-spirit.normals.json",
      "reason": "lighting normal source for the lit scene"
    },
    {
      "file": "showcase/gallery/",
      "reason": "room generator scripts are not in the repository",
      "url": "https://github.com/skulitom/Pixelbolt/tree/v0.11.0/showcase/gallery"
    }
  ],
  "warnings": [
    "lightning-pond: README has no matching fluid image; alt text uses the preset description."
  ],
  "pieces": [
    {
      "name": "ice-melt",
      "kind": "fluid",
      "file": "examples/ice-melt.fluid.json",
      "for": "Ice cube melting: heat · one-shot. A simulated liquid, not a character.",
      "size": "48x40",
      "frames": 72,
      "plays": "one-shot",
      "colors": 13,
      "animations": {
        "ice-melt": {
          "frames": 72,
          "durationMs": 5040,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Ice Melt",
      "group": "Phase changes",
      "groupId": "phase-changes",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/ice-melt.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset ice-melt --out ice-melt.json",
        "npx -y pixelbolt@0.11.0 render ice-melt.json --out ice-melt"
      ],
      "alt": "An ice cube on a hot griddle melts and settles into a puddle that steams",
      "description": "An ice cube on a hot griddle melts and settles into a puddle that steams.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=nVXBctowEP2X1-uGMcbGoGMvmZ576IHhINsrrImwXFkkoYz_vbOCJqXtNCEaZuDh3fd2V0_yCcaHvY5QGOwzO-PDju-MO9gWhEcOo_U91JzQ6z1DwTZ8t2cXQXiybeygihWhY7vrIlSREQbtOEaGOuEzFD7N24WpNAi1oNwsTZOB0AgqTV3wSrgEtcYsjQHhi6ClWZtGkBVUrzk3JQjfBJmlaVPkKEiv60WzBOGrIF7w2uQgPCR1ntd5AcJOUFEWWSF590lBL4uqAiEkhdUiz-WZTwpZVeU1JsJ43NfejdLPLti2dQy1wf3sjXUvmm8F7d4bFHx444MtofN1qu3GJUXcuD6W8nDj-kjKdiKwMdzEtGUvflUnPNi-hYKz38_2NkHveYSqckJ7CDomr1cZYWRuoXLCk3ay9Rs4NuL5kHxOqH2Mfi8z3wX9aOMRapNRNltsCcbZASqbLQlt0Dv5mRWEyP3lMM1KOTE61aRt-BXQ-L49NFHgvEww6lfodOQ-Xngf9eCD_cGpRk7oUn02y5bTOeAQRICfB_1LOCPUB3_UfXOUyILwdDm4d9ksLwmPPkTbpHay2SIV4Z3tzz2UhNaOox1epVYE5_0D1OYEY9nJeFvpMx7liHvnQ5reKJOKXeCx866Vv4R-K4Sx4zSBcqL_c3z9B8fqiqKYZPNtk-6ed9Vl_8F5VdbvRY2dbv3TVf6XW_LdxTuv6d_eTJeGfD1G3Thx6uZ0uY6gXi4jwjNURThCLeZis_3AQcdDYKi56L9kyPWQorNzdDmJW61zifgZar5OD_IiXchil-78ZYL_wT1UDAf-Q-Ium1XCw3sbI6e-tu90RX3L9FoeYneVnrYivVcIn_-imlNOBa2vp0loHOv-MIhDxhj0cTw3NU3T9BM",
      "playgroundCharacters": 959,
      "playgroundReason": null,
      "images": [
        {
          "animation": "ice-melt",
          "path": "gifs/ice-melt--ice-melt.gif",
          "still": "gifs/ice-melt--ice-melt-still.png",
          "scale": 3,
          "width": 144,
          "height": 120,
          "frames": 72,
          "durationMs": 5840,
          "plays": "one-shot, looped here",
          "colors": 13,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            870
          ],
          "bytes": 20854
        }
      ],
      "shownAnimations": [
        "ice-melt"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/ice-melt--ice-melt.gif"
      ]
    },
    {
      "name": "pond-freeze",
      "kind": "fluid",
      "file": "examples/pond-freeze.fluid.json",
      "for": "Pond freezing: heat · one-shot. A simulated liquid, not a character.",
      "size": "56x36",
      "frames": 80,
      "plays": "one-shot",
      "colors": 10,
      "animations": {
        "pond-freeze": {
          "frames": 80,
          "durationMs": 5600,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Pond Freeze",
      "group": "Phase changes",
      "groupId": "phase-changes",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/pond-freeze.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset pond-freeze --out pond-freeze.json",
        "npx -y pixelbolt@0.11.0 render pond-freeze.json --out pond-freeze"
      ],
      "alt": "A pond freezes in from its snowy shore until the ice closes over the middle",
      "description": "A pond freezes in from its snowy shore until the ice closes over the middle.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=pZbNkto6EIXf5dxtD2UMGEbL7LIw2ywoFrLVGqtGlrm2yGRC-d1TrfkBMpMKrmjlY_SdbrXK3Zxgu77VEQoH94O97foHvrP-6AwI37kfXBeg5oSgW5ZdXTB3tmf-ySA8ORMbqFVBaNg9NBFqURAO2nOMDHXCFyj8NzcLu9YgVKJyW9g6A6EWtbLVkjfiJcpYW1gLwldRhb23tSgnqrrn3K5A-CbKFtaknW1y0Uu9XIJQilqYRZ7Lb0EUb5itRNgml3W9NPcgPKbMirxYWIyE4bmtOj9IzkPT9Qy1QwhhNnmFECTWdjsd3W63cqC2nY62bfvP6GRWGOwJFRspV1mW0y3KspRrK8up4dszOjWskG_oNDaR7-gU9oU8o7ezr-QFeiv7Rl6iN9W5fSev0BvYC_Ia_Rt8CX5ABf4D3V6Dn6AJ_kC3H8BP0Tf8cn225w_oLQv7kcDWch1T-7lsseqERxcMFLz7_6Up2163PEBtMoI59jqmDr3OCAPLd7gkPGkvnWwHzzaC0KfWTKi6GLv0xT70-ruLz1C7jLLZYk-w3h2gstmKYHr9II_ZRtq6DIcTdFs5DhHqbj5bE7Tr044Foe6COdZR5DxPMuoXmRO8jonKZosU1AV5LkaCq9PpfNc9Qu1OsI69nNNwGCQzcfJdn47hJOXY9Dw0nTfyKput9gTjYsOSyEhng6HRpnu64r9O4f1rsc74t7_icoNdNURde7ma3el1nKR0ZJgQfkBlhGeo-ZoQuT1wr-NR5sxdPltJAu-ItNMLIM9HuR_nfXI-v8_S0EzDF2pe_G6bzZYbIbl1MXI6yp5uK3g1pWCGD7H5DSd8-WAxp-K6aITuGL0L8r_iUQw863A8pBEce_08QMX-yOM4jr8A",
      "playgroundCharacters": 944,
      "playgroundReason": null,
      "images": [
        {
          "animation": "pond-freeze",
          "path": "gifs/pond-freeze--pond-freeze.gif",
          "still": "gifs/pond-freeze--pond-freeze-still.png",
          "scale": 3,
          "width": 168,
          "height": 108,
          "frames": 80,
          "durationMs": 6400,
          "plays": "one-shot, looped here",
          "colors": 10,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            870
          ],
          "bytes": 5011
        }
      ],
      "shownAnimations": [
        "pond-freeze"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/pond-freeze--pond-freeze.gif"
      ]
    },
    {
      "name": "boiling-pot",
      "kind": "fluid",
      "file": "examples/boiling-pot.fluid.json",
      "for": "Boiling pot: heat, vapour · loop. A simulated liquid, not a character.",
      "size": "40x48",
      "frames": 48,
      "plays": "loop",
      "colors": 14,
      "animations": {
        "boiling-pot": {
          "frames": 48,
          "durationMs": 3360,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Boiling Pot",
      "group": "Phase changes",
      "groupId": "phase-changes",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/boiling-pot.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset boiling-pot --out boiling-pot.json",
        "npx -y pixelbolt@0.11.0 render boiling-pot.json --out boiling-pot"
      ],
      "alt": "A lidded pot boils: bubbles rise, steam beads under the cold lid and drips back",
      "description": "A lidded pot boils: bubbles rise, steam beads under the cold lid and drips back.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=7VY7b-M4EP4vc-1EkKyXo3Kbba4IsKWRgpKGNiFa1FGUHZ-h_36YkTcb7Tp7ae6qEBDgj_7mSc4Mr6CdP6oAFQzmhax2fk8P2k6mBYQT-dG4HqoEoVdHggpqZ6zp9w-DC4BwNm04QJXFCAcy-0OAKtsiDMpSCATVFb5ABX8kbapLBQg1o40udBMDQsMo13VGW9bFqNW60BoQRkbqsU6bAhC-MaKUHvUGEDrRSUm9yQDhiVHZbstHZu4ZZXkWZ6zlK6NCFVlZAsKforOsM9FpxV5BMTWA4BnV23SzYTnHSMdlualhRhgvx9rZkePhuKsddE_Ru-upYx8_CZ-ET8L_T3hGqNVIXKRP7y5mWdMyaa2g67puvcN94-3qZK22uJn8y2KDY3An8evrBxe3sw-u_4j6jKCtNP4deB9F9z9un-_9x_mLIufuf_A8I5DW1ATprm-nS3WFzvQtVGDNX8s80l4daVxmTDt5FWQ4lTGCdW6AKviJEM7KH6cBqhRhJGqhynnPcv_egSXNg8vLsEKoXQjuyHHuvTqZcIFqF2McpRK5GaCKowKh9WrPP-MMIVB_G4pRzmNPiavKeCGkCI3r26kJDBNBQS0oLhCsCtQLyhFOanDe_E3ia0tn3k7zRQP1fInjKJ8X3uTZDL0M6mY-R6gnd1F9c7l5eXI-mEaCiCNxxHE2v_tlneug2l1BG7KcV7bBbGZa5yU_I-ciHDyNB2db3lqS0ZpwIH9z6Pcqvt1RsV2pyGau0qmuLcmx_5BtWNabJfQtwtkxSWS4YrVkLp1nBFePQTWiYHe9TWh-xci75EXSc4EqSfnAjgN5FSYvihL2_5UvvUIEShHgp8xKIFkCfhWwchNfoMoWAz_zH_gIVxJL3YtMvNjIVv8vFfbWhwRhdNKftLIjcba0sVYifWWlsbyZNgXC4Y4ftyzT0YRAktznD16B-s755W_Pb30BhnBYiZ_lZcdvPYQvv6hKcIMZrq4Du9lYUj0X7RXG4NVlXIp5nuf5Hw",
      "playgroundCharacters": 1074,
      "playgroundReason": null,
      "images": [
        {
          "animation": "boiling-pot",
          "path": "gifs/boiling-pot--boiling-pot.gif",
          "still": "gifs/boiling-pot--boiling-pot-still.png",
          "scale": 3,
          "width": 120,
          "height": 144,
          "frames": 48,
          "durationMs": 3360,
          "plays": "loop",
          "colors": 14,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70
          ],
          "bytes": 31886
        }
      ],
      "shownAnimations": [
        "boiling-pot"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/boiling-pot--boiling-pot.gif"
      ]
    },
    {
      "name": "frost-window",
      "kind": "fluid",
      "file": "examples/frost-window.fluid.json",
      "for": "Frosted window: frost · one-shot. A simulated liquid, not a character.",
      "size": "40x40",
      "frames": 64,
      "plays": "one-shot",
      "colors": 4,
      "animations": {
        "frost-window": {
          "frames": 64,
          "durationMs": 4480,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Frost Window",
      "group": "Phase changes",
      "groupId": "phase-changes",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/frost-window.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset frost-window --out frost-window.json",
        "npx -y pixelbolt@0.11.0 render frost-window.json --out frost-window"
      ],
      "alt": "Frost creeps across a cold window from its frame",
      "description": "Frost creeps across a cold window from its frame.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=7VbLjuIwEPyX2muDAgOB8R_MF-wB5WDiNlg4cdZxeAjl31ftsNJodg_sYaU94EtSTrld7siqusOG2OgEhc5d2dsQDzyzfnAGhDPH3oUWakFodcNQsDH0aXZxrQkXEC7OpCPUqiAc2R2OaXrvtOeUGOqODyh8K-27rS0ITtD-nZd2DcJ3Qba0xsq3TtBWr_VbCcJJ0JtelostCFbQu61LLjES-luzD76X-jZmYTucnhxSu3tq_D11_mX8aeZFfVH_F-rrFryoL-q_uAXPmlE1EthartPDzT7Zq7rj5FoDBe9-TI6c3a6HKlcEM0Sdsj1vCkLPbKA2hIv24ow7eLYJhJhtmZBCB8I-pBQaVIRD1GeXblC7gopK_FtiwB262TtuE9SsmG8I2kWoYl4sCHVozVAngYt1hklPcEmT8rxoSzDchd6lHBwOUbtWSOuRcNZdGKJsw9dOt1O6WBH2Q7jptr5BFYRziMnVWVsh2wTv2kMWsST0XWRtsgaCSzz1oIdajQRX58zhQzhB7e6wjr30z3DbSz2p5kPM7bE5gFSEdIzcH4M3Ml3Ml2sq5uuKYFw6shx-lJ8U9n3StZfm7-6PAJLzkMQPwjVrnRQnbjrRNUSGmi3mm7EiWOd9XvqZeXlEp-nxqzkL4XPjUuIstaJnT_T7ab4eZBx_Ag",
      "playgroundCharacters": 734,
      "playgroundReason": null,
      "images": [
        {
          "animation": "frost-window",
          "path": "gifs/frost-window--frost-window.gif",
          "still": "gifs/frost-window--frost-window-still.png",
          "scale": 4,
          "width": 160,
          "height": 160,
          "frames": 64,
          "durationMs": 5280,
          "plays": "one-shot, looped here",
          "colors": 4,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            870
          ],
          "bytes": 11441
        }
      ],
      "shownAnimations": [
        "frost-window"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/frost-window--frost-window.gif"
      ]
    },
    {
      "name": "dry-ice",
      "kind": "fluid",
      "file": "examples/dry-ice.fluid.json",
      "for": "Dry-ice fog: sublimation · one-shot. A simulated liquid, not a character.",
      "size": "56x40",
      "frames": 64,
      "plays": "one-shot",
      "colors": 9,
      "animations": {
        "dry-ice": {
          "frames": 64,
          "durationMs": 4480,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Dry Ice",
      "group": "Phase changes",
      "groupId": "phase-changes",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/dry-ice.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset dry-ice --out dry-ice.json",
        "npx -y pixelbolt@0.11.0 render dry-ice.json --out dry-ice"
      ],
      "alt": "Dry ice on a table turns into heavy fog that pours off the edge onto the floor",
      "description": "Dry ice on a table turns into heavy fog that pours off the edge onto the floor.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=7VVNb9swDP0vb1fGsJPYTfQDCvRerIcgB9mmEiGKlclyPhr4vw900q7FhjXrbUB1eyb5RNLk0xnGh62OUNjZIzvjw4pHxnW2BmHPobW-gcoIjd4yFOpwGtmKQTjYOq6h8oKwZrtaR6hpSthpxzEy1BkPUPhWmLmpDAhWUDnnsclBeBJkClMbsT0K0rO7-VSY4xDHUz0WZATNzLwsJyDcC6pmdcZjEL4LYjZjo0HYCBqX47tJjp7Qnrald61kEnXpGGqBxxuOZHDDASFJYkz-csT65fbl9h-7LQnGeR9keTafPLKanw1d9gQ2hqs4LPKL_KgzNrapoeDsj4tYmaC33EIVU0LdBR0H5bpLCS1zDTUhHLQTPVjAsZH9DYNsEUofo99Kraug9zaeoBYppclkKdom6niGCczPDDXKxN86qFGa5ARtA1SaZDmh8k3dVXGAA4r6FTkduYkvnnu988EKXZpMc0Lblc5utchmDB33F48uyMV83OnmKsMFoez8STfVSUILwuEqvVkyJux9iLYa8r_wVt4726wEphmhtm1rd9fOpEmazgjtLrCuBzghOO83UIszjGUn7a25aYVQuJwPQ_eMdCquA7dr72r5JFUthT-ueWhH0dPfOe4H9f6dJ88pS7J3XHkvQ3D96zclaP9E_JbzbXbtWtf-8C7-4V_i3XWIfoU_fRguBfmyjbpyMrKL8_Wxgro-VYQj1JRwgsrmctur_bKNgz0d7JNZL0tqnRuIjlDZ-BIoE39Ba6hCNsQ_c3MZMULk7Y6Djl0YplpIeGtj5KGI5Y2z8HGrl33f_wQ",
      "playgroundCharacters": 871,
      "playgroundReason": null,
      "images": [
        {
          "animation": "dry-ice",
          "path": "gifs/dry-ice--dry-ice.gif",
          "still": "gifs/dry-ice--dry-ice-still.png",
          "scale": 3,
          "width": 168,
          "height": 120,
          "frames": 64,
          "durationMs": 5280,
          "plays": "one-shot, looped here",
          "colors": 9,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            870
          ],
          "bytes": 55194
        }
      ],
      "shownAnimations": [
        "dry-ice"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/dry-ice--dry-ice.gif"
      ]
    },
    {
      "name": "jacobs-ladder",
      "kind": "fluid",
      "file": "examples/jacobs-ladder.fluid.json",
      "for": "Jacob's ladder: electric arc · loop.",
      "size": "40x64",
      "frames": 22,
      "plays": "loop",
      "colors": 7,
      "animations": {
        "jacobs-ladder": {
          "frames": 22,
          "durationMs": 1320,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Jacob's Ladder",
      "group": "Electricity",
      "groupId": "electricity",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/jacobs-ladder.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset jacobs-ladder --out jacobs-ladder.json",
        "npx -y pixelbolt@0.11.0 render jacobs-ladder.json --out jacobs-ladder"
      ],
      "alt": "A Jacob's ladder: an arc strikes where two rods are closest, climbs on its own hot air, stretches wide at the top and goes out",
      "description": "A Jacob's ladder: an arc strikes where two rods are closest, climbs on its own hot air, stretches wide at the top and goes out.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=7dndbtowFAfwd_nv9jQKn6V-gT7CLiouHMdJPJwY2YaWobz7ZENbaAd00tYZqb6IOMkP2xiSnHC2qIxtuQfDUj1JXRlby5tKr1QJwlpap0wHNiB0vJVg-MGFKdyN5mUpLQiPqvQN2DgnNFLVjQebjglLrqX3EmyLNRi-jYohnwkQihCNq1tRVSCIEM0qeRej7yGqYgPhPkRiLGYiRHWIptXtbHYHwiJEw-mQj0boCW7TFka7MJo15Y2WlQd7QPbBBkqE3t__C_oBmw69bBOiF21K9JJNil6wadHzNjF61qZGz9nk6BmbHj1tE6QnbYr0lP08eqJ90auic4rJrN0l1VeYzZ5tu5_z_6P70-ka6POZfwX05SKVPn29niZPDy79qdPDu1Ti9OiGmjY9vvcnTd-kKSnTtxlVwvRd8pcufZ-n_g36vn3Rq6JzwtI4736bydb18-Zi_1_0D-hi8bz5DDrvCbKqpPDxn_jjSgHborK8lQ5sOCSUK8t9LC1Mc4I2Zgnm7UoSCi27MlYcnJQl2IhQrMyGd2IDlmdTwtpYr4TyMR4QhDFadXWIQs-Wx5f5hGAK57nQYdCH7b5KAPZaIyA8geWETdyujfa8ltHGuR7vHeU9vRwYzA6O5H14VpNOOc87IcGGkR6Nt3uMOzHgMd-dJwd0MgoDyFZ5L234LCHSUnirRFjYwkq-KM1jBzYmVEasXFy32prHUJyZhtkJ0xaqC4NltwS3cp6rLkRjQitbY3dzaiT3cTEH2aSP38xityBK6hIMynTq5-6rCyuvTZwQ1rG0Myf4xkrXGF2G3XmWTynPRpM5oVS-Cb-DPBvHddz3J1bWys4fdSZiLeh9Z8MJ5dnssC9Cw7UJaxDfDRYnsq9JDfp-3vf9Lw",
      "playgroundCharacters": 950,
      "playgroundReason": null,
      "images": [
        {
          "animation": "jacobs-ladder",
          "path": "gifs/jacobs-ladder--jacobs-ladder.gif",
          "still": "gifs/jacobs-ladder--jacobs-ladder-still.png",
          "scale": 2,
          "width": 80,
          "height": 128,
          "frames": 22,
          "durationMs": 1320,
          "plays": "loop",
          "colors": 7,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60
          ],
          "bytes": 11736
        }
      ],
      "shownAnimations": [
        "jacobs-ladder"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/jacobs-ladder--jacobs-ladder.gif"
      ]
    },
    {
      "name": "lightning",
      "kind": "fluid",
      "file": "examples/lightning.fluid.json",
      "for": "Lightning: electric gas · one-shot.",
      "size": "64x96",
      "frames": 32,
      "plays": "one-shot",
      "colors": 8,
      "animations": {
        "lightning": {
          "frames": 32,
          "durationMs": 1920,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Lightning",
      "group": "Electricity",
      "groupId": "electricity",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/lightning.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset lightning --out lightning.json",
        "npx -y pixelbolt@0.11.0 render lightning.json --out lightning"
      ],
      "alt": "Lightning: a branching leader steps down from a cloud, the return stroke flashes white and fades, and a second stroke runs down the same channel",
      "description": "Lightning: a branching leader steps down from a cloud, the return stroke flashes white and fades, and a second stroke runs down the same channel.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=zZbBcpswEIbf5e91wwiwXUev0UMPGR9kIUBjgTJC2HEzvHtHMrbBiadJc8kePN7V_p_QSqx4RWldIzw4nvWLMqV1lXooTa8LEPbKddq24CmhFY0Ch9FV7VvdViAcdOFr8NWCUKsQB39cEZ6FUd4r8FfswfEj32ZiLUHYBm9R_pRlCYIM3rpUj9H7HbwyGgi74KVFxnIGQhW8TOZssQChi0yRL5dh7FccW2d5LjAQumOztaYLc0tj-wL8CUmSVCfbfcZGTZKArohPEc6M74j4Ui3-g3EhnBGfZlwJF8SZ8TFINSFcEVfIvyjVDDBDTCB3MZOMi2qGmFNmpJv4VHKLeAdza7fp7yHugt5PvI_4sGFDkLVwlRpf2t1udybHIpz-jxV5E7_kbwiVs30b3_3uixY6zBftmyA2A0GVpZI-dsdrH-evKJ1oVAeeZ4Sid8LHpr9ihE6pAjwjbHt7FK08grMkJeyt81pqf_altSbCWJIuCXbbeSFNYD69jk0ZfGzJhBdwRjjG384aXYCXwnSKUDhxAEffFsphoKn2dDSiOFtF9fqOurVtSNxb40U8TeMK43yX6EO2YGGGcWg9GZrG09V9TZbORBuCU53uvGhlGGWzBYyHcrL6x-xWrhrtvXKhbMEzSnqnZdiirVNiV9hDC54lS0JpZd_FnamcPYRreMHC9NI2W90GXshqVGPdETzNwhUt_LhFLB0IxtrdqTZamQIc2rb6z2nvw4YaG58D-3hzbwi-dqqrrSlCmCVsRSzJlxtCoX2tXAAvYnFGnuydU62fwWS86t_CsiWxZD1lEWphbLzIgxo8Psj4yZEOw2YYhr8",
      "playgroundCharacters": 895,
      "playgroundReason": null,
      "images": [
        {
          "animation": "lightning",
          "path": "gifs/lightning--lightning.gif",
          "still": "gifs/lightning--lightning-still.png",
          "scale": 2,
          "width": 128,
          "height": 192,
          "frames": 32,
          "durationMs": 2720,
          "plays": "one-shot, looped here",
          "colors": 8,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            860
          ],
          "bytes": 17795
        }
      ],
      "shownAnimations": [
        "lightning"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/lightning--lightning.gif"
      ]
    },
    {
      "name": "tesla-coil",
      "kind": "fluid",
      "file": "examples/tesla-coil.fluid.json",
      "for": "Tesla coil: electric gas · loop.",
      "size": "96x64",
      "frames": 24,
      "plays": "loop",
      "colors": 8,
      "animations": {
        "tesla-coil": {
          "frames": 24,
          "durationMs": 1440,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Tesla Coil",
      "group": "Electricity",
      "groupId": "electricity",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/tesla-coil.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset tesla-coil --out tesla-coil.json",
        "npx -y pixelbolt@0.11.0 render tesla-coil.json --out tesla-coil"
      ],
      "alt": "A Tesla coil's top load strikes a grounded rod in pulses, each arc fading before the next",
      "description": "A Tesla coil's top load strikes a grounded rod in pulses, each arc fading before the next.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=5VVLbuMwDL3Lmy1r-BfH0QV6hFkUWciyHAuRrUCWm2YC331AJWjTdryZ1QDDjfVIPZrgR7yic36QAQIn86Zt5_xBP3V2Ni0Ir9pPxo0QGWGUg4ZA0JOVT8oZC8LZtKGH2FWEXptDHyCqknCSVoegIa54hcCPosllrUBoGJXdVnUdCIpR3eldRD8ZdVFAGBiptFJdCsKJ0VaWpdqB8BxtpaoV3zwwqrptXbOtZ7STsmgKEI6M8iqXRYGFMF2GxtmJ4wruBPGCJEmS55vwEYR3fNOx5vlRVjTfWV887wkxaeIFh5tw7D1LPP23uuNN_uK0J3jXxjLeyxDT_Ydv8lG45N__7heC7jqtwq1VPyZOXNF5OegJIi8J7exliPNZpQTruKeDnzXhLP0wn-LcNlaPbTxNWrcQG0Izu4sc1QUiTQrCq_PBKBMizrlPnTXj4W51zRSksvzPl-t9hPgdcCcQ3iDyHeECkW_YkQ3yoOPFGCdE-qDdpQu9G_IHw6O-WCNsVgjVGqFeIezWCFm2wsjyVUq5RtmsUrZrlHo1V-kKJc9WKcUnCo-KnswU5Kg4yfHqey3vr_kbRFHEYhbZJztPWTRzm7G5_upcDyYE7blHGFmtgjeK-7XxWh5bdx5jaTun5gki4zY7eHfm7VGmHJxyQ2NG9pfsCNM8BWlGRiVh0IPzl9gzvZbh3pvpJvqYx_gEWN0FEHzcQoTGheCGOErWueOtJY22LQSMG82v2-Bws1sX48Yprp09IfReT72zLavTJK0oTcrNntCa0Gsfg4qpvvtTs_d6DJ-cqbjRvjsrKUvyR1eEXlrHmYpk3sMfizVblv2yLL8B",
      "playgroundCharacters": 900,
      "playgroundReason": null,
      "images": [
        {
          "animation": "tesla-coil",
          "path": "gifs/tesla-coil--tesla-coil.gif",
          "still": "gifs/tesla-coil--tesla-coil-still.png",
          "scale": 2,
          "width": 192,
          "height": 128,
          "frames": 24,
          "durationMs": 1440,
          "plays": "loop",
          "colors": 8,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60
          ],
          "bytes": 12581
        }
      ],
      "shownAnimations": [
        "tesla-coil"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/tesla-coil--tesla-coil.gif"
      ]
    },
    {
      "name": "plasma-globe",
      "kind": "fluid",
      "file": "examples/plasma-globe.fluid.json",
      "for": "Plasma globe: electric gas · loop.",
      "size": "64x64",
      "frames": 24,
      "plays": "loop",
      "colors": 7,
      "animations": {
        "plasma-globe": {
          "frames": 24,
          "durationMs": 1680,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Plasma Globe",
      "group": "Electricity",
      "groupId": "electricity",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/plasma-globe.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset plasma-globe --out plasma-globe.json",
        "npx -y pixelbolt@0.11.0 render plasma-globe.json --out plasma-globe"
      ],
      "alt": "A plasma globe: violet filaments run from the central ball to the glass, flicker and wander",
      "description": "A plasma globe: violet filaments run from the central ball to the glass, flicker and wander.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=7ZrRjqMgFIbf5ewt06i1tsML9BH2YtILRFRSlAaxnW7ju2-gzoy2dVs7ZmN25aLhyP9_IlAFwgliqTKiAcOOvzMRS5Wwl1iUPAIEe6YKLnPALoKcZMyoBCky8pIIGTJAcOCRTgEHPoKU8STV5_yOCKY1A3yCPWD4MQ89sqKAIDSRHy9pHAMCaqJVzF5t9NNEsU2AIDMRdQIaO4BgZ6Il8X36CgjWtsynK2qUiYmCeLlambLU3o_4i8D4tibyAo_M51AhKI5ZKEVh6pUIUhSA32D2zQToDiJN0_RpRHqR-iIuXX-g3EbclndAbiG6a32z5Abij-13o_AKcbcDrgSXiLuEa8kF4j7gWtVGPEa40LUQjxLayibicUJLOyyiD6Gp_kL0IzT0QyL6Er4cAyL6Ez49QyL6Ez5MNeKZSny4xoV4hlDbxoR4rilq3z-GGEePDIIYx3_k-4gBXjkjeXeO4zsykm_qEJODkcxyhpiuDTFpHGLqOsQEeohp_BCLiUGWNEMsrD7k31reNVzPLzLv1b4P4n6aEA3EBkFIhKg3MtbrGru26SK7rlM7e1v7CdsgKDTJo7-yVTIhJsSEmBATYkJMiAkxRkSSTIgJMSEmxIT4vxDb7Xb7yLU7iHO6jnoj2mlC3EFsKgQsjhnV9gBI6yQLPkGsSMYKwJ6PICoV0fbky9JBIKTcAdaqZAgORGXlzp6ICQUz2yIugoKxCLCPICzlkeT0CNiZeQj2UmlOubaxi4BKKXie2GiBQIaFJlSYm76d6rMpgOuTKQjeATsIjvZ3L4UmCQPsVKghtVs_VumtrNQLGtq3-qHaBNezjLpkfsmur_udjmWHY9XpcN0Oi-t1exZdnqDb89rh8bqf32s3wAaBYgU3O17UtE6rtc_7YM2OMXqWca2ZMp1oIsGoVpyaERUqRraRPOS2mWNJy8LmEiUP9tSUY-5GZRby3Nx9FiAoykITngP2EGQsk-posykjuh45jrOo7JjcnnuYMxEBBi5z_us8aM1AE9LWCHZmA0-nihWpFJG55MzcDYKI65Qpw_Nta9QUWirFct1CZPZs1jUmQH4TVG2qqvoN",
      "playgroundCharacters": 1144,
      "playgroundReason": null,
      "images": [
        {
          "animation": "plasma-globe",
          "path": "gifs/plasma-globe--plasma-globe.gif",
          "still": "gifs/plasma-globe--plasma-globe-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 24,
          "durationMs": 1680,
          "plays": "loop",
          "colors": 7,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70
          ],
          "bytes": 27892
        }
      ],
      "shownAnimations": [
        "plasma-globe"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/plasma-globe--plasma-globe.gif"
      ]
    },
    {
      "name": "lightning-pond",
      "kind": "fluid",
      "file": "examples/lightning-pond.fluid.json",
      "for": "Lightning into a pond: arcs into water · one-shot. A simulated liquid, not a character.",
      "size": "64x72",
      "frames": 48,
      "plays": "one-shot",
      "colors": 15,
      "animations": {
        "lightning-pond": {
          "frames": 48,
          "durationMs": 2880,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Lightning Pond",
      "group": "Electricity",
      "groupId": "electricity",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/lightning-pond.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset lightning-pond --out lightning-pond.json",
        "npx -y pixelbolt@0.11.0 render lightning-pond.json --out lightning-pond"
      ],
      "alt": "Lightning into a pond: arcs into water · one-shot. A simulated liquid, not a character.",
      "description": "Lightning into a pond: arcs into water.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=3ZhRj6M4DID_i-81U1FKO7083vucVtqHexj1IYSkjRoIF0I73Yr_fnJgWqDQ0t09abV-mBlj-8MxTjTxGaSxKXNAIVcfQktjt-JF6lIlQOAgbKFMBnROIGOpAApabXcuU9n2JTcZ-hxV4nZAVxGBnUAj0NeQQM60cE4APcMBKPyxiEO25kAgRi2Sr1xKIMBRW0vxp9f-QU16AQJ71OZJGCwCILBFLeSLIIqAwF-1bSFfGRD44m1yJTl65qgtZRyJNRAoUHtN1owtgMBX1PiCswRtqc-MhTLEzN48hYVhiJTM2-QqXuAb_q7fHrGQQUWgOKWx0QWujmtTJkDfYTabbWvZPyNNzGwG5Ip4ivDJ-BURP1SL72BcCJ-IpxlXwgXxyZgG2bYIV8QV8oiy7QA6iBZkFNPyuER1EF1Kh9R73g7pIwYwfem7DyFGQcOO44jJAhsCfMfsVjSbdr_ff5J9Eeq_m4rcPL_4bwjELNsXDeXHcvoJyyKQfcpzkZcwPOYu8gzhGoVn6lWmE1pBHcQzWfx_iJ-wkOmMdBwxkZHeQ0yB9AJuEQ8Zff8BxH3IrfcgYpQy6DqGGKCM-d1BXEH3PR4iHsvvg8BTVCS_zhn6GyLepse1XLuIyYy3McRkRsevV4tpjK5Xv5xTGD2f2y_yCHJjH_iob_cgA8bBvhiFDBrGWmvAeQx8pzvfejLm97DB7wVPRDyW3wexqQgIKQV3_kLau6HTM-wV_gat_q2v9dKyVBRAozWBpLTM-Tv-KiBQCDyMFwSOTGv_r60W0gEB62_2BGLjnPHH9tayg3InoO8BCWaLDQGpVQ40mK0IJJZt8c8gIuBE1gwRZkucEeCw4QxMWe8QEuAmS0ruvLomoJkTmdciAgeWG6u-CaDzqtZKi-HiI2cNdk0gLs2JZfyEQUsCB2Od4j65YLbAFxitMp_QPCSQqKJQebPqOgVtzB7o-xmkEhprlWDS7oQTCqON9aUocNluZ0WxMzrBR_W6E-V2wq9mWZH7iK8DiHUHEbURymTqW51om3LwY5RbUrDCL7Ec5_HSWqxtG8b93OUWFi5JLzcCO6aNn3lgNFCfSDP_mVcV9qGJC8e4xu56PzdjEnyxH5IQ-PCYk_9ZGK0SoJLpQviOOQKFMkuEBcz5Gltf1nxwuPLRq5HozGToeDDaMX-_O9e97t93efoyXwe-KrVp3TK1n89X4zHhvBO0IWBFoQrHMo7WoLOA-prYWvwy7NpF0rX22UIL7qziWPrYCrZPzDEDGmKvS8PLAmiIG9Ic8UtEAWbDTRqrTDQ7IhWpsSeg2P64A5vdECwrAlJp7Ut1zSAicGxGelgHn0OqnBO-ZTYT98uXga7qNGd3t-Ru1wnP_WAPR319zJyEZNUB4Z1eC5aVOdaocJadCqDOlqKqquo_",
      "playgroundCharacters": 1472,
      "playgroundReason": null,
      "images": [
        {
          "animation": "lightning-pond",
          "path": "gifs/lightning-pond--lightning-pond.gif",
          "still": "gifs/lightning-pond--lightning-pond-still.png",
          "scale": 2,
          "width": 128,
          "height": 144,
          "frames": 48,
          "durationMs": 3680,
          "plays": "one-shot, looped here",
          "colors": 15,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            860
          ],
          "bytes": 28169
        }
      ],
      "shownAnimations": [
        "lightning-pond"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/lightning-pond--lightning-pond.gif"
      ]
    },
    {
      "name": "campfire",
      "kind": "fluid",
      "file": "examples/campfire.fluid.json",
      "for": "Campfire: gas · loop.",
      "size": "32x48",
      "frames": 24,
      "plays": "loop",
      "colors": 9,
      "animations": {
        "campfire": {
          "frames": 24,
          "durationMs": 1680,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Campfire",
      "group": "Fire, smoke and gas",
      "groupId": "fire-smoke-gas",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/campfire.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset campfire --out campfire.json",
        "npx -y pixelbolt@0.11.0 render campfire.json --out campfire"
      ],
      "alt": "A campfire simulated by Pixelbolt's fluid compiler: flames lick up from the logs, embers drift up and smoke curls away",
      "description": "A campfire simulated by Pixelbolt's fluid compiler: flames lick up from the logs, embers drift up and smoke curls away.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=hVTLjqMwEPyX2msP4h3Wx_zCHuYQ5WDAJBYGR8bMTBTx76s2IcNIK62lSCmqqa7udvNAZ90gPQRu-kuZzrqLeuvMrFsQPpSbtB0hEsIoBwWBRg63TjsFwqdu_RUiSwlXpS9XD5FXhJs0ynsF8cAMgV95mxdFBcIfRqUqywMjx6iusjTtQLCMuvhwSGsQ7gF1TZOzi_cVdWWbgFAzKmRWpQUIR0aVLGRWgtAzSmXSJBUWwnQfamsmdnJxdh5biBP6_xyW-V_ImWDsZWK5KIqivo9-nBWDmOyPxz3dM97I_ljX3zRTdc3sStZ8Vnql6rruX7Lf9Ea9ZAPdr_TKrBk2MtD9k9m8fZNbwA7ivBBU16nGh26-LoF4oHNyUBNEmhPa2UkfLswh5hbZG4R3syJMSrUQGeFTGhMaV1vv7cCtrGd7l2Nzh4ijvCB8WOd1o_3rQaunSd-eynEUlwWhsdbo8cKYM9t68rIxbOT0eA4eYp0S4SukvkPk8UI7-nkrQkC8BpSE1slPCIx2VFjOBDVo75VbpZ9r8FwBXpxTUlKenglOtnqeIEr-ywuQELwabspJP3OzkightGqcttp4w4xdSz3F9JZErDNaPYXonNAZ3fTKcXTJ1p_p1VCzoW8DWb4zkO0MTDfp-nVodh49CxUEozsFcaoo4fcaa2woD-9h-daf5dl4J7XZhijHi-HX0iKm9Hd8ZvUw11McZRRHh3NoXhhKXC1LWBPbh751WpkW4lX-PuscPg6c7erUdLWmnYJmUlIcscFW--vahIK_LzyNEQIf0swK3JZNfd_ufQYX6lnrev9HJnafpxRHZUrJz4TLeVmWvw",
      "playgroundCharacters": 898,
      "playgroundReason": null,
      "images": [
        {
          "animation": "campfire",
          "path": "gifs/campfire--campfire.gif",
          "still": "gifs/campfire--campfire-still.png",
          "scale": 3,
          "width": 96,
          "height": 144,
          "frames": 24,
          "durationMs": 1680,
          "plays": "loop",
          "colors": 9,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70
          ],
          "bytes": 15979
        }
      ],
      "shownAnimations": [
        "campfire"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/campfire--campfire.gif"
      ]
    },
    {
      "name": "torch",
      "kind": "fluid",
      "file": "examples/torch.fluid.json",
      "for": "Torch: gas · loop.",
      "size": "16x32",
      "frames": 16,
      "plays": "loop",
      "colors": 9,
      "animations": {
        "torch": {
          "frames": 16,
          "durationMs": 1120,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Torch",
      "group": "Fire, smoke and gas",
      "groupId": "fire-smoke-gas",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/torch.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset torch --out torch.json",
        "npx -y pixelbolt@0.11.0 render torch.json --out torch"
      ],
      "alt": "A torch: a small flame flickers on a wooden handle with a metal cup",
      "description": "A torch: a small flame flickers on a wooden handle with a metal cup.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=nZLBbqQwEET_pfbaQWBwhviYy3xCDiMOBmywMBgZk81oxL-vbLLR7HU5QBey_crV_YB2fpYBAqv5UlY7P6gXbXfTg_Cp_GbcAlEQFjkrCATnuxGE36YPI0TxShiVGcYAUTLCKq0KQUE84CHwq2NlyxQILirNL5pJEO5J6Z7xCwgfp9KX_hWENirelZJVILxHVXdclgyEISlZ67c3EK6JUHV1p0GYomKskEWHg7Dd59bZLTo5PYsbpmt8prh4uF6vQ6yyaRiGKUvVe9v-b5VN05RlaA6C0lp14Zn8gPZyVtuZV797GVKsl5xgnVshgt8VYVOqh6gI7e7ucunuEHlWccKn88F0Jvz86M22mfX7mDwrKkLnnDXLEGVZEXovU52XBNduQXY2Grg9vpN56uUXBE89YexoCGo2ISh_Lv5uu7bxS4iTcqszTqxoCF72Zt8gyoxHEfteEIKaV-Vl2H3UWRHnyLrT_S2nl7hzcWZT0V5N0NZ0k_LJOD_oh6nmNrp4ghb8CVr8A91W6aeUeef2JaRQOMEarSBunOomJmRduhY-0gzGqWwIwUtj_7ZALoONOxjnxOrI29bUlVuelZRnvDliRta5KeWjjbJ9zPLp0s8knygn7SPRRq-20dl-O89klGdVRXn2Gl9v0WdvwnjmwY_mOI4_",
      "playgroundCharacters": 728,
      "playgroundReason": null,
      "images": [
        {
          "animation": "torch",
          "path": "gifs/torch--torch.gif",
          "still": "gifs/torch--torch-still.png",
          "scale": 4,
          "width": 64,
          "height": 128,
          "frames": 16,
          "durationMs": 1120,
          "plays": "loop",
          "colors": 9,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70
          ],
          "bytes": 6649
        }
      ],
      "shownAnimations": [
        "torch"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/torch--torch.gif"
      ]
    },
    {
      "name": "steam-vent",
      "kind": "fluid",
      "file": "examples/steam-vent.fluid.json",
      "for": "Steam vent: gas · loop.",
      "size": "32x48",
      "frames": 24,
      "plays": "loop",
      "colors": 7,
      "animations": {
        "steam-vent": {
          "frames": 24,
          "durationMs": 1680,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Steam Vent",
      "group": "Fire, smoke and gas",
      "groupId": "fire-smoke-gas",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/steam-vent.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset steam-vent --out steam-vent.json",
        "npx -y pixelbolt@0.11.0 render steam-vent.json --out steam-vent"
      ],
      "alt": "Steam puffs rhythmically from a pipe, rises, curls and thins",
      "description": "Steam puffs rhythmically from a pipe, rises, curls and thins.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=nZbRcrIwEIXf5fy3C0MCIuYp7LXjRYBQMiKhIbZ1Or77PwFt0da2NFeshnOO-wWXN1TG7qWDQKdfVVMZ-6iCqjnoEoRnZXttWghGaOVeQaB3Su6DZ9U6EF506WqImBNqpR9rB5FkhE42yjkF8YYnCPxbllkhYxAefJUnBS9Tf7evlKqSKgeh81UiFyyNQFj7Kq2WWbYCofbVSso49yo7X_GUyzjGidAf97lpeu_W6U5BbLB7X377uh7Weii69bA6X4Rj1e3Cb4rtiaCqShVusJj8fvGGysq96iF4QigPVrqhW8uI0BjTQTh7UIReqRKCE15k44NukBvnzB5bQn4wR9kWR4go5AvCs7FOF9oNHywJpe573Z2Fo5AxQmFMo9vHoSSUVg6XUUIwee9k0fhEm7dzYwaynQLhFcLffoRI-GlLUHvtnLLj5jPeXDeNeQHBH4kNS4lHW4KVpT70EGzprz3ZKOT-eDRmjLqJKOBh5kVfO9mWEOmJ3kW7Q1UFbCIar8LFRDYOFxddRuidtA4iIqh2bFup2v7cEd8ip_adstId7BAkuwoSRGFKAZ8k8WfX6P6yt2p0sVPWV_HYbvU6fDUJnJvyeBU4mXaB_zZsnF7bTRwKY9V9B3bfgU0cWJgsJpqPsrvp8pYgrZIQm4yS7WfR-CyaTUQDdtPhgN2i5DNRZpfs0TyWf0MZfMGSz2B5J-1PMO9afAHzYrH6HiafBdM_22PwdB7OeCZOrz8aZTN5_unBTG9hxjNg3sv6E827Hl_Q_PBYfs8znsdzdflTSX7N09W6nZikHx4xJxZNXT4Uo5BNk1ayVNMBcKWR3pNI_ERpjNkN06TSqikh3nf4odWYYdTgyY89V1vV16Yp--E5Z2zrR52rRxzpwr9E-OHUQpwPiU84V5YvrmRHIN-JPAyvJZ-FEk43CU_b0-n0Hw",
      "playgroundCharacters": 998,
      "playgroundReason": null,
      "images": [
        {
          "animation": "steam-vent",
          "path": "gifs/steam-vent--steam-vent.gif",
          "still": "gifs/steam-vent--steam-vent-still.png",
          "scale": 3,
          "width": 96,
          "height": 144,
          "frames": 24,
          "durationMs": 1680,
          "plays": "loop",
          "colors": 7,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70
          ],
          "bytes": 12707
        }
      ],
      "shownAnimations": [
        "steam-vent"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/steam-vent--steam-vent.gif"
      ]
    },
    {
      "name": "magic-swirl",
      "kind": "fluid",
      "file": "examples/magic-swirl.fluid.json",
      "for": "Magic swirl: gas · loop.",
      "size": "48x48",
      "frames": 24,
      "plays": "loop",
      "colors": 5,
      "animations": {
        "magic-swirl": {
          "frames": 24,
          "durationMs": 1440,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Magic Swirl",
      "group": "Fire, smoke and gas",
      "groupId": "fire-smoke-gas",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/magic-swirl.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset magic-swirl --out magic-swirl.json",
        "npx -y pixelbolt@0.11.0 render magic-swirl.json --out magic-swirl"
      ],
      "alt": "A magic swirl: two glowing sources orbit and leave purple mana that spirals",
      "description": "A magic swirl: two glowing sources orbit and leave purple mana that spirals.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=zZXLbuMwDEX_hbNlDMmvpv6RLoIsFIuKhcqWIclpi8D_PpCSdFIkDgbzwiwMiIDEQ15eg0dQ1vUiQAOjfiejrNvTSplJS0A4kPPaDtBwhEH0BA30Yq_blX_TzgDCm5ahg6ZcI3Sk9104nUdhKASC5ggHaOBbIXNR7wBhjNGTKMv2GRD6GLWsbhUDhDZGtaJC5YDwEiNVKqYUzAikFLXBx4zXFTRHUE705KHJSwQ5ORFSwTVDMNaO0AQ3EYInktA8I_hp5wONPvW0m-yHGNoPaBjCwbqgWx1ilOUIUnuvx3M-lrE1Qmut0cM-hkWFIJ1IZ1YhUK9DIOeh2RwvWl1UivJu8hLzcovghNRTrJfHcxSJn9j0HnM9IdD7KAYJzYpnvEIYJ-OTlKIfjQ6TpHivRBjJaStj5_OMn9DW9hRWfBEbW_vkBupHciJMLsapEet2OkTc5cWG18iL7RJvb_TwgMezaplX_gKvE8Y-aq-8wkka_Hmg_BdQQWjzqLP8HopnfGlm1Q9QPf9kOQh-FO41Ob-10xDOJjFaUXyRY8620ZnGJvPBS_qVTl8PWwQx7E28yrCo41U_pn9hwzKOLIs4ZY2xb6c2LpZe33oq_6ueQhg7EUXja3brr0X2H_HXEjt57UHbv-m1JWzy3YOO_4HvvpT2X3hQOqGHJU2qe4qsWJZXX1zsaHGW9ydZ3FiKXyWkj8V8_H6-6iZfcWce_HpiPJ_nbVpmr2m3KE1GRj3OWa91P6QVe9Y8dI58Z430J6HzqDSyrK62cbmFjtzFHCKurgEaOAgzEcQWL5jrcq9RbdrRt5gKWfb8BZBX83ae5-8",
      "playgroundCharacters": 891,
      "playgroundReason": null,
      "images": [
        {
          "animation": "magic-swirl",
          "path": "gifs/magic-swirl--magic-swirl.gif",
          "still": "gifs/magic-swirl--magic-swirl-still.png",
          "scale": 3,
          "width": 144,
          "height": 144,
          "frames": 24,
          "durationMs": 1440,
          "plays": "loop",
          "colors": 5,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60
          ],
          "bytes": 17498
        }
      ],
      "shownAnimations": [
        "magic-swirl"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/magic-swirl--magic-swirl.gif"
      ]
    },
    {
      "name": "explosion",
      "kind": "fluid",
      "file": "examples/explosion.fluid.json",
      "for": "Explosion: gas · one-shot.",
      "size": "64x64",
      "frames": 32,
      "plays": "one-shot",
      "colors": 8,
      "animations": {
        "explosion": {
          "frames": 32,
          "durationMs": 1920,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Explosion",
      "group": "Fire, smoke and gas",
      "groupId": "fire-smoke-gas",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/explosion.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset explosion --out explosion.json",
        "npx -y pixelbolt@0.11.0 render explosion.json --out explosion"
      ],
      "alt": "An explosion simulated by Pixelbolt: a white flash grows into an orange fireball that rises, cools and curls into smoke",
      "description": "An explosion simulated by Pixelbolt: a white flash grows into an orange fireball that rises, cools and curls into smoke.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=xZbdbuMoFMff5eztKcKAP8pjzFz0IuoFiXGCQkwEuJ2oyruvwG1CNtluZ7ZSLixxsPnzOx8c8waD8zsVQcLe_NJ2cH6tHwY7mR4QXrQPxo0gK4RR7TRI0L_21uVJhFfTxw3IRiBstFlv4jzeK6tj1CDf4Akk_DUMw1I3gHCYrZ6LJO5mq1NsCQg-WX0jaLZ-JKsbmGIaEEKyllzVKq37md81bdcxQNgmq1ZC10s4Iuhh0KsY0t5nUvkGg1c7HUByhtBPXsU831CEoHUPskVYTu6gxtUBJCVVh_D67tIDJVQgvDgfzcrE_J4j9CYEs38XoqTibY2wcs6acZ0nGoTeq3mMoHcmRu0DyMXbRywHq8IGEFL4F5whb58RvOrNFEDWiciHmIMf9W6vvYqT1yAZaRAGa1Zb7ZO6OOJJcmlViA9VKdoVoiINU2oS0diDTI7oMWS32NU-HaYoqvwhYQijMyEt_gdAfQXAPgCYuPSKFwAhKh_PKKJEIeIKRpxhsvFlGP4BIyhy_jkMuwFzFf8_BRGntLQoRAHCSP3vcSlTVF3H5QxTpXx9GaY-wVDk1ddSVKLwGykqI_MbKM2pWloUZYLYNQp_R6kLFJocv0CpytLNAF-A6fXSm3A-PFWNnJO64KnIxak810zYK7_NXWflpjHNkRbBmkGDXDxilURWzrp8_uEp98L5cbn3PSNEr4wFGf2kEdS4tmlp1XTIKvacdsh9asGxzkhrr16y8wuKlORPProN5QiDs9a9gqTHawfPh5Mia-_q3mOHTHyze6fjzhpk1T3dY6xD1n6ze-cm0pAaGbtvgbKmQ_7dBXpqTYLfuUDZY4f8uwv01O5Ei1zc0z3OOuT_s0CfEaxz23yvGYy2fXZ07swl1TZTbLwOG2f7NEUJTXeT3sTN3IybdHdMt6Qx_RrUQXsBKXyfyf7M98NraYaUiPpSvi71X5Sd9IV82Kjevf4nNL8QFZ9r2nyHLCVvwTa_I1n-6ErhHznVc8pTjJ5uRaVDSmqssCItMiIu9r0VnlRYVqtx2qfqC9GrQ5ir6Hg8Hv8G",
      "playgroundCharacters": 1116,
      "playgroundReason": null,
      "images": [
        {
          "animation": "explosion",
          "path": "gifs/explosion--explosion.gif",
          "still": "gifs/explosion--explosion-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 32,
          "durationMs": 2720,
          "plays": "one-shot, looped here",
          "colors": 8,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            860
          ],
          "bytes": 18034
        }
      ],
      "shownAnimations": [
        "explosion"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/explosion--explosion.gif"
      ]
    },
    {
      "name": "smoke-puff",
      "kind": "fluid",
      "file": "examples/smoke-puff.fluid.json",
      "for": "Smoke puff: gas · one-shot.",
      "size": "32x32",
      "frames": 19,
      "plays": "one-shot",
      "colors": 5,
      "animations": {
        "smoke-puff": {
          "frames": 19,
          "durationMs": 1140,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Smoke Puff",
      "group": "Fire, smoke and gas",
      "groupId": "fire-smoke-gas",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/smoke-puff.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset smoke-puff --out smoke-puff.json",
        "npx -y pixelbolt@0.11.0 render smoke-puff.json --out smoke-puff"
      ],
      "alt": "A cartoon smoke puff, outlined and lit from the upper left, billows out in lobes and thins away",
      "description": "A cartoon smoke puff, outlined and lit from the upper left, billows out in lobes and thins away.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=rZTRbtswDEX_5e6VNSw7TmP9SpEH1ZJiIbJlSHLTIPC_F_RaLBnSdVj3RgriPbwCxQtsiIPKkJjcq_E2xIN5sH52GoQXE5MLI6QgjGowkEhDOJqHabYWhJPTuYesK0Jv3KHPP-NJeZOzgbzgCIkfohKlaEHQnDW62T1WIAyctaptFLM8Z53tlH5mZc7szm5th4VgrDVdTqx41YC8wEY1mAQpWoKeo8pru9uSkIzRkA3heQ5nNXZnyJLwEmJ2ncucFYKgXUpuei8rC7Eh6KgOHFcNwQwuZxMT5NMF_EpPYls0JB6LZk-ISrs5QW44ZL-CYEYNWRO0GdOKEUXdEKzyPnDLZdGy7uuk-GJZtIQxuGQ4rgnWu-5o4spf6INZMrO9YdZXzJRVzL_om1v6N-FVdQe-Ps7f8Tffdr82UH_lvnqnN_-Z3jK9-s3-Hff3-dt_xO8JPoTjOnfWGc8_50OW0AUf1qHEgD0h99GkPnjNR2Uhdnse7NyvYuzkTwr-jkLTfKaQeqXD6UZA3xP4rN6vW-K6_PRl-Z4Q5uzdyPvnyMXeqHGe1m2QozonyBxnsyzL8gY",
      "playgroundCharacters": 639,
      "playgroundReason": null,
      "images": [
        {
          "animation": "smoke-puff",
          "path": "gifs/smoke-puff--smoke-puff.gif",
          "still": "gifs/smoke-puff--smoke-puff-still.png",
          "scale": 4,
          "width": 128,
          "height": 128,
          "frames": 19,
          "durationMs": 1940,
          "plays": "one-shot, looped here",
          "colors": 5,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            860
          ],
          "bytes": 11582
        }
      ],
      "shownAnimations": [
        "smoke-puff"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/smoke-puff--smoke-puff.gif"
      ]
    },
    {
      "name": "dust-wave",
      "kind": "fluid",
      "file": "examples/dust-wave.fluid.json",
      "for": "Dust wave: carried gas · one-shot.",
      "size": "64x32",
      "frames": 26,
      "plays": "one-shot",
      "colors": 8,
      "animations": {
        "dust-wave": {
          "frames": 26,
          "durationMs": 1560,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Dust Wave",
      "group": "Fire, smoke and gas",
      "groupId": "fire-smoke-gas",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/dust-wave.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset dust-wave --out dust-wave.json",
        "npx -y pixelbolt@0.11.0 render dust-wave.json --out dust-wave"
      ],
      "alt": "A stone drops onto the ground and throws a wave of dust out both ways that billows, slows and thins away",
      "description": "A stone drops onto the ground and throws a wave of dust out both ways that billows, slows and thins away.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=zVTLbtswEPyX6XVNMNQjCn-gl9x0NHSgJdoSSosGSTkxAv17sVSC5JC2h7RAedqhVrM7yyFfcPThbBI0LtOzdUcfTnZ3dMs0gHC1IU5-hr4jzOZsoTEsMe2ezNWC8DQNaYSuS8Jop9OYoAtFuBhnU7LQLxig8a22lSkbEByjh75RNaNHRv3DQTZHEDwjdVCqkCBERo1pzAPXaRlVtrL3JQhj_q_sy4HRiVE5FMeiBuE7o6JSB1VjJcTb-eBd5E5i8rOF3kMIMY5jK4QAIccxthvIMSOussUxthnEdyDa13gjaLd4A6Jt20zdEU7BL_PAJU9fXCzsi-s_oehWgj0ebZ_yobybSb_gGMzZRmhVE4YlmJSdV0tCtHaAvic8GcenucfBp-TPPOXD4m9m7m_QUsiKcPUhTf2U8gYzTTFOl1cyKeQ9offeTfMpw4bgDzGZ3nHp_curZaDfjo_wDC0JN2jVrPQhYXNU_q7uc4Ik_LC3jSeryReH_5QEf7UBulq7tSPY85SSDVsq3769qknVHcEEa6D3FRVZXIgpk8RkQoJmQXaOWd4dy7ta5ze1-10hStpJ0XSE2U_Rvk6gNyHc8rSDyaKVIgTrrNlSVMleNdeNRZIUsuxWlpobK5qvNvZv-lIVqbIjBDNMC9vmD11J0RCSPV9sMGkJb118HOCdUFuj7-If_naR9xodwXn_Y3PLZB2_lW9EbFLnsz8wsM3TGGwcvRt4S4q7jp2dRraUFIr7_R2F-4SiUL_mcPkx_8jw-AlD9ZGA5fTOmnm5bM9tMHwTUljsuq7rTw",
      "playgroundCharacters": 862,
      "playgroundReason": null,
      "images": [
        {
          "animation": "dust-wave",
          "path": "gifs/dust-wave--dust-wave.gif",
          "still": "gifs/dust-wave--dust-wave-still.png",
          "scale": 2,
          "width": 128,
          "height": 64,
          "frames": 26,
          "durationMs": 2360,
          "plays": "one-shot, looped here",
          "colors": 8,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            860
          ],
          "bytes": 4895
        }
      ],
      "shownAnimations": [
        "dust-wave"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/dust-wave--dust-wave.gif"
      ]
    },
    {
      "name": "waterfall",
      "kind": "fluid",
      "file": "examples/waterfall.fluid.json",
      "for": "Waterfall: liquid · loop. A simulated liquid, not a character.",
      "size": "48x64",
      "frames": 24,
      "plays": "loop",
      "colors": 9,
      "animations": {
        "waterfall": {
          "frames": 24,
          "durationMs": 1440,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Waterfall",
      "group": "Liquids",
      "groupId": "liquids",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/waterfall.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset waterfall --out waterfall.json",
        "npx -y pixelbolt@0.11.0 render waterfall.json --out waterfall"
      ],
      "alt": "A waterfall: water pours off a mossy ledge in a foaming arc, splashes into a basin and spills over its lip",
      "description": "A waterfall: water pours off a mossy ledge in a foaming arc, splashes into a basin and spills over its lip.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=7VfLjts6DP0X3i1r-B2Pll3PKtsgC9mWYiHy40py0yDwv19QjjPJzUyboJ2uKiCwRVGHPCRlMSeQvWm5AwaD-i607M1OfJF6VDUgfBPGqr4DFiF0vBXA4MCdMJJrDQgHVbsGWFogNELtGgcsTxEGroVzAtgJvgKDf6I6kSsOCCXNYpnLKgSEimaZLFNREBbNailzKQHB-LUyy3JaW9MsTRKR0b69RynjVZIBwivNVuUqe6G1dsZ84SmHCcEe27LXljyptJIS2Aba-0EmzHksL6_7B6Wv-yAIPpbejEV6C-qVf4t0fW9u1r127l3plWcPS9_n9lR0rqVe-APpnbG7OPy69Od5-8WYPRLJJW__q77fJ_2oSv7W5Cec7lm6RSi5VR19gYInBuDD6q_GmGfU18-pP4n-tPr6M9HXn-n7nwjk-olxLsH1TR1-_Hir7ocesJ0QhJSicv5ifWsI2An2qquBgVb_zg2ENLwVFlicItSj4c53E3mIoPt-AObMKBCsEDWwDOHATTsOwFIEO5bWicECS0iu6RbfgBbS0VmSWg3AwiBHqA3f0WuYI_SldbzSZHFzOt_-wM53P8J3YCHCEVgUT3i1Pp_Mq_X0ZSIjikhtTiSPivOC71TiGKHxMFsE0SrnhJltnrsk24-mEoBAndVmFWQYhVsEbgQHtokyTLcIhlOTFFGbpftKuSMtBRGS5jBq6zso3g5aubEWxDFDGIRRfQ0sn4jCYm4w_LhYiwtMcw9fq5Fif2WpFp31hkIEO3Czn3ujfuwc4RcIWkkBbJPhyxah6nXvicHBN2xEodtpUojjEJOYXLWDT9-GtkcBWd4Z_m2mE2IYxBnFste6PwALb9wWYrh4vcK0CLKrIBWYbN9z_UsYhNkVyk6rztkFJ8rnUC_sIwraY_yjC_uowDi_47_8fByc4UovBbywiy7RCC-FOVGNHBrlhD8pc2XOSglC1fCu8rkNMwTXGA8TxARkBK-BRdnFrQKj9L2s-GKeIaMgvQFNL5sTvGfkmVycJ0d13--9i1IJTUd5idj11tIHoDHCNr2urc89Za5WriGGITn0BjC4Bu4t098BhK93UBHGmGLxEdzM89abJSU3MEGOSZDewBB_LXhHn5gTWGf40c4pnKZp-g8",
      "playgroundCharacters": 1203,
      "playgroundReason": null,
      "images": [
        {
          "animation": "waterfall",
          "path": "gifs/waterfall--waterfall.gif",
          "still": "gifs/waterfall--waterfall-still.png",
          "scale": 2,
          "width": 96,
          "height": 128,
          "frames": 24,
          "durationMs": 1440,
          "plays": "loop",
          "colors": 9,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60
          ],
          "bytes": 27959
        }
      ],
      "shownAnimations": [
        "waterfall"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/waterfall--waterfall.gif"
      ]
    },
    {
      "name": "drip",
      "kind": "fluid",
      "file": "examples/drip.fluid.json",
      "for": "Drip: liquid · loop. A simulated liquid, not a character.",
      "size": "16x32",
      "frames": 24,
      "plays": "loop",
      "colors": 4,
      "animations": {
        "drip": {
          "frames": 24,
          "durationMs": 1680,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Drip",
      "group": "Liquids",
      "groupId": "liquids",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/drip.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset drip --out drip.json",
        "npx -y pixelbolt@0.11.0 render drip.json --out drip"
      ],
      "alt": "A drop falls from a stalactite and splashes into a small pool",
      "description": "A drop falls from a stalactite and splashes into a small pool.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=xVTBbqMwEP2Xt9epBQbS1Mf9hF6jHAzYAcWJWWOaRlH-fTUmTWi7h5X2sBwQHttv3rx5wwXWh4OOUBj6d-OsDzvzZN3UtyC8mTD2_giVE476YKDQhn4A4dS3sYPKV4TO9LsuQhWSMGhnYjRQF_yEwo-8LeyzBqHmlbQr22QgNLyqbF2aNWPxqrV2ZS0IIe3VVbXivVdelUVhKr63Tyi1fC4qXAnj-VB7N3K24Js91AavIYSweDHgp0AIIAghHgEhxBwSHyfEIyTmY2IZ4rtz5BES4fX2gS1hF_x0bBMf8elhPn8KfXmwvRKMtaaJqbokurpg3zMqXP9r7o8N-mBGKFkS2inomJr1nBGc9wNUDJMhjMa0UJJw0uEwDVAFfzoWbgNnbGSRUg8JtY_RH-Ya9Fsfz1CbjDJRbgnWMYuM0Aa9g8pEVhKiOc4WKQi-HqNuHDPaXG7dgZp7Q3hPd89Q2ZUWuzetFvvy5crZeucSznuyH8er5JW8JHRQJR8yhz5GE-aEN4fWRjMce3qzpmdRbQlBt_00QuWi5AU7NCcYVnPNNne-ude6ZXo3rPFknHuArT-ByQXUGHWIUOVfgQ5Bn59uwifklahIVglcB6OhNpLyLaGewhiX-Pma0LLijJsRxkGHfbJI46djTJxcb01im3PTGu980genNGo8fJzmuHN8SsqMZJVtGSrZZJOLguS3_jO1e9slwXrn_Il7uSzM6_1DLLl6lJOXCfMu172Gp0zk36T5MGMCevl_2rxkVMh_0mabJnGf7Gl743h6Pzgu89ecN3bBjJ13LYdusH3sTLiNzANgiB2-0m--QeSJ6wOCK3ZGH6f0Lxlj0Odx_kdcr9frbw",
      "playgroundCharacters": 918,
      "playgroundReason": null,
      "images": [
        {
          "animation": "drip",
          "path": "gifs/drip--drip.gif",
          "still": "gifs/drip--drip-still.png",
          "scale": 4,
          "width": 64,
          "height": 128,
          "frames": 24,
          "durationMs": 1680,
          "plays": "loop",
          "colors": 4,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70
          ],
          "bytes": 4669
        }
      ],
      "shownAnimations": [
        "drip"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/drip--drip.gif"
      ]
    },
    {
      "name": "potion",
      "kind": "fluid",
      "file": "examples/potion.fluid.json",
      "for": "Bubbling potion: liquid · loop. A simulated liquid, not a character.",
      "size": "32x40",
      "frames": 24,
      "plays": "loop",
      "colors": 7,
      "animations": {
        "potion": {
          "frames": 24,
          "durationMs": 1680,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Potion",
      "group": "Liquids",
      "groupId": "liquids",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/potion.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset potion --out potion.json",
        "npx -y pixelbolt@0.11.0 render potion.json --out potion"
      ],
      "alt": "A green potion bubbles in a round flask: the surface heaves and bubbles rise and pop",
      "description": "A green potion bubbles in a round flask: the surface heaves and bubbles rise and pop.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=7ZbRkqI4FIbf5d_bIwUBHScvMP0OlhdBEkkRDQNhenq7fPetE8VG0dqevZjai8kV4Mf_e_IfOLzD-O6gAiRa-1M747u9Xhg32AqEH7rrrT9CZoSjOmimfOArhFdbhRoyF4Ra230dIIuU0CqnQ9CQ7_gGib8ys1K5AWHPZ7lRecHKjs_Wpc5XirX4TK-M2X0FoYn3lZkSKxDqSBqVl2sQXiJZmNQYnAj926H0rmc341TfQG6Q_MsC_SLSXNdTpL6u50ZN_K2eivxBfiPSjMizGJvmZUSm0ARpmpeX8bieMB_IBLhA98gdMWFGpGnuiI8_fUVmxLX2CzKzmVhdkTkxyvx2pP4_IQ-Y2617KFPfZTRn7mOcW82aYcY8aKnoVU-AB415Zsb1uL0_9657uLA9EbQxehfi2_gyJuQ7GnusIOHs9_NMMZ066B5SFIRq6NSZ-5ISnPctZOgGTei1riDXhFfl-P2-QelD8AdsCftO_bDhDXKTUpqI5ZZgnG0h02RNqDq158O0IPiyD2rn2G7zfhkWkJdRQfgJmRLeINMTa1jnIsfTcJMtkyWJVcLqnars0ENmabKc3CVEnFxxAkJmaxbRBxuC7s6Gl5FZaxVAE9m82BJUpxXkZk0iOvDIzAiVPvaxtpSnr_O7sdAFY-3g-jha1aF1NgzV-aZWd9ZXkJk4nehqW3rrbmzFxDZbU_HM9-gtu6SJmKoNZckbeVNHHrdnlCwofybZt6prYmPs_HAMLJ4TnDUaciMKyrm6nXc-7hxeOebe_q0hBUEd946PvkSh2Bgx6WkfLNIk207CXxKMd86_xjoI7dha0x3q_K5ZZNeSUhKrj3JWtPpMMEnB3p8IRxQzazFai-w_WC9-xZvQ1oqRbJ2euFGd901sUmO14wd0dJnmsOccQt3pvvau6mO9nHhlQ607fm5oKtCGGrcx8ocef_oRvs2kMhJU0NcbOe4Cp9VxaLmYPnTqrR9zO53-AQ",
      "playgroundCharacters": 1046,
      "playgroundReason": null,
      "images": [
        {
          "animation": "potion",
          "path": "gifs/potion--potion.gif",
          "still": "gifs/potion--potion-still.png",
          "scale": 4,
          "width": 128,
          "height": 160,
          "frames": 24,
          "durationMs": 1680,
          "plays": "loop",
          "colors": 7,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70
          ],
          "bytes": 10482
        }
      ],
      "shownAnimations": [
        "potion"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/potion--potion.gif"
      ]
    },
    {
      "name": "splash",
      "kind": "fluid",
      "file": "examples/splash.fluid.json",
      "for": "Splash: liquid · one-shot. A simulated liquid, not a character.",
      "size": "48x40",
      "frames": 40,
      "plays": "one-shot",
      "colors": 4,
      "animations": {
        "splash": {
          "frames": 40,
          "durationMs": 2400,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Splash",
      "group": "Liquids",
      "groupId": "liquids",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/splash.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset splash --out splash.json",
        "npx -y pixelbolt@0.11.0 render splash.json --out splash"
      ],
      "alt": "A drop falls into a pool, throws up a crown and spray, and the waves settle",
      "description": "A drop falls into a pool, throws up a crown and spray, and the waves settle.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=jZPNctowFIXf5XR7YWSBCdEyr8F4IewrrImwXUlAKON371yFNCTtojtfa_SdH0k3uDEebYbB5N84uDEeeOHCyXcgnDkmPw4wFWGwR4ZBmoJNPQgX3-UeZr0l9OwPfYZZK8JkA-fMMDe8wOBH1a3ckwVhL5N2G9cqEFqZardf81ZYMnXObZzDTGDnuM1JGHc5c8OrHzoYBP_z3ZuL9sjpXbQ7RZuL0Y0iJOYOZkW42BASzA6BXQYhFpuE_ZjzeERDOER79vkKs1OklpuG4IKfYNRSE7poD_KptoTMw70JWXE-BJjdDW8winCF0duSorQBU-mZbpBWd3pNdUOItvOnVFydOYztp2jdzA2Bjz5njqlQP6rmnAOD_oBW24ZgI1uY3XpLunCl64qQso1ZlAksRelnQiemRWihlqp6Ek93dOT9eBq6R3b1wKbVv9D1HV09PaDVt0ALXfJcep_5YjPHksgfJ9sKY1kT2t4OLUuz65qQ-zheZGVFSFNkK2enCME7htlVmrRqCO0YxlIPLuXCyBVqJNEHWn9Frx7I-pOs_5NMSP4Xw2gJE8bxtcRwnoNcwo_0j5v3sin3kVM_hk5-ydkSOp97aUGJ2U_AlHt8127LMyG8_IWqSFNNz19wYj2wHU5TeSg52muCyfHE8zzPvwE",
      "playgroundCharacters": 723,
      "playgroundReason": null,
      "images": [
        {
          "animation": "splash",
          "path": "gifs/splash--splash.gif",
          "still": "gifs/splash--splash-still.png",
          "scale": 3,
          "width": 144,
          "height": 120,
          "frames": 40,
          "durationMs": 3200,
          "plays": "one-shot, looped here",
          "colors": 4,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            860
          ],
          "bytes": 14665
        }
      ],
      "shownAnimations": [
        "splash"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/splash--splash.gif"
      ]
    },
    {
      "name": "honey",
      "kind": "fluid",
      "file": "examples/honey.fluid.json",
      "for": "Honey: viscous liquid · loop. A simulated liquid, not a character.",
      "size": "40x48",
      "frames": 24,
      "plays": "loop",
      "colors": 9,
      "animations": {
        "honey": {
          "frames": 24,
          "durationMs": 1680,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Honey",
      "group": "Liquids",
      "groupId": "liquids",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/honey.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset honey --out honey.json",
        "npx -y pixelbolt@0.11.0 render honey.json --out honey"
      ],
      "alt": "Glossy honey runs off a dipper into a jar as one unbroken rope that folds into a mound on the calm surface",
      "description": "Glossy honey runs off a dipper into a jar as one unbroken rope that folds into a mound on the calm surface.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=7VVNc9owEP0vr9eNxx9ggm7NKf-B4SBb61q1sIwtQgjj_95ZG6ZJQ9JDp7fs-MDq7bfYpzMq3-90gEJnn9lVvv_Bd5U7WAPCE_eD9S1UQmj1jqFQ-5ZPIBytCTXUIibUbH_UAWpxT-i04xAY6oxHKHyrqiorYhBOk7Yq14t7ELRoHK91UoHwXTR9v6xiBqEQLefFIs1BeBBtXeY6K0FoRStXa70sQNjPmslZLBvRkiLRaY6RMJx2hXeDVGJs13EPtUFUXCR6L5K6bS_fP8E3ROCHh_m7Ia_h4r28gW_n_hz-tO8t4aeextM0zQ2DqGkame-n4P4WFkX7L_ALfAV-KNiOBK4qLsO0szPPqDMa2xooOLufOanq9Y4HqHRBMIdeh4mgVjHBed9Bhf7AhKPud4cOKiMMzAYqJ9jAs_nF-6id8MMGjqsAQj_RGKHwIfidrMWTHUo_2HCCSmKC7mx5TaBNzRdujJaEwO2sxVFG8MUQdOmkzM35wkRQVx4iPEMl6cSJ6UivDGQNJ3Q1g_m4JVTWuSnOM9R6Os9WhCNUmhJqqUyseGdD4H7OeOFq09uXFyecKgS_SfJoSUm2JfTa2INMQX4KWyfC9c6XU6ubmOLofkvoDm6YqFzvOmfDwbD0lywJHffWG-lilAYu-Qbm7posjSnLo-WWoHvWcpBSsn2Vz8jEJN1dHKVLacF530zlV5ad3PnVhFB656feoOVeQt3zUHtn5CieshgbauH4WOq5Bhg6ufu_uWcfuRvuQv3G_XF6yeT9klfrz1AJpZTR6j9VM9Ta-OMb__clxFH-4TTc5f_9219aebwRY0FxtHobZ0soHetWluqMIfT6NMy7MI7j-As",
      "playgroundCharacters": 919,
      "playgroundReason": null,
      "images": [
        {
          "animation": "honey",
          "path": "gifs/honey--honey.gif",
          "still": "gifs/honey--honey-still.png",
          "scale": 3,
          "width": 120,
          "height": 144,
          "frames": 24,
          "durationMs": 1680,
          "plays": "loop",
          "colors": 9,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70
          ],
          "bytes": 26644
        }
      ],
      "shownAnimations": [
        "honey"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/honey--honey.gif"
      ]
    },
    {
      "name": "slime",
      "kind": "fluid",
      "file": "examples/slime.fluid.json",
      "for": "Slime: yield-stress liquid · one-shot. A simulated liquid, not a character.",
      "size": "32x32",
      "frames": 40,
      "plays": "one-shot",
      "colors": 7,
      "animations": {
        "slime": {
          "frames": 40,
          "durationMs": 2400,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Slime",
      "group": "Liquids",
      "groupId": "liquids",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/slime.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset slime --out slime.json",
        "npx -y pixelbolt@0.11.0 render slime.json --out slime"
      ],
      "alt": "A blob of green slime drops, squashes flat, springs up tall, wobbles and settles into a dome that holds its shape",
      "description": "A blob of green slime drops, squashes flat, springs up tall, wobbles and settles into a dome that holds its shape.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=lVPRbptAEPyX6evWwsaQ5H4g7361_HDAnjn54MjdEQdZ_Hu1kKhx1aYtCIlBN7Ozs8sNxodOJygM9o2d8eHM340bbQPCK4dofQ-1JfS6YyhEZzsG4Wqb1ELlO0LL9tym9X3QjlNiqBueofBta0qdGxDOgnKj870IO0GPFeelFi1BXBpTP4FwEbSrdg95AUIQVFRFUT6CcBC0z3MuMsyEOHWVd1GqnYMf-wbqiEP4-hbRv1xy5BDCV8-_qJxmAhvDdVosrtGpGy5WnMLZlzVmE3THEWqfEZox6LRkXmaEyNxA7QlxrGLiIS7gqp00fYRjk8TIkj-h8in5DifCOehXmyaoY0bZpjgRJsuugdqWBD3YGiqFkQmJ-3XCO4KvYtK1EyfH23u2UB_JEt6gMsIEtXucTwRjnVtOyvYct8WmoKelVNCNHSNUuSlkhZyvP1sRKnc2JQ5S6ERw3l8WIbN6RCOm0gRC7Z1fjuEsbaU2cGy9a-TT2ldjU8sBKpvps8CQ2ju6W1bwV4kt7f4kEVvd-OudxvP_WHDvM_lJv_6G_nBHPxH8mJzt5Ue7CNmx7sdhWZ4U9BQ_xlb70C_5CZznef4B",
      "playgroundCharacters": 660,
      "playgroundReason": null,
      "images": [
        {
          "animation": "slime",
          "path": "gifs/slime--slime.gif",
          "still": "gifs/slime--slime-still.png",
          "scale": 4,
          "width": 128,
          "height": 128,
          "frames": 40,
          "durationMs": 3200,
          "plays": "one-shot, looped here",
          "colors": 7,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            860
          ],
          "bytes": 17455
        }
      ],
      "shownAnimations": [
        "slime"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/slime--slime.gif"
      ]
    },
    {
      "name": "roof-snow",
      "kind": "fluid",
      "file": "examples/roof-snow.fluid.json",
      "for": "Snow off a roof: smooth obstacle · one-shot. A simulated liquid, not a character.",
      "size": "56x44",
      "frames": 48,
      "plays": "one-shot",
      "colors": 12,
      "animations": {
        "roof-snow": {
          "frames": 48,
          "durationMs": 2880,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Roof Snow",
      "group": "Liquids",
      "groupId": "liquids",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/roof-snow.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset roof-snow --out roof-snow.json",
        "npx -y pixelbolt@0.11.0 render roof-snow.json --out roof-snow"
      ],
      "alt": "Wet snow slides off a house's roof as one slab, pours over the eave and settles in a drift against the wall",
      "description": "Wet snow slides off a house's roof as one slab, pours over the eave and settles in a drift against the wall.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=xdbNkqsoFAfwd_nf7WnL7xheYFbZ9Cy7siCK0WoNGSWda6Xy7lMH7HySqum7GVZyfnBEBPGEWg-9NBDYt79VV-thq97q7tBWIHypYWz1DiIi7GSvIDBoXb-NO30E4dhWpoHIckKj2m1jINKUsJedMkZBnHCEwK86rYu6BmHk2qYoC1WA8DfXFvUy2bBprsUyibIQhIFrMkmLRILwzrW8juuYazzWX-Uylyn3661tMpkrEFZcS2VSZTEIk717XMUL7rflWlKl0ub8y96vTLK4wJkwTv1GdyOPeezkBuIDJvAVHpxXeJxeYfCKBZ9YCDziwCMzPMs3PMkFHuUKD3ID93ILd3IHt3IPN_IAV3mEizzBtzzDLB5w4gMrXmDxQ_A-vIDgHWvCUXYdL7DVpVwb8Iq-lhfh_kW4v4ZXd8Xfem7_HO5fhHtfbpff17rvb8PTtJqm-fp1-Dn3avXjJJ6R_IfcD61_Fv5J7jVhO-jDruJFsP3Dwp-wPyz_U9f1maDqWpXGfmavB4k44bPl2UDX_uMOnnqQvRoh0oJQHQZp7CmUh4RRqQoicbto5BnsVM0bcbAHEGGjjdHzJMuv1kwQHyGFQbImTK3qKogwWBLGrt1DmOGgCHLflt_XRu3mMy-ICZ9q4puc3Igg4vSSJSHoLzVAROF5TdCb0ciyU665O08g3GYn_IaI7YEUFWe6YXvY3HBOGA9DLUs-a8dea9PgrsO8cmyX0HZJ7e3r1n5UThwvbDwjPn4jQgMRcY6L5FZijyysJB4prKQeWVrJPBKFlnIfRZYWd7R0FHsocs8aJT6LnKU-m2c981niLPdZ6mzhs2x-k56n42RsvknhZBNEHHqmMnLTEkeeFxC5eYljz2uL3bzEyd3LXhNU3xqjBl6Na0Kn9adbxm7touJVbiYQSt1p2wxH3jSmGdTY6K7iUBhka0LVmobXecj3_E4wNrKyP4HX_qP9qXvOkVIYFHd5eETuf_HjLaK3iLfPwXTtjle95qSdkrvD3v6OmUHyHnS7s9TDzj4VV8_n8_lf",
      "playgroundCharacters": 1100,
      "playgroundReason": null,
      "images": [
        {
          "animation": "roof-snow",
          "path": "gifs/roof-snow--roof-snow.gif",
          "still": "gifs/roof-snow--roof-snow-still.png",
          "scale": 3,
          "width": 168,
          "height": 132,
          "frames": 48,
          "durationMs": 3680,
          "plays": "one-shot, looped here",
          "colors": 12,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            860
          ],
          "bytes": 21546
        }
      ],
      "shownAnimations": [
        "roof-snow"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/roof-snow--roof-snow.gif"
      ]
    },
    {
      "name": "dam-break",
      "kind": "fluid",
      "file": "examples/dam-break.fluid.json",
      "for": "Dam break: moving obstacle · one-shot. A simulated liquid, not a character.",
      "size": "64x36",
      "frames": 70,
      "plays": "one-shot",
      "colors": 9,
      "animations": {
        "dam-break": {
          "frames": 70,
          "durationMs": 4200,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Dam Break",
      "group": "Liquids",
      "groupId": "liquids",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/dam-break.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset dam-break --out dam-break.json",
        "npx -y pixelbolt@0.11.0 render dam-break.json --out dam-break"
      ],
      "alt": "A plank dam lifts and the water behind it bursts out as a wave, rolls over a rock, splashes off the far wall and settles level",
      "description": "A plank dam lifts and the water behind it bursts out as a wave, rolls over a rock, splashes off the far wall and settles level.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=7VRNb6MwEP0vb69TRCCQ1Mde9tp7xMHAOFgxH2ucplHEf1-NabepKu2l2tv6AH7M85sPZnyDGX2vAxQm-8rOjP7ID8adbQvCC_vZjgPUhjDonqHQ6v6h9qxPIFxsGzqockvo2B67AJWXhEk7DoGhbniCwo9Nm5udBqEWlJnSNCkIjaDC1Fvei5ag1pjSGBAmQXtd6LwE4Tkydb7PChAGQc3uURc1CEdBW73VBYPwU1Ce5_lWYyHM174e3SyRTE4PJ6gDnodnkZz--vynnIpQ69kOEs3xm0ty_ub6L3EnURH82MRGSd4XCEkSq73u37jJvb9P-2ohsDHchNh6HyOjbjjZoYWCs7_WETNe9zxD7VJCe_Y6xHkrU8LM3EIVhIt20sMHODYBBB9HjVCPIYy9hHz0-sWGK9QhpTTJK4KebAMV_JkJJ77K8dvqC2pTElqvj1Bpku4I4wt7qP1SEcZ6DrpxvPLX8YF6a1fCK1RKuELl6UJ39liyaN6u9qz4ZF-HLxKylbD_GtY2Gh6y7D2icqkkJmOdi7w_3jdpvC9EqpOXsLi3IbAXxYpw6Wzgiw4ic7jB9pNuAtQmyQhNp4eGJfm8IITOjxcBJWGePOtWsiM0oxujGi7xrqoIzhqGOpS0yWJgbhxPawKWnfzUlodZfsP96VpOhs7z3I2ulU9pUlSE1oZOoouF_BCYQoevzuXqJDx9kdpQRgU9fpKrCI1jPZwnabc5eC1llk5YlmX5DQ",
      "playgroundCharacters": 806,
      "playgroundReason": null,
      "images": [
        {
          "animation": "dam-break",
          "path": "gifs/dam-break--dam-break.gif",
          "still": "gifs/dam-break--dam-break-still.png",
          "scale": 2,
          "width": 128,
          "height": 72,
          "frames": 70,
          "durationMs": 5000,
          "plays": "one-shot, looped here",
          "colors": 9,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            860
          ],
          "bytes": 12817
        }
      ],
      "shownAnimations": [
        "dam-break"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/dam-break--dam-break.gif"
      ]
    },
    {
      "name": "slime-burst",
      "kind": "fluid",
      "file": "examples/slime-burst.fluid.json",
      "for": "Bursting slime: burst fill · one-shot. A simulated liquid, not a character.",
      "size": "56x40",
      "frames": 40,
      "plays": "one-shot",
      "colors": 7,
      "animations": {
        "slime-burst": {
          "frames": 40,
          "durationMs": 2400,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Slime Burst",
      "group": "Liquids",
      "groupId": "liquids",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/slime-burst.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset slime-burst --out slime-burst.json",
        "npx -y pixelbolt@0.11.0 render slime-burst.json --out slime-burst"
      ],
      "alt": "A ball of green slime bursts in mid-air into chunks that fly out, land and wobble into mounds",
      "description": "A ball of green slime bursts in mid-air into chunks that fly out, land and wobble into mounds.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=xVNBbtswEPzL9LoRZMtSHH4g914NHShpaRGmRJWk4giG_l6snNQtemou5W2IndndGfIG48OgExQm-87O-HDmJ-Nm24HwxiFaP0LtCKMeGArR2YGfmjnEBMLVdqmHKitCz_bcJ6hDTpi045QY6oZXKHzbmUoXBoSzoMLo4iDyTtCx4aLSoiWIK2PaFxAud95e7w8gBEFlU5bVEYTvgg5FwWWOlRCXofEuSrdz8PPYQZ0QvnhE_ovnP1HrlcDGcJs2C34PSN1wseIHnP1xj9QEPXC8x9TNQact3yonROYO6oUQ5yYmnqSIcNVOrD3BsZHEw5YyofEp-QE14Rz0m00L1CmnPNuXNWGx7LqNrifbQqUwMyHxeH9NRbYn-CYm3TqZ5XT7yBDqM0HCO1ROWKCKaq0Jxjq3VcpbPe2PtHuuCUF3do5Qz1lJ-LVznLZVTrtsT7vsWBMmy610KlfR4sGmxEE61wTn_WVTNvep0cmcaQGh9c5vZTjLpqkPHHvvOrnKM9m0s6nnAJWv9BCIve789Q_-67_w3YfHD7rb_sffEoeS8m3Bh05N8HNydpTfehEVx3qcp82YFPQSP_NofRg3FwSu67r-BA",
      "playgroundCharacters": 666,
      "playgroundReason": null,
      "images": [
        {
          "animation": "slime-burst",
          "path": "gifs/slime-burst--slime-burst.gif",
          "still": "gifs/slime-burst--slime-burst-still.png",
          "scale": 3,
          "width": 168,
          "height": 120,
          "frames": 40,
          "durationMs": 3200,
          "plays": "one-shot, looped here",
          "colors": 7,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            860
          ],
          "bytes": 18854
        }
      ],
      "shownAnimations": [
        "slime-burst"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/slime-burst--slime-burst.gif"
      ]
    },
    {
      "name": "honey-drop",
      "kind": "fluid",
      "file": "examples/honey-drop.fluid.json",
      "for": "Honey let-go: keyed liquid · one-shot. A simulated liquid, not a character.",
      "size": "40x48",
      "frames": 44,
      "plays": "one-shot",
      "colors": 9,
      "animations": {
        "honey-drop": {
          "frames": 44,
          "durationMs": 3080,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Honey Drop",
      "group": "Liquids",
      "groupId": "liquids",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/honey-drop.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset honey-drop --out honey-drop.json",
        "npx -y pixelbolt@0.11.0 render honey-drop.json --out honey-drop"
      ],
      "alt": "Stiff honey clings under a wooden spoon, then thins, stretches, lets go and drops into a bowl of honey",
      "description": "Stiff honey clings under a wooden spoon, then thins, stretches, lets go and drops into a bowl of honey.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=fVTBkqIwEP2Xt9eeFAKi5rZzmqtni0OAMKSMRCDqWBb_vtXBcXVHt0-87tcvTafTF9Su3ykPib350rZ2_ad-q-3BVCAcdT8Y10LOCK3aaUg0rtXnt6p3exBOpvINZBoRGm0-Gw-ZLgl7ZbX3GvKCD0j8qus6KSIQzgEtylW6BEEx0tFKzWoQfjNSy3kdaRAKRplO0zgD4Z3RqsxUUoLQMioXKzUvQOgmVGWamWtGy1qlBde_ZTQrZirOMBKG865wduC6hr3j_9pA_LT2r_FpP-z9zri4H1bcfYKeHVFcKUUhnhOYwiaEQE4o3MlytV33lCuE6Druxf_D4nU4lPEqvZvCr9I7cQ0_jXff4afx4Lu2YL1ePwavjluHHgg3cNfA9Z19-5CPBF3XuvTh5u8GWF6wNW0FCWu6aeLrXu30AJmmhOrQKx_GfxERBq0ryIxgvJ78A2ScEk7K8kxtYHXtQejDQ-A7897t-PY-e3U0_gy5iSgSSU44mqF0Q_BlKUHtTQnp-4MmqKrR06NLCV6303ckEsJWn_mgy1Ql5Cx9UEoI7qh7yHikGyeJHjiz7JuUjTnBFYNXpdWT7PQ-IK-vg_AFGYdXmxGGQ1-rklfAsHPON-BDbhlhQENCFhKSIF8ba4MyL5hNPBdzmiUiywm9qsxhgExEyjpfkKspb0U4QcYxoYGcs4jeGe91zyXmBOvcduqB0ZavruIW-TMIpbMu0KC4677p9dA4W7ErEvOcUBnf8L9HoUE3gb1vHtI_wqriBcVr6V-pGcWU0OKV3NCoyp0e9H5qRCJ7WY-9zs_ffK7l44lGSpFYPOrkhNJq1R7CdA--VzwyPFnjOI5_AA",
      "playgroundCharacters": 910,
      "playgroundReason": null,
      "images": [
        {
          "animation": "honey-drop",
          "path": "gifs/honey-drop--honey-drop.gif",
          "still": "gifs/honey-drop--honey-drop-still.png",
          "scale": 3,
          "width": 120,
          "height": 144,
          "frames": 44,
          "durationMs": 3880,
          "plays": "one-shot, looped here",
          "colors": 9,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            870
          ],
          "bytes": 6130
        }
      ],
      "shownAnimations": [
        "honey-drop"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/honey-drop--honey-drop.gif"
      ]
    },
    {
      "name": "aquarium",
      "kind": "fluid",
      "file": "examples/aquarium.fluid.json",
      "for": "Aquarium bubbles: bubbles · loop. A simulated liquid, not a character.",
      "size": "56x48",
      "frames": 48,
      "plays": "loop",
      "colors": 17,
      "animations": {
        "aquarium": {
          "frames": 48,
          "durationMs": 3360,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Aquarium",
      "group": "Liquids",
      "groupId": "liquids",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/aquarium.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset aquarium --out aquarium.json",
        "npx -y pixelbolt@0.11.0 render aquarium.json --out aquarium"
      ],
      "alt": "An aquarium: bubbles rise from an air stone and run up under a rock ledge, and a filter's stream plunges in and drives bubbles into the water",
      "description": "An aquarium: bubbles rise from an air stone and run up under a rock ledge, and a filter's stream plunges in and drives bubbles into the water.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=xVZLj6M4EP4vtVcH8TCEcBwp6jtzjHIwYAcrDjC2s5lWlP--qoKkoZPu1exlLUW4Xl89XC7nCqq3J-GhgEH_lkb19iBXypx1Awz-ltbpvoMiYtCJk4QCxK-zsPp8AgYX3fgWijRj0Ep9aD0UPGcwCCO9l1Bc4QcU8FfUJGotgEGFVKwyVYfAoEYqVRWXOWIh1SiVKQUMHFIyrzc52jVI1RvBMw4MfiK1qdeCp8DAECU3a4HxWqSyKuNrxCyR4ikPU0Q5IJWLXG02wOCNvMssXmMsLVKJSlWO3gfCFIJXKDuSrOJRipQkTCUywtxOGcmkgRsD936qeuMwcye6BoodBN8s55z7Sgbsa1PnXNM0zczczdfCdO4D7X429zVp0_7OxdI_1kxp1JoZP2_xnL6S_ct2Zvqnxmj6p-6mBXsGRjYH-eqYjKEqmsWyFpnGlnZa4wa7sCznnJEZBEFZlnPlx8mM7HKmOed_Yj5wnnuiLMuXjfKauWfgfN-NCR8OqHV4ezsgv-v748Q-jOw3ZLe9I-2W7sj__cP4h_7sMaLji4WXdXheWIzX7JcgewYXKafLu51qKeVU0_t3-4mWkr4P_eV3O31lsPxugxn-_sZAKiVrTxPkMWiLKxw1ThMw-tc4l5UVJ-nGcducrfA0pNchA9P3AxTeniWDi7Cn8wBFzMBRRhx5BgfUDoxUHicmzW0GVe99f8LkldEDFGGQMWisOOA25Az6ynlRG_S6u06TDoqxQxj8JvB3KNYMXG90A4USxskbm-nSTCTdkHR5tBCPl5HkSU4KMV_aU_OSQjoChAs5NfEojl_Jx-YZHWSkkCzkdOwkjpJRHH6TzUx7M2onn7SxmNoYKtgj6Sinx44eTfSAWvKkvZd2LO30ziptvMQrj2_zLklZumcgrBRQ7GIW7xlYgY9shK-06Wvt36HYrcJgw8KA7zHUCUl3XhzlHYlnLNl8QOUsmUM1snOEtAqDKJ6BCG1X9_oTznqEsaLRZ0e2zyBYvkHYI_Vz3Z87PzWW0QrnShqyLNwzqHvTU_ZwwQ60GqdOGKQpg0tfVWakyMyTh-He5LdZiOeukXZ17yIKMuX_OcrkEWUWsvy7KOdBJovYcJS02suLwKOkezPQRYyCmEHdiq4mq_DDWcwZzz85w_9KM4d84ZGjFzOO7ysoLQ1Ointyc6AKQXxrpWt70yArDLCpGu1bDI8uywfA4NuFeU3_4Bj8eIKJWMwivkDCDIwUHY6fKzhvxbu7V-V2-wc",
      "playgroundCharacters": 1319,
      "playgroundReason": null,
      "images": [
        {
          "animation": "aquarium",
          "path": "gifs/aquarium--aquarium.gif",
          "still": "gifs/aquarium--aquarium-still.png",
          "scale": 3,
          "width": 168,
          "height": 144,
          "frames": 48,
          "durationMs": 3360,
          "plays": "loop",
          "colors": 17,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70
          ],
          "bytes": 60571
        }
      ],
      "shownAnimations": [
        "aquarium"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/aquarium--aquarium.gif"
      ]
    },
    {
      "name": "honey-dipper",
      "kind": "fluid",
      "file": "examples/honey-dipper.fluid.json",
      "for": "Honey dipper: sticky moving obstacle · one-shot. A simulated liquid, not a character.",
      "size": "40x60",
      "frames": 56,
      "plays": "one-shot",
      "colors": 9,
      "animations": {
        "honey-dipper": {
          "frames": 56,
          "durationMs": 3920,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Honey Dipper",
      "group": "Liquids",
      "groupId": "liquids",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/honey-dipper.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset honey-dipper --out honey-dipper.json",
        "npx -y pixelbolt@0.11.0 render honey-dipper.json --out honey-dipper"
      ],
      "alt": "A honey dipper is lifted out of a jar; the honey clings to it, draws up into a peak and joins it by a thin string that snaps",
      "description": "A honey dipper is lifted out of a jar; the honey clings to it, draws up into a peak and joins it by a thin string that snaps.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=7VXBcpswEP2X1-uGwRhwrFt9yj9kfJBgCSoyskFO7PHw750VaZO0cTOdXnrInvaxq7crsdK7oPHDTgco7O2JXeOHB75p3NHWIDzyMFrfQy0Ivd4xFFrf8_mmtvs9DyA82Tq0UHlKaNk-tAGqTAl77TgEhrrgDgpfmqZZmhSEc0Srap3fgqAFcbrWiwaEr4L0bdGkDIIRVHKeZyUIG0HrqtTLCoReULVa68KAcJhRXbJkdoIWZqGzEhNhPO-Md6N08ty0ukeSJP0mSRLQddeYDxL-xv0k-8_JTL8xs2uiiWv6aDJiZhPNxITo_VPCc4kt4ZuOA9l1XfKOdV0nE_3H4OG9WJIcPoOfwVfBq4btROCm4SrEV_LNA68u6GxfQ8HZw6wJzaB3PEIVJaE-DjpEgVilhJG5hioINvD8fYTKcsKTdvIC38NxE0AYolAQjA_B7-QaPNqx8qMNZ6hFSdB7W0GF4cgEXbc8i1CaFITA_Q-UFQRvxqArJw3dX54fe6h4rQgnqFWUnOXtRK-iP9XrNJc7Q90UrytlUqnj88wadwyVz4lLqfooZ7NMp-20JTTWuZh4glrHpFw2DZVlhBZqUUgW72wIPAjlluC872Zyy07Ot5Z9hTMIlXc-pkHL0YR24LH1rpZPaVJsCbUNrTSQyq5eCPahfbP8LuqtqKxo669UC8poSatrdGOra__0hu93jjQpr_bjnn_yy3rp5e4djpzSZHWVZwyD7utfiD46ly2hcqz7415GWCjkX8pATdM0fQc",
      "playgroundCharacters": 831,
      "playgroundReason": null,
      "images": [
        {
          "animation": "honey-dipper",
          "path": "gifs/honey-dipper--honey-dipper.gif",
          "still": "gifs/honey-dipper--honey-dipper-still.png",
          "scale": 3,
          "width": 120,
          "height": 180,
          "frames": 56,
          "durationMs": 4720,
          "plays": "one-shot, looped here",
          "colors": 9,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            870
          ],
          "bytes": 26363
        }
      ],
      "shownAnimations": [
        "honey-dipper"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/honey-dipper--honey-dipper.gif"
      ]
    },
    {
      "name": "glug",
      "kind": "fluid",
      "file": "examples/glug.fluid.json",
      "for": "Glugging bottle: air pockets · one-shot. A simulated liquid, not a character.",
      "size": "40x56",
      "frames": 110,
      "plays": "one-shot",
      "colors": 8,
      "animations": {
        "glug": {
          "frames": 110,
          "durationMs": 6600,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Glug",
      "group": "Liquids",
      "groupId": "liquids",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/glug.fluid.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset glug --out glug.json",
        "npx -y pixelbolt@0.11.0 render glug.json --out glug"
      ],
      "alt": "A bottle upside down over a glass glugs as it pours: it holds its water back, a big bubble pushes up its neck, and it pours again",
      "description": "A bottle upside down over a glass glugs as it pours: it holds its water back, a big bubble pushes up its neck, and it pours again.",
      "altSource": "README.md: first matching fluid image",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=7ZU_b9swEMW_y-vKCvpjyS7HLp49Bx4o6WgRoS2bousYhr57caekiQIXCNChGcLFuvcTj0fq_HiD7cPeRGgc3RN524cdfbf-7Foo_KIwuP4AnSkczJ6gsfPnHRQuro0d9CJV6MjtughdVgpH4ylGgr7hJzS-ZW1hlwYKNUe5rWyTQqHhqLT1glaci6PW2spaKKw5KuzSlhx1HNWWVg1HJ46aZVtRBYUNRytrFjXXGiWnWVTFCqPCcN3XvR-4krqP0RP0A9bvBi-XzMZfpO5L-lfpYwd9R0pm2jph6a22TibpVeOHSXrR5Oc_SFuFnTfDwM23OSV3x2nDvfwFPyXc3B2nDX_ZaOrJVuIHB7ajAllLTRRjEi_VNzy6QwsN706T7dpg9jRAZ1mq0J6DiWLCVaowELXQhcLFeC9t5clGKAQxYSVm1--5POvdETpNlgrGBV5niM7aA3E7snHX57r2JJU0ve-DpLvw1OAG4qmVwqWvZZdpUoyjQl8P0TQy6-H2bLLQLxar8ASd5QpX6GxUb16Y_gXCl4KLHzM-naXwVHhZjrwH572sxHkLAQu5MLKF3A15ylmepvgKnT_TXGj2AssJlhNM57CaYCVwNWdTrflSWHWXrd6wimumvYuR5DS3Cr7vH2UH1pHnr9zSYXDxyrfgn0OvpZ26QEPX-5alNCm3Cq2LHQVo2eVrgmPsZtMbuWDfp8hUPkuxVWg8mcP5OPVCMNcBOoYzjeM4_gY",
      "playgroundCharacters": 803,
      "playgroundReason": null,
      "images": [
        {
          "animation": "glug",
          "path": "gifs/glug--glug.gif",
          "still": "gifs/glug--glug-still.png",
          "scale": 3,
          "width": 120,
          "height": 168,
          "frames": 110,
          "durationMs": 7400,
          "plays": "one-shot, looped here",
          "colors": 8,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            860
          ],
          "bytes": 69716
        }
      ],
      "shownAnimations": [
        "glug"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/glug--glug.gif"
      ]
    },
    {
      "name": "effects",
      "kind": "fx",
      "file": "examples/effects.fx.json",
      "for": "Particles: sparks, embers, dust, leaves, shards.",
      "size": "48x40",
      "frames": 60,
      "plays": "loops and one-shots",
      "colors": 12,
      "animations": {
        "sparks": {
          "frames": 9,
          "durationMs": 495,
          "plays": "one-shot"
        },
        "embers": {
          "frames": 16,
          "durationMs": 1120,
          "plays": "loop"
        },
        "dust": {
          "frames": 11,
          "durationMs": 770,
          "plays": "one-shot"
        },
        "leaves": {
          "frames": 12,
          "durationMs": 840,
          "plays": "one-shot"
        },
        "shatter": {
          "frames": 12,
          "durationMs": 720,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Effects",
      "group": "Particle and spell effects",
      "groupId": "particle-spell-effects",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/effects.fx.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset effects --out effects.json",
        "npx -y pixelbolt@0.11.0 render effects.json --out effects"
      ],
      "alt": "Particles: sparks, embers, dust, leaves, shards.",
      "description": "Particles: sparks, embers, dust, leaves, shards.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=zVXLkqs4DP0XzVZxYV4h_ECvb2WRRYqFA4ZQYwJtQ_elUvn3KZmXmUnPbGeFJdtCOjpHfkLZ6kb0kEJX_5aqbHUlD-VvQPiS2tTtA1KO8BCNhBRkWcq8N4DwXRf9HdIwQbjLurr3kIYeQieU7HsJ6RMukMIfZVmGRQwI42QVPCartVaYhEEOCJqs3A95IADBkFUk-VEkgHAmSwRJcQwBYSArLqMi8gFBkXVLivxI9yqyjqcbj8j6ICsojyIk69NGOYk4pyi_bJRbnCQJvBDM2NxaZSjne9tDeoULZAjfQjdkjGTkbavIaMkQ5k5rTetSCXM_eGQzdmEMENhlvND3Ml7Gi2NP--sdbv_EGLNn2DjdHdnIHHvazxBkc5P6cKsrmxJdacfVv6Y5nSrqZs118shHsWbcDWW5BGLG2N8YY872ez6fB_r9-Tyw5fB0cN62m8MaxzRCWWAM7Tgb8x_P5FBSlAdBpqpscdXH6r7Z6Ir6tzlzclbk_LBZ5Pe6mwJ8_qL-bU57_dP2dHHZy4x8n5uzmM5lLwTxyO8tQeaHGMQE0Uzq9AmmE_pPuyq1aKSB9IRQDFr0VghRhGCkLCDlnKCt-15qA-n1CaQgG9HLVrXYPgPCbdCmtzJSdSkh9RHMXXQU_roSaKMFQagECaZ95BJe-D76FBVBaEnQBOhn2698qrNSkq55EQZBlCGYzuZ-5SzBgIUZQqXFV92PkF499FhAEQotKkg95oVLutcYT5a1LcEWxAi3dqDMUo8FkVsLyWcWziyZSSwZQq9FrQjYvFUUBjQJWD4qmiL89aLOWK7u0OexC__RQ1Bt20Ha60EurQh_6gSVPIPDfYuOFr3NOnLQiSL0Excdj8XIGc_W8rmPPKED39SUJ4imU3U_FHYPqSOd1HVbQHp8uWhskl1k6grUlSbBXhvTqi-bnh9ZOIqBWumAwf8OxgRA_BYAfwJgJouSpcOVEPnGlXgDgx8T5Kd4BwZRxeUFD_a0ORBVNrBOyOn0hoKdIM7U-ccSdqPEGR_Zxvx4V4y2781_VhOEJHD_f1MN9VRJ8SX3FPffd_X0A60tFRdaexhupSeu5j0MQs_VPPq28L3ibbAVi03x3JsLf0d5Fu5IH7ukvy7Dfh3vGV6X5TrdV18O6-uQbWPPahxBy0Z0tngiAj3vyg5Detqr-cFX8HovHnMXhN3PSMcr0sEPSPvxhnTsAn36t-HqzwzbAx1G7mhNFqAppWWuRru5usN0fv8ItvnVW5f5tiwgI5K9Xn8B",
      "playgroundCharacters": 1328,
      "playgroundReason": null,
      "images": [
        {
          "animation": "sparks",
          "path": "gifs/effects--sparks.gif",
          "still": "gifs/effects--sparks-still.png",
          "scale": 3,
          "width": 144,
          "height": 120,
          "frames": 9,
          "durationMs": 1300,
          "plays": "one-shot, looped here",
          "colors": 4,
          "delaysMs": [
            60,
            50,
            60,
            50,
            60,
            50,
            60,
            50,
            860
          ],
          "bytes": 1191
        },
        {
          "animation": "embers",
          "path": "gifs/effects--embers.gif",
          "still": "gifs/effects--embers-still.png",
          "scale": 3,
          "width": 144,
          "height": 120,
          "frames": 16,
          "durationMs": 1120,
          "plays": "loop",
          "colors": 4,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70
          ],
          "bytes": 1646
        },
        {
          "animation": "dust",
          "path": "gifs/effects--dust.gif",
          "still": "gifs/effects--dust-still.png",
          "scale": 3,
          "width": 144,
          "height": 120,
          "frames": 11,
          "durationMs": 1570,
          "plays": "one-shot, looped here",
          "colors": 3,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            870
          ],
          "bytes": 1588
        },
        {
          "animation": "leaves",
          "path": "gifs/effects--leaves.gif",
          "still": "gifs/effects--leaves-still.png",
          "scale": 3,
          "width": 144,
          "height": 120,
          "frames": 12,
          "durationMs": 1640,
          "plays": "one-shot, looped here",
          "colors": 3,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            870
          ],
          "bytes": 1682
        }
      ],
      "shownAnimations": [
        "sparks",
        "embers",
        "dust",
        "leaves"
      ],
      "alsoAnimations": [
        "shatter"
      ],
      "gifPaths": [
        "gifs/effects--sparks.gif",
        "gifs/effects--embers.gif",
        "gifs/effects--dust.gif",
        "gifs/effects--leaves.gif"
      ]
    },
    {
      "name": "fire-explosion",
      "kind": "fx",
      "file": "examples/fire-explosion.fx.json",
      "for": "Fire explosion: fireball and smoke · one-shot.",
      "size": "96x96",
      "frames": 16,
      "plays": "one-shot",
      "colors": 9,
      "animations": {
        "fire-explosion": {
          "frames": 16,
          "durationMs": 955,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Fire Explosion",
      "group": "Particle and spell effects",
      "groupId": "particle-spell-effects",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/fire-explosion.fx.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset fire-explosion --out fire-explosion.json",
        "npx -y pixelbolt@0.11.0 render fire-explosion.json --out fire-explosion"
      ],
      "alt": "Fire explosion: fireball and smoke · one-shot.",
      "description": "Fire explosion: fireball and smoke.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=jZTBbqMwEIbfZfY6QTYYQvwY3UMPEQcTTGIFcNY2baOKd1-NSQhNd1d7iMSM4_Hnf_7xJ7TW9SqAhIv50F1r3VFv2g9AeNPOGzuA5AiD6jVIaI3TG_1x6WxcQXg3TTiB3BUIJ22OpzB_X1SnQ9AgP-EVJPxo27bWBSBc56jJRAMIdo5KldaA4ChqCsFi9EJR2aYq1YDgKaozlSva9zOuFduyTAHhTFGuhM5pX0NRVmdcMJgQ_LWvbeeJRPe1dpvaHEHu4fpK51-hwjkfc0u0aUxPGfvI6KGhjINqQtBtqw8hVn2ShDJO9dqD5AVCMzoVlrztQYocIViQnDEErTzJaoaIqnUDcovQWXuOtf3JHs70cbCddX4mIhERXoksnJz2J9s1tMSSNEeW0K8kRgL7uvclioz_rMFLZEmWIktEgSwpBJUTVM_39vxU8Bx78b1IhizZ5hVCZ8LXHf5P2LH6STXfqv8BL6c_2zF0ZiDlGpgmhEOn1TBe5u1u0LQ_uFEj-ODU9RZNCJ26xsX9J5wNNRScGY4wSw7yJjgCzcNelFikFS793HMsKwSnGjPGkKEoqmUG9jvMMasQ_K9R-VP8P0sEVRisoT6zpMwR_EF1GmSOcLHv0Xg8CrYj4asJFzQflHugxXY-yPJiTcYwXZOlBXJR0QFmIJeWD0gREaMpCehBwZMU4TCSqLW1PaxA6tH58N8kuyeNUoFpsRZh-xcRcuQJv1s4raY4eiaEe8dub9Dsw8f5gpqinFYg91k6X3wmlrzEqGIAKRDUcKQz96lgmDFGnbrEkbs5lsCPTr2ZcI0X2bCEkYkbp47EzcnPrZ5vNR_T2ZpMd3fPjWy5vcASt5gmeTWRnF8UuyOKBZE_EPmOYZavEXlSYpYUT4jkmAcgyxbCLfJo3c5aB3JbItR2HA5R_yxO2yW2a_Uo3h_C9RO4fvxoGJ0y3TKkND3kCj0cyVp8mqppmn4D",
      "playgroundCharacters": 1032,
      "playgroundReason": null,
      "images": [
        {
          "animation": "fire-explosion",
          "path": "gifs/fire-explosion--fire-explosion.gif",
          "still": "gifs/fire-explosion--fire-explosion-still.png",
          "scale": 2,
          "width": 192,
          "height": 192,
          "frames": 16,
          "durationMs": 1760,
          "plays": "one-shot, looped here",
          "colors": 9,
          "delaysMs": [
            50,
            40,
            50,
            40,
            50,
            40,
            50,
            50,
            60,
            50,
            60,
            70,
            70,
            90,
            90,
            900
          ],
          "bytes": 10576
        }
      ],
      "shownAnimations": [
        "fire-explosion"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/fire-explosion--fire-explosion.gif"
      ]
    },
    {
      "name": "fire-spells",
      "kind": "fx",
      "file": "examples/fire-spells.fx.json",
      "for": "Fire spells: projectile, impact, area, buff.",
      "size": "64x64",
      "frames": 107,
      "plays": "loops and one-shots",
      "colors": 9,
      "animations": {
        "projectile-0": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-45": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-90": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-135": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-180": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-225": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-270": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-315": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "impact": {
          "frames": 12,
          "durationMs": 676,
          "plays": "one-shot"
        },
        "area": {
          "frames": 19,
          "durationMs": 1201,
          "plays": "one-shot"
        },
        "buff": {
          "frames": 12,
          "durationMs": 960,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Fire Spells",
      "group": "Particle and spell effects",
      "groupId": "particle-spell-effects",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/fire-spells.fx.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset fire-spells --out fire-spells.json",
        "npx -y pixelbolt@0.11.0 render fire-spells.json --out fire-spells"
      ],
      "alt": "Fire spells: projectile, impact, area, buff.",
      "description": "Fire spells: projectile, impact, area, buff.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=1VjJcts4EP2XnmubhZWk-BmZQw4qHSCRkjimRA1JxeNK6d-nGuACUoupxDnYqTjBQuB1o_u9Bn7CtqwOpoEETvl_WbEtq132sv0PEH5kVZ2XR0g4wtEcMkhgm1fZS33KiqIGhLc8bfaQhAphn-W7feP-fzJF1jQZJD_hOyTw13a7XWchILy7VipVCgila8VGrAGholYaKmZb36gVb4URGSDU1FpLow1997cdC6M4FoDwSi1tVKbpu5Raci25YnBBqN8P67KoCUl2WGfVyzrfQbKE9--0_zus0PXbvr71kuYH6imHnuyYUk9FPbuqPB_Tlyo_2rUC_ycd_4zGAGE0LQiuP53OvZ42-sCb-2BiN72b-9FMO9vNnTOVJv_Juc_gfcoPT_m365p3bqPBe_GwQthmWTNE0j0svc-uJ6ST0dQfGUa79ghK6iGeoOuazv-3cKUfRMjjc54z-njfDzAPXRPXw-qCYI6bfUlZLwUqRlm-3WabxhLFqSr_yTZNXlgC21bmkNWQxAjpuTKN5cOQIRRleYKkqc4ZQp1lKSQKoTlXR_rKHHcFfbVkqDQuGHKpkccMhdAoIoaS6xWCWZfnpkdxsYu-WhDEs_TvpizKihaCb5YjiTWJRxG-U_g0-yqr92WR2r0CLpAFElmgkQURsmCxulwQNkVmjueTW686ZrRgC7ypzHvbou3Nux1c_oTXnBgP1pk5gMPVsj8gGItZOs81JSRLzlyjFQQuELYmzSBhwQLhrVyvC9sQGuHN_MiK7LijiZFr1pAIhGOZ13aW1gj1xtAnEuFUvhFB80BecMB1rurmMbDKpPm5tnv0K0uEdZkXkITeurw_wIvl-7xpOi_YBUUbI6bKjLM1tMs3dskI3WnTSMhQMJpan-yCSxYo5CuEtDI7msw0QpFvabLGiCbuzckGiqdPnSb5auTr0OpCoZIfTmbT-CFKXh9ilPrLAySKuTPijCFkhvwA-dGKo8UY_X7UxRR1FHoqRBaEClkQh4SxPpSvkwVfrYBfL6KtnwpXRCxfqOPF9TTjBeobHwttd9vbkBvvdj2ZxTS5PDdFfiRnpPCbOVI3proTim3kdCe0ZNbKLjJ5RFGYHxvHL23ySBtbeWkzwQtTgbA5E-B93sDMVLjeX3n7LzVyjlwip94h_frsU_32Sx6EyANisYATuaz6YCI3mmo-IrnwEQnkfrIuCY1GHvqAFj0g7QFqKU4R1wn6xeIVwr60qciQtVQYapt_-bax3S8PkVslnudKPnblAnk0EOBSo7ptgedSFkS65Wq5uqKetuB2KeR5z2MiqdzJOX8nXKGNxcbu0pGSkKQ2Y1KSNgx3lfmRN-_OLcRNHlERl7REFVmiWhflmpKjdU0Hq7dfYog60KhQBJpUp7fAElc99WOLedFD5mMelbEPWQQKZRBPQJPfPG4Ne8jqI26dx7MITWVILVpKgcTyYCde_GKJ2B2GR8OLWzSsP6Bhzj0erjdltdmPqSy9QWXyK5Es_qq86DaTFelMGH9KWTNmqNbf91JdIV-MOCpCQUpPMfbv2dT7lo6k9nM-7HM-7KoO5vOpQvdXIm9ZwNaEv8iqU54XI8CtBQ_Qjki_I9GARJ2ybkBNOImcb0qROVfmCqG7g0Myuje3wLlAqSYCqT0apf0kSuIUZ5FFqzzcsV8qOi-LEcfGFDAxwY5btaD9ipLSWUWf5G-S0dhXdv3Q2YsboH3MhFZ1ssYfBUXdVHcrdBE55zb7qjzvCMlShCjUCpcixng1VjMuPb-HuMAIqacxp5HcSuu_fWbSNkA4_bETyQxPeG3AvZl3S-1-0U861Vb9dL4f1P1LKjg4Vc7uBOWVO3oKnekXFaIMx35RIYpohUulSVEn9cnYMTGGX80xYqZjeOiKM88xXKPkKyTK4_HUMeqrO0bOzSSBSk8yiaOkiBGCMmqSSuKrp5Kem0r8yjFKIJHdUlmFfMAxEXKG8VfzTPiLhXrcPxlIq7Wu6CX9ObbV31CwxyiZmBbsgb4u2e01qa9_4ydLdmEL9hAVietHRbuMPXPC7tLW9Brs7BGdPcyzR2sUsR7ZQ9dIceMKMqrnxfStxJ7zTzCHU5E35zRzEUPlSVblpT2c33lRWZ-32_vvKfHNNz_9xOvJvdLWXgJt5P1uWfu4_hremju-X6D0MlJ09ZUcJUykr6sVHg411HAnZ8FiLqFyVHxCqAKlIELteKNFFU3oQXd3fj5QBA2ENnUHkmD3iEEMxOBZqW6_OfLhfjaXEuWVaUSJJKLKluHPmUYPGNiP2seMP2Pf3CJBhFb4RkenLdtRwSmEZ184y77Y3X90e9WYWGfZ5TPsm6v1xL4T--TC2ScjFPxJ-1xoOmG7EZyfZp6ae3wS1fRSoIZSJvbM07OOzx7cok1AfSM-P83EZ4qSiYmKOROVQLF42sRFF592fPEHTbxbXVzpsQgHPe4eIzw97sU3FCiieCS-8e1iwpYcN8S3Ffs_q76Xy_8",
      "playgroundCharacters": 2543,
      "playgroundReason": null,
      "images": [
        {
          "animation": "projectile-0",
          "path": "gifs/fire-spells--projectile-0.gif",
          "still": "gifs/fire-spells--projectile-0-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 8,
          "durationMs": 480,
          "plays": "loop",
          "colors": 5,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60
          ],
          "bytes": 2326
        },
        {
          "animation": "impact",
          "path": "gifs/fire-spells--impact.gif",
          "still": "gifs/fire-spells--impact-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 12,
          "durationMs": 1480,
          "plays": "one-shot, looped here",
          "colors": 9,
          "delaysMs": [
            40,
            40,
            40,
            40,
            40,
            50,
            50,
            60,
            60,
            70,
            90,
            900
          ],
          "bytes": 5604
        },
        {
          "animation": "area",
          "path": "gifs/fire-spells--area.gif",
          "still": "gifs/fire-spells--area-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 19,
          "durationMs": 2000,
          "plays": "one-shot, looped here",
          "colors": 9,
          "delaysMs": [
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            60,
            50,
            60,
            60,
            60,
            60,
            70,
            80,
            70,
            90,
            90,
            900
          ],
          "bytes": 13191
        },
        {
          "animation": "buff",
          "path": "gifs/fire-spells--buff.gif",
          "still": "gifs/fire-spells--buff-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 12,
          "durationMs": 960,
          "plays": "loop",
          "colors": 5,
          "delaysMs": [
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80
          ],
          "bytes": 7240
        }
      ],
      "shownAnimations": [
        "projectile-0",
        "impact",
        "area",
        "buff"
      ],
      "alsoAnimations": [
        "projectile-45",
        "projectile-90",
        "projectile-135",
        "projectile-180",
        "projectile-225",
        "projectile-270",
        "projectile-315"
      ],
      "gifPaths": [
        "gifs/fire-spells--projectile-0.gif",
        "gifs/fire-spells--impact.gif",
        "gifs/fire-spells--area.gif",
        "gifs/fire-spells--buff.gif"
      ]
    },
    {
      "name": "fireball",
      "kind": "fx",
      "file": "examples/fireball.fx.json",
      "for": "Fireball: loop · eight directions.",
      "size": "56x56",
      "frames": 64,
      "plays": "loop",
      "colors": 5,
      "animations": {
        "fireball-0": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "fireball-45": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "fireball-90": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "fireball-135": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "fireball-180": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "fireball-225": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "fireball-270": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "fireball-315": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Fireball",
      "group": "Particle and spell effects",
      "groupId": "particle-spell-effects",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/fireball.fx.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset fireball --out fireball.json",
        "npx -y pixelbolt@0.11.0 render fireball.json --out fireball"
      ],
      "alt": "Fireball: loop · eight directions.",
      "description": "Fireball: loop · eight directions.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=fVLBcqswDPyXfVeVMRAS4s_opYcMBxNEYGowY0zTTIZ_78ikaU7vZK8srdYr3dE6P5gAjan_Zts6f-G39huEL_Zz70bolDCagaHR9p5rYy0I174JHXSxJ3TcX7qw3SdjOQSGvuMDGv_atq15D8JtQ02-a0BwGypNVoPgBTX7nYroXVDZZiZjrIT5NtTOzsLIQ83-re4v0CfcPoTnhoq2eIw90VvTDxJxfxEeG4l4VCvBjOfOSU1WUlZKTtvyOcQ2z1_K3ZuBZ-iS0CzehGjIXhGscxN08AsTZuYGekcIix-lyowXK1UnRbuCjorSvKC0VJRlBWUHRXlaVARTuyU8NayR9PMpQc6zs84LEd6jT-KceEn4kI-FzvPcOdvEXkmakUpyUklBKjmQSsqyWlfC2bIZl2kj9CML40N58Ob2QNLf3OLj6Y7PXuxCzWbAJuwxfxBMFH3cjAsO-lRs98dSpBmhNQ1Dq-RIuLq6thFkBeFqvtjyeJHEwwZn6Iwwun6OWQVhPhupyAmTu8ps0yRf6U_V4ufwf1neNP0yQx-E7kmdE2rXW-j9C7PIfYxwjdvSh_BrQ-RMDxun8WwE7mjrECLngbZ5y8teUaZURZinSHiS36RJXhEaby6SrnYE27ccXROeuTNTXJaX_f7d6ddtft3jaq3Wdf0B",
      "playgroundCharacters": 732,
      "playgroundReason": null,
      "images": [
        {
          "animation": "fireball-0",
          "path": "gifs/fireball--fireball-0.gif",
          "still": "gifs/fireball--fireball-0-still.png",
          "scale": 3,
          "width": 168,
          "height": 168,
          "frames": 8,
          "durationMs": 480,
          "plays": "loop",
          "colors": 5,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60
          ],
          "bytes": 3964
        }
      ],
      "shownAnimations": [
        "fireball-0"
      ],
      "alsoAnimations": [
        "fireball-45",
        "fireball-90",
        "fireball-135",
        "fireball-180",
        "fireball-225",
        "fireball-270",
        "fireball-315"
      ],
      "gifPaths": [
        "gifs/fireball--fireball-0.gif"
      ]
    },
    {
      "name": "fluid-blast",
      "kind": "fx",
      "file": "examples/fluid-blast.fx.json",
      "for": "Particles and effect shapes: blast.",
      "size": "96x96",
      "frames": 32,
      "plays": "one-shot",
      "colors": 8,
      "animations": {
        "blast": {
          "frames": 32,
          "durationMs": 1730,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Fluid Blast",
      "group": "Particle and spell effects",
      "groupId": "particle-spell-effects",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/fluid-blast.fx.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset fluid-blast --out fluid-blast.json",
        "npx -y pixelbolt@0.11.0 render fluid-blast.json --out fluid-blast"
      ],
      "alt": "Particles and effect shapes: blast.",
      "description": "Particles and effect shapes: blast.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=xZfNjqM4EMffpfZaQcY2hPAYM4c-RDkYMIkVgiNDOh21ePdVmQScSba3Z6alPkTCJhS_-uTvd6itO6gecjiaN93U1m31on4DhFftOmNbyGOEVh005FA3J1MtikZ1PSCcTdXvIF-lCDtttrt-vD6qRve9hvwdXiCHf-q6LnQKCJdxVQlZAYIdV5niBSA4WlWpZLyAAaG7HArbdGRjfFv-Dk6X5ujNPkUmtOfU-u3YWL85MadyZqbrv2ZG-EGrrOaKa0DoaFUIlSh67qe_ly6zjAPCnlaJkjrxvuq61mXvfZ1JyUunDrqDXHCE6uRU7_dThtBpXUG-RChO9qLa8gI5i-IM4Xx1acEiJhFeretNaXp_XyBUpuvM8WqIRbFYJgiltY1pt34jRaicGq8R9MH0vXYd5Ov3uQJUtwMECv9acBTLDYJTlTl1kCdE5ChbMUKvD0ftVH9yGnIepQh1Y8q9dmRdDjiZ9AlexKHRLDAq6ZJSQ0RtBTk5otvOu8Uf3pMhRVH5P0YcobWmo4d_AUgeAPgNgMt7r0QA0PXK9TOKDFEi-QAjZxi_-DSMuMFIhkJ8DMOfwDzE_09B5JSWJUoZgPAo-e-4hCmKH-Myw8SUr0_DJBMMQxF_LkUhiniSojAyv4GSTtWyRBkmiD-iiCtKEqAwcvwOJQ5L1wN8AqbShTPd3DxxgkJEScATR3ddOddMd1Ru76dOaU8t7UVLhMbUGvL1CmMyUtrG-v6HFz8Lx5_1s2-D0DtlGsh7d9IIqt029GicZshjvqE3-Dm1Fph4pK1Tr975NUMW-b_cpg0TCLVtGnuGnA2PDs7NyZAvv9W9VYZcfrF7U7vzFHn8ne5xniFffrF78xBJowQ5_94C5WmG4qsLdBpNUnxzgfJVhuKrC3Qad3KJQn6ne4JnKP6yQDcIjbV7r2tqo5vKOzpO5pBq7yl2Tnc721S0xSJG2qQy_W4cxl7vkkpq6dOgLtpJoPB9ZPan14ePpjmySCb35pPQ_qtqTvrOfLdTlT3_L7S4Myo_ttl4DRmafAab_o7J8EMXGv7hUz2mnGL08iwqGbIowRjjaIk8knfvfRYeKqxGq_Z0pOrreqcu3VhFwzAMVEnmcNXAgeAmIX4otFsUZktoFypJeyEgv-_3ptWiMgfasfOO_8SvqXL9O8qdpWdkhglFPxD504HmucCnfXuAXCYIvYU8YwhakRAA4zEn9U817C2Ooty32i2yH0Y08RFlUbaheATBKq1rveAfe-4udggNlfd4Gtib1pdfryh9YzPdnw1ujt-cXDMMZdKaZ-hb9GhNS3HJprPZWiL3_-yNveXYnn0G4kh4bITy5LWYtQdfaFceRweZT_LEuAp5YoaSbWaIJUoPfBVhLMoShK5UNIQeiFZIPTZsfjkzdUdnxkPleJ69qUfwk-k8BXaUbinG1FSF3nlnxnvv9_TXSbsKZe6sTBiKhAWTkaQ39-G6n43il9F4ncopxvR03Vgq3UwiFPbUlvp6eux26ugjFzTKrTnCtggbYp7i1-KkJFGGdLulMMfDsBmG4V8",
      "playgroundCharacters": 1607,
      "playgroundReason": null,
      "images": [
        {
          "animation": "blast",
          "path": "gifs/fluid-blast--blast.gif",
          "still": "gifs/fluid-blast--blast-still.png",
          "scale": 2,
          "width": 192,
          "height": 192,
          "frames": 32,
          "durationMs": 2530,
          "plays": "one-shot, looped here",
          "colors": 8,
          "delaysMs": [
            50,
            40,
            50,
            40,
            50,
            40,
            50,
            40,
            50,
            40,
            50,
            50,
            40,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            60,
            50,
            60,
            60,
            60,
            60,
            70,
            70,
            70,
            70,
            80,
            880
          ],
          "bytes": 21167
        }
      ],
      "shownAnimations": [
        "blast"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/fluid-blast--blast.gif"
      ]
    },
    {
      "name": "healing-circle",
      "kind": "fx",
      "file": "examples/healing-circle.fx.json",
      "for": "Healing circle: magic circle and pillar · one-shot.",
      "size": "96x72",
      "frames": 18,
      "plays": "one-shot",
      "colors": 7,
      "animations": {
        "healing-circle": {
          "frames": 18,
          "durationMs": 1260,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Healing Circle",
      "group": "Particle and spell effects",
      "groupId": "particle-spell-effects",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/healing-circle.fx.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset healing-circle --out healing-circle.json",
        "npx -y pixelbolt@0.11.0 render healing-circle.json --out healing-circle"
      ],
      "alt": "Healing circle: magic circle and pillar · one-shot.",
      "description": "Healing circle: magic circle and pillar.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=zVTLjqMwEPyX2msHAQHC-kdGEeLghAascQxryGSiiH9ftZnZJDOH3eNeohTuR1V12ze0gz_pGQqjeWfbDr7jTfsOwhv7yQwOKiE4fWIo9Kytcd3maPzRMggX08w91M-C0LPp-hlqlxJGbXmeGeqGBgo_kizbpi0InaBUlzoTdBKUt812p0Gwgg5Fm-sYhBdBbda2XIJwDajlOETuV9QWxwwLYbqeDoOdpNs0av9qeXMwHVSFaB9J-MseFP7X9Bkhp_sHvGnMSb5dUS8Ebls-zqHiF8nqhtbrE09QSUlozl7PwaRdTJiYG6iUYIfhNWT7sws5x8EOfpIGTXBBtIvimjD3nqd-sI0cx1FCcbTNKY4KiqMyrQmNmXv2UHFULgS7uvxY8l5ObPtbyfyp5HZZCEfL2p3Htap3LGVnf2Zpp68BVje8GifD7Ox17LFqhFoVEmSDqqykXBh_OlTFlJQ1wevGnCeobUEwzq2di4ww_TrrqYeqhGImqVJOvI0JzXA-iOPChDAOxslEJGvmMWzlNBoXuqSZpPIbaxtE5YTODheoWBIv0rBKSJr8pFgIGmtDYhzFxcdPTWA9yZZb41h7LPRHszeu-0fJBSXpg-RqW1Am7D5uSpWTHH8X7gYjzeMov1MOdKNt_cDkwPp0Z7Iuwxcq87CCJ1o5JcUDCxkMJVlQffctzQmX4RBcD6bgot_YsuskSWYieILaZIRWNyGsfCJchD3Lw8Z9c_S77kViTmaeP5fsU0kme6M9a-Fe0C5YOoeGhWyA9nPYBRZXkoKgXRdudVrklO7ycLPDdaziqKQkkhlY0_I6ItE99XoM3jy9GvcX4vltqAkH7sMQ1qtx55oX_xvXpV6W5Tc",
      "playgroundCharacters": 927,
      "playgroundReason": null,
      "images": [
        {
          "animation": "healing-circle",
          "path": "gifs/healing-circle--healing-circle.gif",
          "still": "gifs/healing-circle--healing-circle-still.png",
          "scale": 2,
          "width": 192,
          "height": 144,
          "frames": 18,
          "durationMs": 2060,
          "plays": "one-shot, looped here",
          "colors": 7,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            870
          ],
          "bytes": 22214
        }
      ],
      "shownAnimations": [
        "healing-circle"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/healing-circle--healing-circle.gif"
      ]
    },
    {
      "name": "hero-magic",
      "kind": "fx",
      "file": "examples/hero-magic.fx.json",
      "for": "Particles and effect shapes: teleport, aura.",
      "size": "40x52",
      "frames": 26,
      "plays": "loops and one-shots",
      "colors": 17,
      "animations": {
        "teleport": {
          "frames": 14,
          "durationMs": 980,
          "plays": "one-shot"
        },
        "aura": {
          "frames": 12,
          "durationMs": 840,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Hero Magic",
      "group": "Particle and spell effects",
      "groupId": "particle-spell-effects",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/hero-magic.fx.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset hero-magic --out hero-magic.json",
        "npx -y pixelbolt@0.11.0 render hero-magic.json --out hero-magic"
      ],
      "alt": "Particles and effect shapes: teleport, aura.",
      "description": "Particles and effect shapes: teleport, aura.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=rVjLcqtIDP0X3W2bggb8YDmL-YGZqbtwsWigeVwwzXS3k9gp_n1KaiDYSSo3mWSRWA0-OpIOksgzlEqfhIUEhuZJdqXSldyUT8DgQWrTqB6SgEEvThISqKVWm5OomhwYPDaFrSGJfAa1bKraQhJzBoPopLUSkmf4CQn8KOkHGORo7Ut5ICtDKyp3OVkPaG1FWGYxjAzM5ZSpziAGusS_WubNQKhvER6UkeZ9zi9sQ_7CNtzesG2RQ5AFW74FBk_ESIZlKIDBBa2c77IYI79SXH522EtgoNEKyyDneM2gtSt5FhbAAGn-yPbRNsQoz2hJfydjDgwGtDjn-ygCBv8SyiHabTNgoNCKxbY8HOZchYJHPJjzuJVRFPrAoCYuPA8i5FIRT38vuMA8anEaDCTHIzxREEg9ZUfQRBTpISk8GYgCOk5TBp1LEOcxZkhbqoRV2lApTsLQgWmuEpLjjh1S54rSngkjIeEM1Nl2TY8laJHLoJreAdXNAMnRZ1HKwNTq3BVSQ3IM2CZMGfQyb50VpeOI1RIFCUA9YijgeW3btp4HDLy2quu6xY9thR_rlj7W12t7bd0N1-t1-ni5Xq8X-ui1l8uFvuYRmudBykD0ea2QSMR26cjA1k1Vo-dM9SSQTvYVaihe1HQMWbjEzufYg9vYGeSCqgBanXtUhfub3iRF9gUk9BuDNnXTf-iaf8K1UXkr7W_5LoX--6uh-_8_9FLov74Y_bvePxH9eRhQja-dRy_O-cr5e4r_UuhKy0-49r-56v98NfRvEHwp9J9fjP47qp4pZddNps1z11ayPKeegj83TSJgnNqTmzzJ8XmeN8YKirk4a2FpFnEfKeqmQlUfg5iFcbr01ZcvLhVw125PhLUip0dyuua68RQRup0b6Ygkq05CcohHtkanBK_Bp4NX2GsmEzwlakHeBHfQrmGsseeTD4njNFhx9m-BqRWscaeDtzgvJN7kfAf8B1Z8Ac6c9RbqzGANuoJawrmNDheUo882QZyubqZZttw7WR9miCbi2mcvX2XcfkO6EfY23-adZN8Q-DDbePfvpXvN4J184y13j8n5u54RxL57SN55Qm5YvPuIpCN2q6ZyXa24rCi5rWaWQOU6VBJGDLQ0dtVGOlm5DW6d8yVPuLqtlD_LFXc4oU8vX5y5LhFOX5zP52aQYpM8Kexb1CWboqNebOVp6ATuye5oZPAouvbuEh0xMIOUBSQ8YmCsbgqcED4ulaV1w1plkAS4np77OwQ8WQCi_VsA0QyAuRE9JPuRwa8zjoQbKDoap9rdM50Ocb08a3t3kY7cFiYlXcxVdz5hRvY0q7STC2ZiQ-XCewehcW-FnzgmyNoUzQlPcho9y-TgPouDlIEsS5lPq7Xs5KAcEUI3kATReobsfAaGshIykEVFMweswr09U9aqE7rtlGoJcFrgibnSdO8DvUjg6wNzHG2tpalVV-Bl3wuZ78XM93ac-d6BZlsnLlK7GdU2NC8zKU7g_EAyeZma3RyWVc7w05e5HbAgYAc60vJBig4S3-MMHlWWUbfwArTEg5yH_sGZBpJNiPIs6C58YVOP7m3B4yzwAiRMuJJ2AcA1QJDSVUPLgRfGDEwu0E2Iz6M8NdbOYZlBN-7tz71yzu-L4xRUxIItke4c_jOYRylx58SC_CIk5wQlYKk5BMwtFyjZqRkceRwzvo_TRdtHDCbwELzS4qGxFzcvMBMpg0KLCnF9TrJHiJjtMbvUa47PIxbRFTPDYhaNMap7mCIeSXBnLW4Exe8F1Sk1QGL1Wc7iilfiekNWZmh080ldYYlIWyiuPekqxwf3PDgc3VMxJhZWi8tkvSlACmoR4MSH3VXvtnjz_ymwFWMNw5U49i_aYFB2Ch_QOPhtmTD3Pwh8559XUKrd4xLBjYqovZCKP9IFT-_qbmoxuLK4RrNuMemYjuP4Hw",
      "playgroundCharacters": 1998,
      "playgroundReason": null,
      "images": [
        {
          "animation": "teleport",
          "path": "gifs/hero-magic--teleport.gif",
          "still": "gifs/hero-magic--teleport-still.png",
          "scale": 3,
          "width": 120,
          "height": 156,
          "frames": 14,
          "durationMs": 1780,
          "plays": "one-shot, looped here",
          "colors": 17,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            870
          ],
          "bytes": 6760
        },
        {
          "animation": "aura",
          "path": "gifs/hero-magic--aura.gif",
          "still": "gifs/hero-magic--aura-still.png",
          "scale": 3,
          "width": 120,
          "height": 156,
          "frames": 12,
          "durationMs": 840,
          "plays": "loop",
          "colors": 17,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70
          ],
          "bytes": 13823
        }
      ],
      "shownAnimations": [
        "teleport",
        "aura"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/hero-magic--teleport.gif",
        "gifs/hero-magic--aura.gif"
      ]
    },
    {
      "name": "holy-spells",
      "kind": "fx",
      "file": "examples/holy-spells.fx.json",
      "for": "Holy spells: projectile, impact, area, buff.",
      "size": "64x64",
      "frames": 124,
      "plays": "loops and one-shots",
      "colors": 6,
      "animations": {
        "projectile-0": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-45": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-90": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-135": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-180": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-225": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-270": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-315": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "impact": {
          "frames": 14,
          "durationMs": 749,
          "plays": "one-shot"
        },
        "area": {
          "frames": 16,
          "durationMs": 971,
          "plays": "one-shot"
        },
        "buff": {
          "frames": 10,
          "durationMs": 800,
          "plays": "loop"
        },
        "buff-back": {
          "frames": 10,
          "durationMs": 800,
          "plays": "loop"
        },
        "buff-front": {
          "frames": 10,
          "durationMs": 800,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Holy Spells",
      "group": "Particle and spell effects",
      "groupId": "particle-spell-effects",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/holy-spells.fx.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset holy-spells --out holy-spells.json",
        "npx -y pixelbolt@0.11.0 render holy-spells.json --out holy-spells"
      ],
      "alt": "Holy spells: projectile, impact, area, buff.",
      "description": "Holy spells: projectile, impact, area, buff.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=3Zhtb6M4EMe_y9zbKbLNY_giVYR44QQn4ZYAh53NRlW--2lsQkybZHPdrnTarrbFD4yH8fx_jHmDTTfspYEc-vqHajbdsFUvmx-A8F0Nuu5ayDlCK_cKcth1zelF96ppNCAc68rsIE8ihJ2qtzvjrnvZKGMU5G_wCjn8tdls1IYBwnJshStqnVyryqIKELbUUkxmoQSEjlqrLI0EtTS1IhmpJIQzgj7tV12jyb42sq1e6hbyAgL60fbHXgLCtcf1_WrXDfOuL_C6tPbutF1a-313uuhibNP__1HX9bHvd90Jzs3tGH_9GV2XKLjdLhHMsW6_Ncpl5GmctrR_T8vX5clru_ESYd8Z9bKqt_amJQ0tX5c0YXkdXg-d1nbCydmylk7TBBpaTrNP1DxNTWt5C-UZQbbrXTdAXoQCI1YiqM1GrY2VUz90f6u1qRsr3s0g90pDniFUh0Eay4KEITRd10NuhoNC0EpVkAsEcxhauku224buKhhGMS4Y8jBGnjEUIkaRMgx5XCLIVXcwkxdna_SbdaJxJHmDddd0g33kzgKCkEEQQXi1gd4NSu-6prKLBVwgC0SMLIjoV4osWJTnM8K6UbI99M7i0CoyOfpuBnkaW-SBPNnB4g2-1W0FOayU3INzDfLRMQRpvOiZDvKCj40RiBHCsVutKIrWJTjK76pR7ZYGM9fUNmgbWdlJizM-s6hYYJhOi6auMS4qAuEvG75bNrm1bIbQd0c12OunXYhCzwXb-B0uHAZtfhL7QVb1QUOe0LptV2uy6NlbCM-gNnJ40l7BGaZBjJw6-65uSR0RjZu6s6_D8YE5UkopyHkQ--vGZ9LVvjbmklAudqFbRw5KQl5kboFBGhuJBJ12aP0kRr4gmeje6qtgAaV3UiJUg9zSdBYjNPWGpkdIA3oneyu84sqTEQ0TFEosfJpM_RMmyvJMYqz3vVwbHwI88ilA_d0e8oi5TFgwBCUp_lC39h1t3Y6_SNYhssCKWjhVI-xk082NPWeIrCTIgiz7VTY8kU-X2BUMxSy9UuShl1o8mXKLnvOSXYVAHkTlJccKQSkZZCXC3zazrMamtCs4PRblzLgRTd0q6-L6YEu32sB_k8M994VAnv1EGQWxgNuEdd6zuaOLD35-0jc-802wq1uZ79aoLCG8-PKPvrEg9fwY6nZ79cOm3D03BC7eAUR4YCwEhkg7eYFUsEDQa0kuJV5gghD5mOpclLchMsGKnMvfrmtG1gU5rG2GMQxTmtYdzFEO1ZTIjqs5rW_kYCyLL9h5CRmGbEadDIXdxO0gv9fmZJPhhQV8RqIMQR_lyb79931Tm0Ol3D5Tlqih7irIk_PEqww5nwPrUjThe3T5lzNmvQPYBLZP3OqQ56DsAS-5Bbz4MfBSD3jDoVWPeHcHUWlsdUwaiW1d9EluontlRAS8-EuIt21O_e6qB_t895Fhq7xJlwKhblsnsWSGDm1Ub7VI9pxsdW9PdFQyBtaK-q5kY4sphG3THa1k9T8HqXcjT6K49AHDifQ84Oj-WUl9FXFCjGc0TFGI8hZ23rPcZ-F954kNLAjLuxz6mXd8XspkKBaz0vTj0jeoFPtUsrkUl88ViLPCOBQYvvMu8rAYI0-Qh3ZvrpvMZ1UkS-7Vz-G1ikzjx_lAYhrrpwdvx3u8tWX2WLSFybj95lK-jhyNEBTFZnHlqUjoxOOXcTxIRqCOKIwx_TQJbzHvMegQVmpnd9CJ3HulhH_II1qWrw6bzYzlzGd5dvMIu_h6dD8qUj-aEGNp-sun1ic4fcEDj30uiyvF2MTj5MJjOvk_gG-lepInaCoA4NkqKpyxlI_0uhRowQdZ27Kj3hhXiFjwTvSyEHD4ijyeoi2rAleNfNJL_7D5wL3wRiAeFnEXxbH5UTD2BZagSKOZwKgoi_wCTDxTgGXXAozinH5w9fdXZPfnf9Qx3g6VSDDzIhVeQ0Xflm4E6W7NOT8ZeydgBDPIupmUS5Ki1BhfQOH5VhqNH8inD9LkylC7r-Dug_V8tBrkcdKw-zrgjvEX0ytljkq1cC7P5_O_",
      "playgroundCharacters": 2108,
      "playgroundReason": null,
      "images": [
        {
          "animation": "projectile-0",
          "path": "gifs/holy-spells--projectile-0.gif",
          "still": "gifs/holy-spells--projectile-0-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 8,
          "durationMs": 480,
          "plays": "loop",
          "colors": 5,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60
          ],
          "bytes": 2296
        },
        {
          "animation": "impact",
          "path": "gifs/holy-spells--impact.gif",
          "still": "gifs/holy-spells--impact-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 14,
          "durationMs": 1550,
          "plays": "one-shot, looped here",
          "colors": 5,
          "delaysMs": [
            40,
            40,
            40,
            40,
            40,
            50,
            40,
            50,
            50,
            60,
            60,
            70,
            80,
            890
          ],
          "bytes": 4217
        },
        {
          "animation": "area",
          "path": "gifs/holy-spells--area.gif",
          "still": "gifs/holy-spells--area-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 16,
          "durationMs": 1770,
          "plays": "one-shot, looped here",
          "colors": 5,
          "delaysMs": [
            50,
            50,
            50,
            50,
            50,
            50,
            60,
            50,
            60,
            50,
            70,
            60,
            70,
            80,
            80,
            890
          ],
          "bytes": 11931
        },
        {
          "animation": "buff",
          "path": "gifs/holy-spells--buff.gif",
          "still": "gifs/holy-spells--buff-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 10,
          "durationMs": 800,
          "plays": "loop",
          "colors": 5,
          "delaysMs": [
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80
          ],
          "bytes": 6930
        }
      ],
      "shownAnimations": [
        "projectile-0",
        "impact",
        "area",
        "buff"
      ],
      "alsoAnimations": [
        "projectile-45",
        "projectile-90",
        "projectile-135",
        "projectile-180",
        "projectile-225",
        "projectile-270",
        "projectile-315",
        "buff-back",
        "buff-front"
      ],
      "gifPaths": [
        "gifs/holy-spells--projectile-0.gif",
        "gifs/holy-spells--impact.gif",
        "gifs/holy-spells--area.gif",
        "gifs/holy-spells--buff.gif"
      ]
    },
    {
      "name": "ice-spells",
      "kind": "fx",
      "file": "examples/ice-spells.fx.json",
      "for": "Ice spells: projectile, impact, area, buff.",
      "size": "64x64",
      "frames": 134,
      "plays": "loops and one-shots",
      "colors": 7,
      "animations": {
        "projectile-0": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-45": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-90": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-135": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-180": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-225": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-270": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-315": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "impact": {
          "frames": 12,
          "durationMs": 676,
          "plays": "one-shot"
        },
        "area": {
          "frames": 22,
          "durationMs": 1306,
          "plays": "one-shot"
        },
        "buff": {
          "frames": 12,
          "durationMs": 960,
          "plays": "loop"
        },
        "buff-back": {
          "frames": 12,
          "durationMs": 960,
          "plays": "loop"
        },
        "buff-front": {
          "frames": 12,
          "durationMs": 960,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Ice Spells",
      "group": "Particle and spell effects",
      "groupId": "particle-spell-effects",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/ice-spells.fx.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset ice-spells --out ice-spells.json",
        "npx -y pixelbolt@0.11.0 render ice-spells.json --out ice-spells"
      ],
      "alt": "Ice spells: projectile, impact, area, buff.",
      "description": "Ice spells: projectile, impact, area, buff.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=7Vtdc6M6Ev0v2tc2hSTEhx_zJ_Lg8gNgEbODgQU8uakp__etlkAIGyUkk1t3amszTgwCSadbTesciflFiqa7pAPZk7b8S1ZF073IXfEXAfJTdn3Z1GRPgdTpRZI9KXO561tZVT0B8lqehjPZhwGQsyxfzoM-btNKDoMk-1_kmezJvwr1Q4C0eHaKi1Cd5XgWF9JXZxmeBWkay5gAecIzVogi4wRIjWf0xIowI0B6fWcgQ05uQPq3S9ZUPfbWD2l92pU12R-Ihz-9-lGHBMhcost-t2ileV3mWUV9b9VURX1vlzmK8GA8x98_qGg2213kcM7qcIx__jeKJi_o0T4C6c9pd9r5KiKztlX3PWV53j6rCllm3xYIvO9pai5rx--81c1n7dTz81wp0Y0_4aUsw79tnpm_nq7ybPVCuZgekCfVXKtqeW0-fmeq22dvYQKNdT9eq29_bvM8e1oxgjHV_PNkRftgRTZZ8WTVinTzz54BbZsx1nmy-uHUmKF92bYLMzJtxtNkRn4uWz0QWd6aAu1yfauXa2DzVe3bTCUrTF9TuXFhZqq1Vi-jrxD6VDR6pV10ZF3W5rdjT_MFY2Vr6o3ezsphMmc6nYxRt06Ftg1j0QRfFZrGRtQaNBaMmDXYuVRDNTCxbEKpClWDL1VZDzuqjTLnXN2lR_e5HUfaXJ0sHR-m3NNR8Jy31rm-fgRSVOkPaddovXz00nO-OF_U2PV6HFpr5Nr5apF22oeZ5W9l56UZpDZ8PNmdyot27fEGJK3zc4N1OYPAPwKRRSHzQc1Lbdf8W-ZDWak5sejSi-zJPgZyunbpoGbY0AdSNU1L9kN3lUB6KU9kL4AM167GWmn9UmGtgw-BgMQHygXQ2AfGBLDIB07FEUiaNdfBoLipRn8oEENaVvidN1XTKSfUaqKFOTaGcyf7c1OdVD8eZeB7TIDv4W-MralHb9nKes0jkKoclne2K3cGYmz2JJc3ZwqcA5Su1VyHqqyRldRIBF4qmV7uewTyvNYr-F4kjrcbkLySaX1tdb2ullhxHIKhS9_GM3Rk-qYuHn6RH2V9InuSYX_aw2Sv_QskVd73dQwMDdkf6HgysqUISKGs9b1EAHltsqxSZxzIa_pTVrJ-UazKE7qgJ3sGpG7KXt0mgPR5ilU4kLZ5lR3ZUy-8gcHVD2k349JDNgHjntBo2qasB920Ci2y94F06am89mRPEzweykbhig12Aegkfa_pOnB2rUdk6joEHlkdB8uOVWd0hnCggP84COB4NDvQ92IDAw9HIAcf8B_1KFCPqW8f1IOYouMIhkrakRuWXMphmAZzJLb90Mn0Rz-hZaF2U9rJlOwPAcRHhVIqkCPwA40ioDHHOalVD-yBeiEwD8P_1KUviNDn-CgUUrUS6umrVU_yQecUsL9UUjli6HT284rRhn4dY4Pd0OcT8jbtflTSgZwySAx0FT0GfCiAJsICrx-MxAYfu8CbDD_n9jmPP5ZRTJIGssq1s6_ZAnEM1LcQhzZiH5jvLxCLe8TCQhxtczcczNywNhg3TDblpU3zwc7flNkJHMubC9kHvn7sqe-b0CtVftIpPbFScn4uq-ox7RmucZe1lqk47976IXVWX098FKtz_BNiHk0wUO_SaFGl_fk-xbtb5IhpBPV76bQr65c5d2jfTLljjJDJ9QcK4mjligSYlSAOmDLQMpMzE5MzgzlfUIU9RoccnSls8rILiK86mnIahoTJm8JOZiHQxEKIaRjThk5j3Hosd4lvQ1SJDG-84gCdy4F8GSqDYBNUAdR2JgfmiRnqEuj7Hva9UCgK8ZiFXUbo6Nvm7cBhQawMHfFTy7eBWLpWBa1jPii6ph_ugagQ3f8yXQVA5E9ZTyHeXIdXxY_GGM-uXT9oV6OVgz3bHnboaLGYOgJgXmDlMjpnX65ssnLZY4K1Uq0roWEysyYOZAb9RzZi_u1yxBcL4EKN5cc2x6smM8zflsncYxB4-CC8dOnPcnjT0_jCCdYUFKmprEhzaZLK7JBJacPq0aj-JtmEHjKaGxyHk0A04mqulcyt3x9OwtGor7kW6i5wHhtlOYs0q2o8d_N4bFTnrOTmqijjwHls1Oms-ayq0dzT47FRrrMwnKuiJATnsdG2s35E0tPJS9qqx_AG-FHrh-24cpiT22P07qrmdXsEC6DhxgAWmwKYAfOih_Dl9jPMTPiGikR-Inw3B-0nIvVT4fnJkPxkGH4y9D4ZbltC7L34UsnUzo48njkqi3UcjMESmGAJvpEvq2UF1d9MOtk66RTvk05ukU49sS343bwI8A7xRGkQ4pQp_uyFgN_U9GpAZzqyxgJsOsJsGhoC5gcOLLA_GAX_uSpSfaBjdjC8KVrI-axBzcdslhIARcKOZJXiQIy8ZRwQ_5FaObjikl1_ZFdsmxUAiyxCGIzsemnUgm_Hwk24E80IN65XMFyvoEvqr1jT4_oFLoLNhNBeSmDA_cWHRbqRlWWNompQbgfUMidctwaH5v4XLYzWlh02mcvM8ozF2l3misBpLk2Wn8ijkHiWxcGKxf4_YXFAP2FxHDktZnTxobGXAPX_SJMpruwF3DaZO00OuHuQ7z6YFcLZXr5iL_9Hhjj-hL1J7LaXLz_UiyC0R_iPsZhFaHG4zeKQuS2mi0_iJSA-Mjj8Jwzm8YPBgTtNJ987xN9tsWuB-JximXmKY-CBIje1IixqqT8IdeGsL6xVAGpIIp1XUQ4MZyS6FMUChFpCfkcU89l-gbzhWufKAUxYciP6ktz4WGZ8rC42iYpNUmKTgNgkGzaJhS-oUIyK3VC2Fp2i4X1kcAYsPN5WFMP7wUC9GB7XR_j9BsM3xYIRnOuhMMtMRyTM4tIVCJaidMaBJSOdYWBpR2cUWILRGQSWSrRiwBrgqqxf5EieF2x5VIJc67xxWPk8rPY-hPi2nZMHVcpsVRpMgkRvnSxkqcQkTvk3otLhXBTuTZF4dVc7stRoV16kS4yuCNH_70Vv2jxRXr1fFZv2dkObEhdqB8r3cF1hKegWMnVt0_lAcTsJd1vVTH-SLbZJ-rZ6b5diSZQE7oNEDmIk1nmCWK7t3_MBHs1YsjT_sZWlotJUSzxrwoOuQ6G-wcI8toIl_hoW5Zbkcww5tNwSr0BJvgSFRhN5XxMnDsH9AZSAb4wOjLsgcKhfhxbEBGSGZE3zuV9XWJHiLgrrUGXR3PdKz2IjmTbq4RNrHMH7D0Ww8f2QwH_Hapf8jr9o9eL1EOTTfLkMIFb3-paKIdj0ZgguBqjJI9wucBboggBYYqOL9Sbp3w_PoUa6spc79RyvL1DTUNHGiQlYexgsDIFFweIlCuyfHw01YAFwRUJf0zf17tkFc_oVp8VDrLdgZVc2yCdC5ADyrByop6pFknl4_UK9UmG_bLft-P6ljLu3Nx5f7HDdbHMp5cOia-rFSihzO1F8mxeTRy8-vqcyb-Hqdx0d3-tvrYCrmbujlddd3mOblneYr-2b3POd1NISWNM7_ejprtT_rUC_87-8eurSV0OQdArX1NwEpBxepaxRv91u_wU",
      "playgroundCharacters": 3599,
      "playgroundReason": null,
      "images": [
        {
          "animation": "projectile-0",
          "path": "gifs/ice-spells--projectile-0.gif",
          "still": "gifs/ice-spells--projectile-0-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 8,
          "durationMs": 480,
          "plays": "loop",
          "colors": 6,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60
          ],
          "bytes": 2633
        },
        {
          "animation": "impact",
          "path": "gifs/ice-spells--impact.gif",
          "still": "gifs/ice-spells--impact-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 12,
          "durationMs": 1480,
          "plays": "one-shot, looped here",
          "colors": 6,
          "delaysMs": [
            40,
            40,
            40,
            40,
            40,
            50,
            50,
            60,
            60,
            70,
            90,
            900
          ],
          "bytes": 4368
        },
        {
          "animation": "area",
          "path": "gifs/ice-spells--area.gif",
          "still": "gifs/ice-spells--area-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 22,
          "durationMs": 2110,
          "plays": "one-shot, looped here",
          "colors": 6,
          "delaysMs": [
            50,
            40,
            50,
            40,
            50,
            40,
            50,
            40,
            50,
            50,
            50,
            60,
            50,
            60,
            60,
            60,
            70,
            80,
            80,
            80,
            100,
            900
          ],
          "bytes": 13768
        },
        {
          "animation": "buff",
          "path": "gifs/ice-spells--buff.gif",
          "still": "gifs/ice-spells--buff-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 12,
          "durationMs": 960,
          "plays": "loop",
          "colors": 7,
          "delaysMs": [
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80
          ],
          "bytes": 9590
        }
      ],
      "shownAnimations": [
        "projectile-0",
        "impact",
        "area",
        "buff"
      ],
      "alsoAnimations": [
        "projectile-45",
        "projectile-90",
        "projectile-135",
        "projectile-180",
        "projectile-225",
        "projectile-270",
        "projectile-315",
        "buff-back",
        "buff-front"
      ],
      "gifPaths": [
        "gifs/ice-spells--projectile-0.gif",
        "gifs/ice-spells--impact.gif",
        "gifs/ice-spells--area.gif",
        "gifs/ice-spells--buff.gif"
      ]
    },
    {
      "name": "lightning-spells",
      "kind": "fx",
      "file": "examples/lightning-spells.fx.json",
      "for": "Lightning spells: projectile, impact, area, buff.",
      "size": "64x64",
      "frames": 106,
      "plays": "loops and one-shots",
      "colors": 5,
      "animations": {
        "projectile-0": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-45": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-90": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-135": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-180": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-225": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-270": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-315": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "impact": {
          "frames": 10,
          "durationMs": 566,
          "plays": "one-shot"
        },
        "area": {
          "frames": 20,
          "durationMs": 1191,
          "plays": "one-shot"
        },
        "buff": {
          "frames": 12,
          "durationMs": 960,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Lightning Spells",
      "group": "Particle and spell effects",
      "groupId": "particle-spell-effects",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/lightning-spells.fx.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset lightning-spells --out lightning-spells.json",
        "npx -y pixelbolt@0.11.0 render lightning-spells.json --out lightning-spells"
      ],
      "alt": "Lightning spells: projectile, impact, area, buff.",
      "description": "Lightning spells: projectile, impact, area, buff.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=1ZrbcqM4EIbfRXvboXTk9CK5cPkCY7CZYPACTnZqyu--1RIHycEJniTjTGoqE4nTp1ZL_aulXySvm0PSkZgci_-yMq-bXfaQ_0eAPGdNW9QViRmQKjlkJCZlsdt3VVHtHtpjVpYtAfJSbLs9iX0JZJ_hZfN3UqX7uiHxSnCQdA3kmJRZ12Uk_kV2JCb_8A2XQuBnsCQ2PAlTAmSDJZkHaZ4TICmWwjyLdOkRS7n-IWcg7c_Dpi5bfGN7TJonEq_II1mDKT2kWE6n8gbLm6n8jOVnXe6aLHl6oPqBR6tGKl3lESCeXR-ZWzXSVMuEvt3T9Z59IdT3P6ZWHef65kf9budCYG7WrZ-qBTMv1_UeWZ-BZHmepZ1u_7Gpf2RpV5TavnmTHLKWxCGQ7alJOt2JPgVS1vWRxF1zyoC0WbYlcQCkOzUVPpVUuxKfWlGQCiIKTChgIQXOFfCAgmBqDSTZ1Kdu7NezfumThkiaFP9L67JuWmNc7E-YDNXtm6zd1-VWf8ZjEqgngHpKAfXCcH0-A0nLLKlOR_OmpsrwVT1x1yQ_-xJ-N_mpL65-kaei2pKYbLLkQAwQiTUOkESzKuODXU3iFZOm0DtuCCRPtpn28pd6s0ETIhV5SZ6zMqt2eFNgii2JOZCqLlp9kw-kTRN8QAA51i9Zg7VKnWFCqstuHknaSL6DxIDsyvpF__Ej2eFLpQKyaXBQIQQD0mRNXZaap812h6zqXAr_dgrOQbIZCjpSOBD0fQg1uBlnNs2paa_g9P3UJNvi1JLYt4yNFuitzYFs6qIksRy_xTzGFzXY9gTJQfA1jONlRYG_2QvqWi-wKwYIl_WCDSUikKELNdcpH4IaukXQ221GQVEbj4G4v80oCAeKg7w7lPRBChtKgLo7FA9BRjaUBP_uUFKBUDaUguD-UAJkYEP5EN4dSgQXjh58AdQaSHYoum6IrhqD9zIuabLEBFFfT9SdnpwDMPJBxzIKnFIts_Qks8JoilNYWeSZHgb4ZLtPjroFvXabVNuk1yaltj6j0igOxyTtbIXDqC1xsL4-kFhSYy5GKZAswfhBikpLRk3E2HdSLW2XNPM935vcigTCCo6oGtCSx7qoOqP2tCF0sBx9YsU9pa2f1k2mZ0Ys_NDdi3dyNXYdHd1gxTxsG7p_ekLr7YuOLHJWbjmrYiDYa_5LZx2Q5oQOv-qwky6wqbFbIqCeXN9Mi4Et_Gto2eXs9L1pQ-Dqr6EVAfCZcffHaZui2i2bGFg_GfcTg2_4hxlAgvDQ-uOno0lKOxQ4sQVAPeavl8n1Sw6u4_bIobTdxs8KW8DnZZE-mSlI2Ay-nnduH70MhO_qmk8VW-xmIu5fjND7E4UX8_H9ieSFA_mfLfyC3xn90v9uTD4I8ceYlguSACJ7vEvgeqIZFIkcFQmzYY0SYfO6gwH1_PW8Bh2-b2YkLf6QtdOvGPQnBeHb6tMsBbeNMQzlQHZN8lx0P_W91GP8UprmSZqN6m2QqaspS7iGlZUgtEqRcw3TgXYxdK5i_s8uBs5VzPatsfcL7KjVL-wdzH6mfU50Q4aaTV_zTM5GJBuBPklkPi-R1dsSmTMg2XZnFHpXH1EHj5K5Tesm3buqeaczua_VMsf-VAi2a-oT-te81p7R2ShBMSSFpll3luluNO4bc12ps-giIvPX_6YhjAH531PS7nUwp56OZXPxWjiRE8W7Hb7x0UiNv7DdvRGYI-XHLi-LKksaclV09D19XXdwO12nxvZggC-G-cZumLTb5WT03KWHFkMK8O2_hcoiEKGbUviuqFJe5Imib4uK2SPpOIC4K-tbSRM-Bs_5ZfS4PtYqfpT0rqi3o6iYj6LS3RCYGhHo4SgWaVnckxgXS5euK2eD_ZusV9YfV1mjG1iVsZ-R3Ze-GwKby1bfDZYbjTvmPl3v5cDmFPCn0oavaW_J-HAn48NALcj4aHZn0Jk8kb3aDBYBzfiis9IMtdt-lIcbzbeAZ87f6D2BZn1KfhnRElkczqliTikIaetifCfXX3H1sJjksNLJ5byscSNf6l23U5WatbxalsLVRnRcqadUI6V8kxK4x5cz0o8xDu71ijH8REb1McbB414xMv4hSBNlBkj_9yBRqW9Oee7k6Lm9AAlnjyEIOyN_60KBo1zwgf01y4RhbkDLXFsAXEvY2QsAZm1_i6sS7p2lCgPGv4ppPGWyKFRTENEYqxWIBflt9u7RhPmERz_DLsHCQwKhrXecEwPive3TL8SSk8RVF1HI14mZO2BxYWZQ04n0wtci42v34Zp6ERffwWuZtRDr3WxaH67DZf3Yb5IN7sW5OzhvOVyxwGA6vxaopWjct46lMMfF3j1i8XU24wK4tPLstx1o-EIuaTYhBud3t-pvO9Tw-X05Ta6SAw_d6eKdUwRfaDNuUtvjwKQz8v4uZEJMS0cRuU4WzS9z_1RnUmCBtV_hbFcwetMke4PN3lx89OdCuOy3ALthk3OUpD6eIlXOuZAImM4HOTr5dcodk-OzehMF5_n8Pw",
      "playgroundCharacters": 2578,
      "playgroundReason": null,
      "images": [
        {
          "animation": "projectile-0",
          "path": "gifs/lightning-spells--projectile-0.gif",
          "still": "gifs/lightning-spells--projectile-0-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 8,
          "durationMs": 480,
          "plays": "loop",
          "colors": 4,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60
          ],
          "bytes": 2548
        },
        {
          "animation": "impact",
          "path": "gifs/lightning-spells--impact.gif",
          "still": "gifs/lightning-spells--impact-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 10,
          "durationMs": 1370,
          "plays": "one-shot, looped here",
          "colors": 4,
          "delaysMs": [
            40,
            40,
            40,
            40,
            50,
            50,
            60,
            60,
            90,
            900
          ],
          "bytes": 3478
        },
        {
          "animation": "area",
          "path": "gifs/lightning-spells--area.gif",
          "still": "gifs/lightning-spells--area-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 20,
          "durationMs": 1990,
          "plays": "one-shot, looped here",
          "colors": 5,
          "delaysMs": [
            50,
            40,
            50,
            40,
            50,
            40,
            50,
            50,
            50,
            50,
            50,
            60,
            60,
            60,
            70,
            70,
            80,
            80,
            90,
            900
          ],
          "bytes": 8927
        },
        {
          "animation": "buff",
          "path": "gifs/lightning-spells--buff.gif",
          "still": "gifs/lightning-spells--buff-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 12,
          "durationMs": 960,
          "plays": "loop",
          "colors": 4,
          "delaysMs": [
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80
          ],
          "bytes": 3604
        }
      ],
      "shownAnimations": [
        "projectile-0",
        "impact",
        "area",
        "buff"
      ],
      "alsoAnimations": [
        "projectile-45",
        "projectile-90",
        "projectile-135",
        "projectile-180",
        "projectile-225",
        "projectile-270",
        "projectile-315"
      ],
      "gifPaths": [
        "gifs/lightning-spells--projectile-0.gif",
        "gifs/lightning-spells--impact.gif",
        "gifs/lightning-spells--area.gif",
        "gifs/lightning-spells--buff.gif"
      ]
    },
    {
      "name": "lightning-strike",
      "kind": "fx",
      "file": "examples/lightning-strike.fx.json",
      "for": "Lightning strike: bolt and flash · one-shot.",
      "size": "96x104",
      "frames": 12,
      "plays": "one-shot",
      "colors": 5,
      "animations": {
        "lightning-strike": {
          "frames": 12,
          "durationMs": 643,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Lightning Strike",
      "group": "Particle and spell effects",
      "groupId": "particle-spell-effects",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/lightning-strike.fx.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset lightning-strike --out lightning-strike.json",
        "npx -y pixelbolt@0.11.0 render lightning-strike.json --out lightning-strike"
      ],
      "alt": "Lightning strike: bolt and flash · one-shot.",
      "description": "Lightning strike: bolt and flash.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=fZTdcpswEIXf5fR2w_DrYL1ILhguBBagWkZUCCcZD-_eWZHYuJ2WKy3SLt857OqGzrqL9BCY9IcynXW9euk-QLgqN2s7QiSEUV4UBIzuBz_qsX-ZvdNnBcK7PvkB4nggDIq3IZI4J0zSKO8VxA09BH6kTZpnGZflKGtSWbYgNBzl3WvbdSC0HJWdOobojaMuPFgJ8-elsWbmivMk3Rmiwhtq2qKXluP2ETccN6hXguo61fqQ-ZcCcUPn5EXNEElKUKeelxW8nbjWaXHSBxf4nL1A5DHBW4hjTFByZlv0GPiUOkEUBGPtecNsrWsHXrXWWBfq9lzVD07NgzUnfhVHGUM21vjno9fgD7tCm9A_0pKU4iijOCoKiqOyqNeV0Bolx2XaKrlRcSnvFrUSjPwMYXXDWY8nCDg99tiAIb5xCdwOVV5SWdR0d6dKKUlrgpMnvcwQx_u_zwidNiY0yvxrkfMAUSXMxvmj1WwSk2Ky78qFTd4-1CvdUYL8O8pXFECKlOJ68zxApXuomA71HaTKKKWkJvTGvm_ENeGn7PnzOaFxcmwHzssITjnL0Ckvr0oaPpQWhM7o9syYLGDHXxDmVhoVsu9KopySiNXkxV7Os7N7OSwh30tIqNzZWmWUxTtJBeWU1f81tnyQ5Xsybo2S4ih5Ipu9dP8mS5_Jij1Zupk9WT3yMJV735Nw0GsbrC7-xHitCe2iwufD2K01QV20998d-UTQLG7220Ayrg-tJceeJVZpHFOWx2HQw8iFn8Ae9U5etf8MbcFTRTC645QDJXy-M9Y6iPLA07aMrfrqi3mQ0zb128XyuFIel0m91uu6_gY",
      "playgroundCharacters": 895,
      "playgroundReason": null,
      "images": [
        {
          "animation": "lightning-strike",
          "path": "gifs/lightning-strike--lightning-strike.gif",
          "still": "gifs/lightning-strike--lightning-strike-still.png",
          "scale": 2,
          "width": 192,
          "height": 208,
          "frames": 12,
          "durationMs": 1440,
          "plays": "one-shot, looped here",
          "colors": 5,
          "delaysMs": [
            40,
            40,
            40,
            40,
            40,
            50,
            50,
            50,
            60,
            70,
            70,
            890
          ],
          "bytes": 6608
        }
      ],
      "shownAnimations": [
        "lightning-strike"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/lightning-strike--lightning-strike.gif"
      ]
    },
    {
      "name": "meteor",
      "kind": "fx",
      "file": "examples/meteor.fx.json",
      "for": "Meteor: moving emitters · one-shot.",
      "size": "64x64",
      "frames": 22,
      "plays": "one-shot",
      "colors": 8,
      "animations": {
        "meteor": {
          "frames": 22,
          "durationMs": 1320,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Meteor",
      "group": "Particle and spell effects",
      "groupId": "particle-spell-effects",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/meteor.fx.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset meteor --out meteor.json",
        "npx -y pixelbolt@0.11.0 render meteor.json --out meteor"
      ],
      "alt": "Meteor: moving emitters · one-shot.",
      "description": "Meteor: moving emitters.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=lVXBkqM4DP0X7VVN2QbThB_ZA8XBBAOuEJy1nZ7JdvHvW7LTCUl3z8xeUshg6b2nJ-UdBuuOKkANJ_NTz4N1o34ZfgLCm3be2AVqjrCoo4Yajjpo6wDhh-nDBHVZIEzajFNIz2rZT9ZB3RQMZdEinNSsQ9BQv4ODGv6qlFBcAYKlSLOy5BoQLhQNw17k9O7vFA1lXwGCp0hqWUiKxpSlYlUBCDNFXdWxjgHCgaJc50VewYrgL8fOzp5q62OnCRZcoMUUvfTmSCf2fmLPgU4cnewnc6Ig8wRh_Dh66cyYjtP5GH8zaFcEPQx6H2K9q071OwxOHbWHWggE3Y_02ECwJ0rYn50KUeGSIXite6hzhNnaQ8zij_YQpdvb2bp400cJiHiLECan_WTnnl6xLEeWlciynWwRZhMeb355QxJuP6n-qczhi4-L-LHTaj9BLVaEwbinay42ltpJTfycQiDLCvopCWdVkgYmTNQaluXrijCri4653uFglh5q6M7OB0iqQJ2Kkq_Ifk1TYtFiIwSKssWr61q8qd4w3LUITvXmTGGRSaSqizVex6IIWtEjzGbRigic7A8CxLNixd-goLG5Wf1Ws0IuH4oizyOMa9WrEK8twmTneICMRGlvxRueFaRVi-D_OStPXPn1zv5McM3xpPYBNhCdWcbvEcotwt0nhEK0t6Gm8LlwLreqyS1Qei3bNU6RCeGjfb_pkFO0FSLPnK4ShR0tkDEqIiRDsWME4xTnomGxkEjeHnTSmXD2To0EiiOEs-vOs1720Zc-OL2MhIJlrELwe0W5yxWhm21Hn1zFSoO2EYRnFeYosqiD-Tc1rUKe5e1Kkv8RufwLWlyiKOQDLWp0dWeVo3wk9YT12tgbVJEVyCPQe0skdex_IOVfIGUMhXxsgES-xUl-9ZM6pZ2WVux2uW7XaktYbmYktMppBXVTRq-l8ap5geCDcuEBCt9JzB9E45lAEeflbgVy0ejUmwmXNFFZ9PQwW1rEskTo7Dk6I079r1Xl9MldzzJZ_DsO1ZZD-RUFUjMv2AOFAkUc8DsF_pmC3FB43VIQknKZBermZccwjcpHM5r099Vic__TauOy9d7ObzFB8R0bXsWJvA5ojjFzYsTZ1Si83I6qRFHJJ6ewbHfnVsb19-FpVv5qUvltUF__YFDJ_UW05W1MX5FnRbuu7bqu_wE",
      "playgroundCharacters": 1251,
      "playgroundReason": null,
      "images": [
        {
          "animation": "meteor",
          "path": "gifs/meteor--meteor.gif",
          "still": "gifs/meteor--meteor-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 22,
          "durationMs": 2120,
          "plays": "one-shot, looped here",
          "colors": 8,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            860
          ],
          "bytes": 8016
        }
      ],
      "shownAnimations": [
        "meteor"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/meteor--meteor.gif"
      ]
    },
    {
      "name": "poison-spells",
      "kind": "fx",
      "file": "examples/poison-spells.fx.json",
      "for": "Poison spells: projectile, impact, area, buff.",
      "size": "64x64",
      "frames": 110,
      "plays": "loops and one-shots",
      "colors": 10,
      "animations": {
        "projectile-0": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-45": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-90": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-135": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-180": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-225": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-270": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-315": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "impact": {
          "frames": 12,
          "durationMs": 676,
          "plays": "one-shot"
        },
        "area": {
          "frames": 22,
          "durationMs": 1387,
          "plays": "one-shot"
        },
        "buff": {
          "frames": 12,
          "durationMs": 960,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Poison Spells",
      "group": "Particle and spell effects",
      "groupId": "particle-spell-effects",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/poison-spells.fx.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset poison-spells --out poison-spells.json",
        "npx -y pixelbolt@0.11.0 render poison-spells.json --out poison-spells"
      ],
      "alt": "Poison spells: projectile, impact, area, buff.",
      "description": "Poison spells: projectile, impact, area, buff.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=7ZhNb-M2EIb_y_Q6JvghypJuPe1lz7kYPlAWbWtXllRJzjZY-L8XQ32YkpVs2rSLFmgQx6FJmu9wZp4h9R2OVXMxHSRQ57_b4lg1J7s5_g4Iz7Zp86qERCCU5mJpSJW3Vblpa1sULSB8y7PuDEkYIJxtfjp3_f-mPJyrBpKdkhjwPUJtCtt1FpLv8BkS-MVGx2NsAKGgloks19Q6UUsbEylqfaKWPIapa311rVRkSpE2alFPdASEJ_ctQagOMSCk1MpCa6KDCQHBUDvK0igwEQeEX6kdZFujjI7hhtC-XNKqaEndKVWQ7IAVjMSxEyCwE4M9wikN-p6-67PrK9gwZByjhzHjoHHU7J2dxvF1VQ_LjSsyxgoa4n78f05sms0GSc-D2Cfqf2LP1Pk89PRin_quz67viQ1DxjF6GDMOGkfN3tnzOH4U-8TGFRljT6tin9k0mzlJNwR7PNpD53a5bqov9tDlhYuIY2MutoUkQsiujelczIUcoahoxa65WoTW2gwSjdBdm5JmmfJU0Kwdx0BjzFEojSLiKKVGueWohN4jmLS6dlMk3tyXfu1dbdzboSqqhr4HfnWxskfozo1tz1WRua9nCjkL9whFH-C7DWcaN8J90s2_Il2Zvt3fKMaK_GLng11IrEyQKB5W40yvrfd5bT1NZrZnky3W-7QyOKSx1bUr8pLy-yuQ1kNhTXmt-9lNaWn64IWuMS9Di_bSvLjO3Xf4mpcZJJBem7aDfpchGaxGMM4F2x4GjcnyK80KmcYths60sspbCwlZD-3BUGQECGmVF5AohLr6ZhtIBAtvewR7ybtuXHlA06mqpoVUv5BprIFkJ1G5VYk_ggnsQweSndgGKCJybVu78NoJFqJktP1ZY04kh2va9iMN32K8R0iLKqWdWVg4GRUwiYoFKFmAggXk_EljfT0e21GllAuVwaSSnOjJDCMUsfRkcrZFwbZEkMY8592LS4MNZzzwpUeT9BC3j9IpATzhJFi5l0RJgeEJz5q8noSrcCY8xNATHvjby1HEfKZ7zCVfN2eyD-5BavSOXZbOUbTLEgWL9rcbBXJ-qc2h85kipA8V-ry6QBJwhK6CRHCOYA0FHuSlKwVOqIj-58Q_y4m2M81rmBjyYnThjqP0qSEUOrLXVV52fdlw_nVpMx1Jdn0YUz4cqqZPX3LOEJyCI3xxEHFBqz0AqQlAd-7sBJPIGeX_4UobcM47oPx4D_Ye7dG-PRHGLjsnAaEvYElAhyiBnCmNnIn9azgsqtS2SwlNXp7IW97agthYXbtvpslG79lnW06-602jXSafdZDwe4ZvIpesd3oGDrWL5JYekwTCsajobKjvdNJrdHpIecXCkU0oZ3TqQdZDdYsqvLNJSBRk-IMRfhWINMoFpiIUD5givEZzU7prk14LWx5cBrVdY8sTBR9n4l7GwttkaDyoeZPDCkPULuQnlzuHR0jJ7dudXtO0uHtZalTKZX_p9BDhdipGSWG75lM5bYdHbak1ykjPtoNCbbtfVJP2bGoXzzt3EO0Pnf2xcvGXDo77_dxhm8Zx6340UPGfc5vUHJXW_xm3EUB78-7VSa5WJ_2D6rT1ilNdVcWS3vhqxRDkyECjYFx_pHREf6Jy6IfKgT-1pP6t51m33a9zXYSzQhWi5CjF-OsQ89vVtGcXHJwp6WPfj71V7tOZj3wXDK9xc4YQoQ12RfU9FepNQ4RCOSu5kqPYvq2eSuhSvVzWT3c8nct9rX61dUFLDRJF1PNhhrYg7D9cQ1u4Vq4IGXPSSxahWjmQKhI6FKpAvH0DGLbSq1MSVV-lmHyL12pxAQhmN4BgskAhWPIhBchkSkiX3Dn9nFP2i6rqUfrkKH1ylD45Mg9_HZ9xOSDwu1YI_0D1Q1Fds01hj51fkXysR95NjLN4slCuWUi5E-rZ8SJyF5NHvmv_1hNPOyA4CvFucN8eTJmXqPgDtmw1Ksl_pi17lwvH4-uXoWj1CcsHiwvx6UO3klh-qLb847QftzpmesnD2WMMMeFQjzgMvMcYSr8GPrpqT4sKVLNHBPJ-KBJrh7cowsWDAjlAYXEm9_DGPbytnMOXeOvrUOxe64DbmCn_A3QkfVu_T-gwQrmVs0SJhycyYyKIPhHab-bFPQe81EXeXTPbu4HOX7bJq6w_wc3wF6zjz4Pg_tGYdDQm4O9xhnrbmMjN8nKa_xVTRg6_97w9mHLw4kpuf2hK-LYpoXvw4h2S47_mlYea41WeFSMy_84Q_tCI-N8UXHQc_QM",
      "playgroundCharacters": 2323,
      "playgroundReason": null,
      "images": [
        {
          "animation": "projectile-0",
          "path": "gifs/poison-spells--projectile-0.gif",
          "still": "gifs/poison-spells--projectile-0-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 8,
          "durationMs": 480,
          "plays": "loop",
          "colors": 7,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60
          ],
          "bytes": 2446
        },
        {
          "animation": "impact",
          "path": "gifs/poison-spells--impact.gif",
          "still": "gifs/poison-spells--impact-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 12,
          "durationMs": 1480,
          "plays": "one-shot, looped here",
          "colors": 9,
          "delaysMs": [
            40,
            40,
            40,
            40,
            40,
            50,
            50,
            60,
            60,
            70,
            90,
            900
          ],
          "bytes": 4948
        },
        {
          "animation": "area",
          "path": "gifs/poison-spells--area.gif",
          "still": "gifs/poison-spells--area-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 22,
          "durationMs": 2190,
          "plays": "one-shot, looped here",
          "colors": 9,
          "delaysMs": [
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            60,
            50,
            60,
            50,
            60,
            60,
            70,
            70,
            70,
            80,
            80,
            80,
            100,
            900
          ],
          "bytes": 10078
        },
        {
          "animation": "buff",
          "path": "gifs/poison-spells--buff.gif",
          "still": "gifs/poison-spells--buff-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 12,
          "durationMs": 960,
          "plays": "loop",
          "colors": 7,
          "delaysMs": [
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80
          ],
          "bytes": 3426
        }
      ],
      "shownAnimations": [
        "projectile-0",
        "impact",
        "area",
        "buff"
      ],
      "alsoAnimations": [
        "projectile-45",
        "projectile-90",
        "projectile-135",
        "projectile-180",
        "projectile-225",
        "projectile-270",
        "projectile-315"
      ],
      "gifPaths": [
        "gifs/poison-spells--projectile-0.gif",
        "gifs/poison-spells--impact.gif",
        "gifs/poison-spells--area.gif",
        "gifs/poison-spells--buff.gif"
      ]
    },
    {
      "name": "shadow-spells",
      "kind": "fx",
      "file": "examples/shadow-spells.fx.json",
      "for": "Shadow spells: projectile, impact, area, buff.",
      "size": "64x64",
      "frames": 105,
      "plays": "loops and one-shots",
      "colors": 6,
      "animations": {
        "projectile-0": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-45": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-90": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-135": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-180": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-225": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-270": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-315": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "impact": {
          "frames": 12,
          "durationMs": 659,
          "plays": "one-shot"
        },
        "area": {
          "frames": 19,
          "durationMs": 1201,
          "plays": "one-shot"
        },
        "buff": {
          "frames": 10,
          "durationMs": 800,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Shadow Spells",
      "group": "Particle and spell effects",
      "groupId": "particle-spell-effects",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/shadow-spells.fx.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset shadow-spells --out shadow-spells.json",
        "npx -y pixelbolt@0.11.0 render shadow-spells.json --out shadow-spells"
      ],
      "alt": "Shadow spells: projectile, impact, area, buff.",
      "description": "Shadow spells: projectile, impact, area, buff.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=7VnbjqM4EP2X2tcay1duvzDvsw-IB3dCEnZIYIF0b2uUf1-VDQkQkk16tDtqaaWWgmkonyq7Tp0yP2BTNXvbQQJ18Vdebqpmm3_Z_AUIr3nTFtUBEoFwsPscEmh3dl29fWnrvCxbQHgr1t0OkkAj7PJiu-v8dW3LvOtySH7A75DAbxu-jjYbQKhptOLRyo1eaRRatVkHgPCNRtqKTUT_-04jqYVUa0D4SiMhuRUbOCG07_uXqmzJ_r7q8i81JCnUkKEfvtLwlYavVbH-QvfoDqsZQfhaA7rr7IRgD6td1UCSKomaZwj5ZpOvOme6bqo_8lVXlM6RTWP3eQtJhLA-NrZzkQk4QllVNSRdc8wR2jxfQ2IQumNzoLfsYVvSWylHbTDmKJRBEXGU0qAMOSphMgT7Uh27M4qTM_rdgWj31Xc3_6oqq4YswTcXngyh2zV5u6vKtZuACYOcaTJXFt30ldeFx7WhiWhFZ_a_Ljwc0rPVsSuLA-2Dr7QKXWOLcj4P3oaHnEk5QJzZaor91BIt0u9LVnoLJ7-41y_56XHRixEE5Cy8wnFCWJW5PRxrb7c55GS4X9uuse_9iFbIvrt_pj_ge3FYU3J0TW734BcPkj4-CNatLPf7q9s11XG7gyRNpXa3UhH1v4p-s3NWCY7Q2Tqn7UnIDYGWBslM-2bfIZEIb_Y1L_PD1r0Q-HHrU7Yq2hwS5yy0K0vbWCHU1RtZFEyd8Az95di03QU5rcaA27DQI2_suji2kIQj08IgvFS0Cx607NZsMK1uG5aDXT2xSwm6L7puiHxPS29FW7eDWSm8WdvkFpJUY-Dm6JzdCH1KUkgDjpK7YNYubVPBBApGj28b-1p07y5vOeN0a93YrXOZ0mtDBkKMzyvxA-y-LovuuHamUTCZIdR5U1RrSKITwktZvdBzfSB8Xl-cTyULUDGN9Etvn060x4t9bVfdmH-EHBMQ3a_2kGjaKxUksUHILcUQioOjSuea-hlGkQ8zyhOEEpgFRrnO6LvZTJmskLsVWwCIviTM3lIu9Rcm35bV2_Xk3swNLiJTzl6AnEVR9pME0hSH7SVVHJ4hVfrqNGyClKMcZU4qDJoLcaSKGVSM7pwT6pKfqWASBdPZeadQFGwDD2btHIqYQDFLScxHSWw-OI1EwScuCxQaXfXcVS6h-UDs0cTz4Mx-ehyDEIXbPKEj1QxhdaRY7IpuHIgnlkSiGuEj8u6XQ02X4QqMYHI047yKTIISsBg1Z_G0kGgiLq2JclItmULDmcowVRGagLZBKmO6GzOZTRHHo00TYIAGaVsMRYczg8KVm11u1z57XHhRoHDP0eK6uAufBWIc-HA58IY2HwpXjEebkATQQFeSPxoQRQHRjgFGAaHKEpFxclygkf5a-uuQaq2mF0MWfJKAiAcDIiMq14p8nEsN4_aHiGivKH-tmUIV-OsAZfBpwvFowsgQVUy5MA0GldqAsiiViklUgkV0HTCF0rj7SrEIpWTmkwREPZowJGCUcXbGCUPKiP5HrhtSIe6RlHYSEjumhpJHCSY-SUD0owExVCuDq4DELOzjlGpDaRL664gFRDgUKB2wEI36NKRqPlbXFIaTuqtQypGH3rsenzijM2N0mpwJs1vyfV84FTCZvlfvUqIgcvdKwXU4bWebzlXVQclzVMFYx_cRvdbxcqzj5VnIBxjdFvJPyniFhknUTmINIt77MpLw8ZKEN72EF5wvavjoc2j4uqrK57tyNYjohbOBXy_MZzrVuXhbmYtonC8BiggltZooYhTct-9_Hm276_t6pbOpaL6k0HVvreeq_YZwnXPeGLMMr88iFCriNBmhdL8GhXT6Cecl0OXjjSOKYBDTA7cRqY0PLJi5d2Rx6fSvvfRJcE8HTZYlQi1mKlmi6lWxdFQuqXsY-6ZRhBff4v_YtXuaZrJ6HNWsARAGaROlIkTp1S1KNXEt8J3ScF77pGs_59g9bTJ2TJsrxwxHZVzZRUmyzAhSI2PHDAr9qxzTHyuo3PXqZ4Lw2_HSu7s28g5BxLdrrMw-2rqKYFLjQ5SC_oixRDbuZO8Ai5akCeF152p9q-3IcXbuQFXk5bjZTGokH9fIaPGcPfgXKuLyoZH2pen_0viR0jg-ErlX-Mw_VL5H-VFd0QhRpqtqwmlXaoeFOxYJUajRiXsaYcyMU4NjGgnNcLLkyGTg-zl76Fvs8Vzp0uIKv9Yev_baO9Xc41dz_A49-fAxD27y33MVSsSoousKpfpjhnCE2DyAU1xVVn4f5zMFZ4ZTxx4nFZyfxynu43yufpzTyCuNRxjZLDeL0n_9og7F3G7Kqi5vRxgccQ9dmROH548q-tKKRRHGcvxJhU5Zs3OnJbg_xV3stfwB6tBsCe7Zts49M5-_5OLkuv_-e_7ym52y0-n0Nw",
      "playgroundCharacters": 2466,
      "playgroundReason": null,
      "images": [
        {
          "animation": "projectile-0",
          "path": "gifs/shadow-spells--projectile-0.gif",
          "still": "gifs/shadow-spells--projectile-0-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 8,
          "durationMs": 480,
          "plays": "loop",
          "colors": 6,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60
          ],
          "bytes": 2750
        },
        {
          "animation": "impact",
          "path": "gifs/shadow-spells--impact.gif",
          "still": "gifs/shadow-spells--impact-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 12,
          "durationMs": 1460,
          "plays": "one-shot, looped here",
          "colors": 6,
          "delaysMs": [
            40,
            40,
            40,
            40,
            40,
            50,
            50,
            50,
            60,
            70,
            80,
            900
          ],
          "bytes": 6899
        },
        {
          "animation": "area",
          "path": "gifs/shadow-spells--area.gif",
          "still": "gifs/shadow-spells--area-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 19,
          "durationMs": 2000,
          "plays": "one-shot, looped here",
          "colors": 6,
          "delaysMs": [
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            60,
            50,
            60,
            60,
            60,
            60,
            70,
            80,
            70,
            90,
            90,
            900
          ],
          "bytes": 11383
        },
        {
          "animation": "buff",
          "path": "gifs/shadow-spells--buff.gif",
          "still": "gifs/shadow-spells--buff-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 10,
          "durationMs": 800,
          "plays": "loop",
          "colors": 6,
          "delaysMs": [
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80
          ],
          "bytes": 8619
        }
      ],
      "shownAnimations": [
        "projectile-0",
        "impact",
        "area",
        "buff"
      ],
      "alsoAnimations": [
        "projectile-45",
        "projectile-90",
        "projectile-135",
        "projectile-180",
        "projectile-225",
        "projectile-270",
        "projectile-315"
      ],
      "gifPaths": [
        "gifs/shadow-spells--projectile-0.gif",
        "gifs/shadow-spells--impact.gif",
        "gifs/shadow-spells--area.gif",
        "gifs/shadow-spells--buff.gif"
      ]
    },
    {
      "name": "shield",
      "kind": "fx",
      "file": "examples/shield.fx.json",
      "for": "Shield bubble: boiling ring and halo · loop.",
      "size": "48x48",
      "frames": 12,
      "plays": "loop",
      "colors": 5,
      "animations": {
        "shield": {
          "frames": 12,
          "durationMs": 960,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Shield",
      "group": "Particle and spell effects",
      "groupId": "particle-spell-effects",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/shield.fx.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset shield --out shield.json",
        "npx -y pixelbolt@0.11.0 render shield.json --out shield"
      ],
      "alt": "Shield bubble: boiling ring and halo · loop.",
      "description": "Shield bubble: boiling ring and halo.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=fVPRbqMwEPyXudctMgRo4h_JQ8SDATtYdXBkO02riH8_rZPQ9qTemwfvzuyMlxuMDyeVIHG2H9oZH476xXyA8K5DtH6GLAmzOmlIxMlqN4JwtWOaIOstYdL2OKX7Wc3D5APkoaqpFh3hrJxOSUPeMEPiT9lXpu1B6BlVpjVjC8LAqDHD1hgQ9oz01vQZjbmvreraYCHEz1PvXWTGo7Nzgjyg2BfcNuxB-dwRTp5VDxie4GXyuXaPbiFoY_SQMsvDk7zBBHXSEbKsCOMlqJTdbwXBeX-GTOGiCVHrEbLOH98yQ3_pe5c9Dt75EFlmzh7ZGfvpCGkKOk7ejXwtinJLoqhJFC0fdh1htGnSAVIUm4YwKedXRkh8C71aOIbJzv9I_ia1IVG8Nh13OfWpc_ENb3bmZIOdj7h7gXw6IfBC8CNWdUcIarQXzqVdZ9gQZm-j5nHrhhAHxQk0hN5bB1mKhVaN6FScvkTuo_-msfnyWTQEFQbIQ7lrqGoartPvWjlIsXQEfbIpPQ39pGNb8rbSHloqud1Y5-4PubBmuhsgOGt4XTbEzfGcn1hwyuqsc7j3XevY1X-FyleCv6SrCuOqo-Yjh7MTT8myqFaVgyjaxwY8hmiJgUopqCEx9w_BmIKej5yPKERLiFcbXAbN8n3gdecf_0K3dMuy_AU",
      "playgroundCharacters": 735,
      "playgroundReason": null,
      "images": [
        {
          "animation": "shield",
          "path": "gifs/shield--shield.gif",
          "still": "gifs/shield--shield-still.png",
          "scale": 3,
          "width": 144,
          "height": 144,
          "frames": 12,
          "durationMs": 960,
          "plays": "loop",
          "colors": 5,
          "delaysMs": [
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80
          ],
          "bytes": 15733
        }
      ],
      "shownAnimations": [
        "shield"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/shield--shield.gif"
      ]
    },
    {
      "name": "slash-hit",
      "kind": "fx",
      "file": "examples/slash-hit.fx.json",
      "for": "Slash hit: crescent and sparks · one-shot.",
      "size": "80x64",
      "frames": 9,
      "plays": "one-shot",
      "colors": 6,
      "animations": {
        "slash-hit": {
          "frames": 9,
          "durationMs": 486,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Slash Hit",
      "group": "Particle and spell effects",
      "groupId": "particle-spell-effects",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/slash-hit.fx.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset slash-hit --out slash-hit.json",
        "npx -y pixelbolt@0.11.0 render slash-hit.json --out slash-hit"
      ],
      "alt": "Slash hit: crescent and sparks · one-shot.",
      "description": "Slash hit: crescent and sparks.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=jZPLcqMwEEX_5c62TUm8gvUjWVAsZCwZVTDySHISl4t_n2qRxJ6qWQwrrqDV5_bjDuvDWScoXNynma0PJ7OznyC8mxCdX6AkYdFnA4U46zjtJpdA-HDHNEF1gjAZd5oSVFsTLno2KRmoO96g8Eu2sisNCAdWpa3toQJhZFVbXdkXEC6stDGttSC8srL5AeG2KSPaFgS_qb2uRqyEeDsf_Bw5W7zo8AbV4xUDbWp3Y317aM_aY1gJxlozpi3yx5W6wwZ9NhFqTzheg065Anzsz1C1ICQPtRcEoyOXxC2Zw5gjVEWYvX_bLk3GzPwy-tmHyIkP2Te7pQ0yTcHEyc9H_iwK2ZAoahJFyy9dx5iW2f6-xuei_PuKkkSRg4d1JYyz0cv1soWHxXB8CldDiCno25daCbO-5Y_9HW9uOX53GpsfltkNgQelrzqqy4F-StUL6gZC0Ed3jVBV-TMcvWxIyoGgw8hq31BVN9yO39fsq5dsl6OTmxPUTraEYN6NnqFEUa30IEo6PIDsF18GamsqX56BJLVPQL2siZN-Q1XESBfvFu5_xz8m5zlfw8cfJnBMUTHaQBiv3Gcejyea4JbT_9KU9PJMU5OsnmhqqoiruXjHAyWKriHEUc8Gqn7m4d7uSRTVsA4Ec3YpfTftr7yHa4gJSpaUa5agSoJeTnxhLxtB1V7kjcgz28uiobLYD4RT0O8u3XJDRVFyyY5Bn5hJNITZWZN5OUmc9CWb-9q7x8Y9do27GrR7bAFUHt7ZLCe2Ltd1WNf1Dw",
      "playgroundCharacters": 838,
      "playgroundReason": null,
      "images": [
        {
          "animation": "slash-hit",
          "path": "gifs/slash-hit--slash-hit.gif",
          "still": "gifs/slash-hit--slash-hit-still.png",
          "scale": 2,
          "width": 160,
          "height": 128,
          "frames": 9,
          "durationMs": 1290,
          "plays": "one-shot, looped here",
          "colors": 6,
          "delaysMs": [
            40,
            40,
            40,
            40,
            50,
            50,
            60,
            80,
            890
          ],
          "bytes": 3063
        }
      ],
      "shownAnimations": [
        "slash-hit"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/slash-hit--slash-hit.gif"
      ]
    },
    {
      "name": "swing-trail",
      "kind": "fx",
      "file": "examples/swing-trail.fx.json",
      "for": "Particles and effect shapes: swing.",
      "size": "40x40",
      "frames": 7,
      "plays": "one-shot",
      "colors": 12,
      "animations": {
        "swing": {
          "frames": 7,
          "durationMs": 670,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Swing Trail",
      "group": "Particle and spell effects",
      "groupId": "particle-spell-effects",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/swing-trail.fx.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset swing-trail --out swing-trail.json",
        "npx -y pixelbolt@0.11.0 render swing-trail.json --out swing-trail"
      ],
      "alt": "Particles and effect shapes: swing.",
      "description": "Particles and effect shapes: swing.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=7VbLjqM6EP2XuttqZJ5Js5wf6MUsRqOIhQl2YplgZDvNoBb_flWGQHKnZzTS9N21xcJl8Mk55arjvIE09sI9lNCrH6KVxp7Ek_wBCK_COmU6KGOEjl8ElOAG1Z2evOWqBYRBNf4MZcYQzkKdzn6e97wV3gso3-ALlPBPIjNZp4BwpCiTPJU7QOgp4kIUUgLCN4pkGIDwfY4EKwpAeJmjZ54eYUJw46U2rSN8Nxjb0MSKo-rDT74npzdOuN8o-iMtmljETcyTGhBqinY842kCCCNFYl-zjBNWiIRMgxZH0TPnuyOp_kpR3hR8L0lLz63_jxIzOCgPEEVRpKO7AUhretSPa1prPep1zGt1rUc93IbW63duGV_1Hd7D3p9_t0Lg3fFsLJSHBNMKoTeqm2l71UN5iAtMq2kiPSHT5eHtll_LlROA0Fwt93Pu9wzBWHVSHQEyTLJqTcS2sW55QxvpRTgnyg-CNZ7TeTzFaT5VCBdutbAPO4nTum-FIcrLy6macP3aeav0I8PnjyCYso-hFzoufuCXMwQ_CNGFerfmcpdnb-41eShZlKYIgjtCUx1MP4EnfwNe7H4FLk3bmuHx6IuPyGzOpmoKRakuAXhpIGrkwJlfQg2utLccboJXFQvNCqE1podS8taJUMsr_moTZD49t5rAv9GWED2NFH_fYkPxC1QTgpBSHP37BHf3qTlQW-TheWZIidrRQ5hCNFAmgZ-ekbwQLU2OpjWhuOBLsFcyVZyZ-bMV7mzahl6zKM6RRRmyqKDJfk_cZMvd-RHmJXjv-xAJsihsrig5x1bw7trP220XatzbqwiZ5eMSTQgtH28NoFXXUI0v1wfpCfVEahDItA8MSfJyJp--_unrn77-6ev_u69v5xQoRstRqlezrS2tQo4muhN5Srq6yx5BkrSSRTllajE657ndfG6228Xn0gTTmJzuJirFvEKwvFFXCnehHxf4Q4LxXXdmNB0EtW0cpciiXYVwvFKGz8oDpVBclPe3-nS9VbPVzf-c71LfWD6sTr0aMEl4YFlfrfNQFhgk-SCdd6dW0DeMYZaEi6oPN9UhxiRKKoST5a_KjzNolJC-xvITZYnlCK2SYhXuzryfD3e-YLerdbtUq4m86F8",
      "playgroundCharacters": 1191,
      "playgroundReason": null,
      "images": [
        {
          "animation": "swing",
          "path": "gifs/swing-trail--swing.gif",
          "still": "gifs/swing-trail--swing-still.png",
          "scale": 4,
          "width": 160,
          "height": 160,
          "frames": 7,
          "durationMs": 1470,
          "plays": "one-shot, looped here",
          "colors": 12,
          "delaysMs": [
            180,
            50,
            50,
            90,
            160,
            70,
            870
          ],
          "bytes": 4328
        }
      ],
      "shownAnimations": [
        "swing"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/swing-trail--swing.gif"
      ]
    },
    {
      "name": "vortex",
      "kind": "fx",
      "file": "examples/vortex.fx.json",
      "for": "Vortex: swirl and turbulence · loop.",
      "size": "64x64",
      "frames": 16,
      "plays": "loop",
      "colors": 7,
      "animations": {
        "vortex": {
          "frames": 16,
          "durationMs": 1120,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Vortex",
      "group": "Particle and spell effects",
      "groupId": "particle-spell-effects",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/vortex.fx.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset vortex --out vortex.json",
        "npx -y pixelbolt@0.11.0 render vortex.json --out vortex"
      ],
      "alt": "Vortex: swirl and turbulence · loop.",
      "description": "Vortex: swirl and turbulence.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=jVTbkqMgEP2X3tceC_GSxB_Jg8UDKkYqKC7gZKZS_vtWY24zU7u1T9LY9OlzOM0VeutGGaCCWX8o01t3Um_9ByC8K-e1naBKESY5Kqjg3bqg6N9Fd2GAqswRBqVPQ9jWcmoH66CqM45FKRBmaVQICqornKGCX2nOJC8BoaOIN2lecIKiqJBcHlpAGCk6yFx2e0CYKeqKfdv3gHCkqG-UjJGlKJNpV5awIvjPsbHGE9poCbWGIwiMwVunR9qYacPP0p0pSo4JFZ2PgHEtEHqj2vhvBLEiqL5XbYg1b-yrK_ROjspDlZYI3eJkiDrtGIKxdoYquEUheKU6qIq4eY4VWuvU9jXWeQI5Ry0EQhic8oM1HW2zJC2QJQU14Kjv1yPvUSISBjd6345yZElOx3fIkoNA6HQYlIOKJTmCXYLRE12mJcku2s9_K_-zdIYsKW9Ve2ensFFdVwQjP1UscIWznuh6m8X5ABt7qDbuCGQ1skfGBYKTnV5IxwzB_16kHyJMyTEVCJPVXlHbWYHgW2lUVLOx2kBVrvhAkouTTyAS7BuOdHahzPqAaS4e9s1IXYJIX8CeWPkda78KBDXqEO4Uv7LQ04k0vLOp0x1ygrFLuEjX3USi8ThR3XrPMGUs8ieX8qQkS0a31HRtRN7onlJTtnUsQ3CyDQTzBdsHp6YTkWEJzxH8RTsTgxWhc_JEa5YjBCeJyu2maZZJsdtZSvaDnFV0QJydl6m5z4Qgyf_NvMB99GzkxZLDkzPDrGTilWf06U-mj6bL_2PN-AvrlJiExTWLUVMbZ-1L7v5xubsVoTG2oZSbceIsPE1Zc-TJHtMkPmT2QiNUp7HtohDrDzGkU5IyOHIunhrw4kExw_ypAHuVfHuQxCrWdf0D",
      "playgroundCharacters": 948,
      "playgroundReason": null,
      "images": [
        {
          "animation": "vortex",
          "path": "gifs/vortex--vortex.gif",
          "still": "gifs/vortex--vortex-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 16,
          "durationMs": 1120,
          "plays": "loop",
          "colors": 7,
          "delaysMs": [
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70,
            70
          ],
          "bytes": 17377
        }
      ],
      "shownAnimations": [
        "vortex"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/vortex--vortex.gif"
      ]
    },
    {
      "name": "water",
      "kind": "fx",
      "file": "examples/water.fx.json",
      "for": "Cel water: geyser, whip, ring, dome, curl.",
      "size": "64x68",
      "frames": 74,
      "plays": "one-shot",
      "colors": 5,
      "animations": {
        "geyser": {
          "frames": 16,
          "durationMs": 1328,
          "plays": "one-shot"
        },
        "whip": {
          "frames": 14,
          "durationMs": 1162,
          "plays": "one-shot"
        },
        "ring": {
          "frames": 14,
          "durationMs": 1162,
          "plays": "one-shot"
        },
        "dome": {
          "frames": 16,
          "durationMs": 1328,
          "plays": "one-shot"
        },
        "curl": {
          "frames": 14,
          "durationMs": 1162,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Water",
      "group": "Particle and spell effects",
      "groupId": "particle-spell-effects",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/water.fx.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset water --out water.json",
        "npx -y pixelbolt@0.11.0 render water.json --out water"
      ],
      "alt": "Cel water: geyser, whip, ring, dome, curl.",
      "description": "Cel water: geyser, whip, ring, dome, curl.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=5Vddj6M4EPwvfa8d5C8cwl9BPDjBBLQEcsaZbDTKfz-1IQxkyM7o7l5W-zDSmGCo7q4qF-9Qdu5kPKRwrn_apuzc0W7Kn4DwZl1fdy2kHKE1JwspXI23DhCudeErSLVCqGx9rDykOkE4m8Z6byF9hw5S-IsLeVAMEApaCbMtEw0IJ1qpci_3MSDsabUrrbR0Z0Urm5RluYc7gi1Le_A9PfFob7119F_pzMn2kHKNUFyc8QFlIhF6awtINULTdT_CrgFx-g6HrulcD2kGp_DSHMFXzvZV1xR0mUUCWRTHOUIzVJRtOG54WPvlE6qV3SrO7wh9ZQq7vLlYu5nu7S6-qVtqawf3O8Khsaa9nIfdrrW03buLRei9M7dxdUdozC38mL3Dj7ql3vbeWUN10SAzKTBOhpd2l2MFaUaXpMoxkxI5y3Ocepgx5CKfJppp5Bx3SG3w5kytyziyKAm9QZbTwE0x9CtGjvSjHO6uG0gZQn81N0h5FCNczZttbHukJ_NkWPeQCoS2q3sLKYu2CP3BNBbSGOHcXYc3RhKHP3q8yhGsoduB-mUc3HGq3NXt8bnuqTaOnKA5U9QXWsco5rUqpFX_98X01VinoP1zcHNIVHJ-JzSn2vvHCEZpHFx3bSckcuiqcdaEpsocYX9xvYeUU4-8cT4Q1bRHKj4TjKFU1N_-HEicsWgX8B2deav9LYyKRYK6UTZd5yCNE-JmSdt3yImp-6bbE3-mikWkUUQCOVGO2jai7c_O3GZ9C28e2PgOvhtL0ETTEbaeUCcfqHnCUOolaurT7jPuVdgad2uoebRDHon8ficA16o-L2Sv1mWv_nDZa1R6qXrBUDJSvUapc8xiFgSQxckXLrDFHeqZBbCgc73UPw_6n6QfxkzX8ocHiGcPEGzygOAPk9D0axcI4_nsAC9U2Fe2ePSDq1D1ktaxWtL6-2oMdvSJ1zzJZ2xO1jUoZmwOhvUNNos_js1PVi7FE0H50sr5FgVfcFaj-nBvvk6peKSUEC-d_NkbA5DH2B4AiMrdxV-NK6aSHpQSE6W2H5TaCIZiySiFK3zKEQpnjqQKFs-otV2nlhqtnWZRdCf7nXyU_IbUoq2jjr94T_4faThMcWjRLPJOCUMvaZnMWSmRB3-ZWRtLJiJqhH03pqTHWaifyUkDlfks4TzhGdow4hEJxmyORyzxCJTRTBNsBqBwdelDBRue_yJQLcpNhuI-DmqFITH9KlHFXyWqp1a_kuW5Oz_jehYljylyHejhO4YytMa-2fYx-1eC5WvZZsMZnZIfgiXjWAlk82SznQS7XU82lMd4pD_VHPR7uLjmO0eD_A31-38GnQRj9fR5ozAWQ8CRSY6ZUsFrMzkGnsHFfxF4EuQiTGxKPCRGJMIuv3lWIg99Hi1I_kWaUd-PMwdng_ZD2UpgSBvjRwVn4bgbOZy8ijFitzx0gsf8-xgjw1lzv_8D",
      "playgroundCharacters": 1520,
      "playgroundReason": null,
      "images": [
        {
          "animation": "geyser",
          "path": "gifs/water--geyser.gif",
          "still": "gifs/water--geyser-still.png",
          "scale": 2,
          "width": 128,
          "height": 136,
          "frames": 16,
          "durationMs": 2130,
          "plays": "one-shot, looped here",
          "colors": 5,
          "delaysMs": [
            80,
            90,
            80,
            80,
            90,
            80,
            80,
            80,
            90,
            80,
            80,
            90,
            80,
            80,
            90,
            880
          ],
          "bytes": 7830
        },
        {
          "animation": "whip",
          "path": "gifs/water--whip.gif",
          "still": "gifs/water--whip-still.png",
          "scale": 2,
          "width": 128,
          "height": 136,
          "frames": 14,
          "durationMs": 1960,
          "plays": "one-shot, looped here",
          "colors": 5,
          "delaysMs": [
            80,
            90,
            80,
            80,
            90,
            80,
            80,
            80,
            90,
            80,
            80,
            90,
            80,
            880
          ],
          "bytes": 4887
        },
        {
          "animation": "ring",
          "path": "gifs/water--ring.gif",
          "still": "gifs/water--ring-still.png",
          "scale": 2,
          "width": 128,
          "height": 136,
          "frames": 14,
          "durationMs": 1960,
          "plays": "one-shot, looped here",
          "colors": 5,
          "delaysMs": [
            80,
            90,
            80,
            80,
            90,
            80,
            80,
            80,
            90,
            80,
            80,
            90,
            80,
            880
          ],
          "bytes": 6439
        },
        {
          "animation": "dome",
          "path": "gifs/water--dome.gif",
          "still": "gifs/water--dome-still.png",
          "scale": 2,
          "width": 128,
          "height": 136,
          "frames": 16,
          "durationMs": 2130,
          "plays": "one-shot, looped here",
          "colors": 5,
          "delaysMs": [
            80,
            90,
            80,
            80,
            90,
            80,
            80,
            80,
            90,
            80,
            80,
            90,
            80,
            80,
            90,
            880
          ],
          "bytes": 4795
        }
      ],
      "shownAnimations": [
        "geyser",
        "whip",
        "ring",
        "dome"
      ],
      "alsoAnimations": [
        "curl"
      ],
      "gifPaths": [
        "gifs/water--geyser.gif",
        "gifs/water--whip.gif",
        "gifs/water--ring.gif",
        "gifs/water--dome.gif"
      ]
    },
    {
      "name": "water-spells",
      "kind": "fx",
      "file": "examples/water-spells.fx.json",
      "for": "Water spells: projectile, impact, area, buff.",
      "size": "64x64",
      "frames": 105,
      "plays": "loops and one-shots",
      "colors": 6,
      "animations": {
        "projectile-0": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-45": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-90": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-135": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-180": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-225": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-270": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "projectile-315": {
          "frames": 8,
          "durationMs": 480,
          "plays": "loop"
        },
        "impact": {
          "frames": 11,
          "durationMs": 590,
          "plays": "one-shot"
        },
        "area": {
          "frames": 20,
          "durationMs": 1235,
          "plays": "one-shot"
        },
        "buff": {
          "frames": 10,
          "durationMs": 800,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Water Spells",
      "group": "Particle and spell effects",
      "groupId": "particle-spell-effects",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/water-spells.fx.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset water-spells --out water-spells.json",
        "npx -y pixelbolt@0.11.0 render water-spells.json --out water-spells"
      ],
      "alt": "Water spells: projectile, impact, area, buff.",
      "description": "Water spells: projectile, impact, area, buff.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=5VnbkqM4Ev0X7WtaoStgfmQeCB5kIwwz2DCA21PR4X-fSAmwsPFW9e72zMZud1e7sHU5efKik_J3Urb92YwkJV39h23Ktj_ZXfkHAfLN9kPdXkjKgVzM2ZKU3Mxo-93Q2aYZCJBbXYwVSSMFpLL1qRr9751p7Dhakn4nv5CU_KMUZVGWBEiFT4eyFO7pjE9RWciSESAHfBJlUhYRAVLgEy9UmeDI1j0JybQhdyDDx_nQNgOuf7geDo3dHeoTSTNCq6qiuM8vlFb4Sik9B6_0fD5TksM0bZoyzZgGTuMoye9AzOVYtT1JMylAsRyILUt7HN3WXd_-ao9j3ThDy96c7UDSBEhx7c3oiIsYkKZtO5KO_dUCGawtSKqBjNf-grPM5dTgrIyB0rBnwKUGnjAQQoOIGUiucyDm0F7HBcXdLfqbA-Ecgr8c26btcSVyQAPHqrdD1TaFW5yKHEhTj-uBzuCNwVIDo7HAfYbKFHY9q9iYoXBsex2b-oJR0pL7HcixseZy7fzs_mJx-kTD2JuP6QmNMR_uw-w7-a2-oOeHsbcG4WFcZkp57seqb6-niqRZJrV7KxPuo3yJRI7cmg4pyTgwmgCjaI1jcbiZD5Lim-RmvtnGXk5uTuSfBx_obT1YHIVLDUeD3sWQbm-4KKfqDgvMw7UfxmeUvSnq60DSmOpwNSCHtm5IKoO15B0j6lyP42z_lGZF33bDvDBP_MKmt4akmQDldhntZIuLIRwXC-BJgoZ2Ls4yTgVwmjjflzhEurmHpj2gV2akmaQKJAga5fc7erI-d-Y4hlHNeRjW-H57JqliQMaWpHsGxBo0lNQXl6Buf_l_EKemn900V4iZsoyBCMIh45jYOXq_vmABiZ0T6xa9GOslgrMEMFaPbe8D71cXHThILq7mYgmijFMFHCdc0aKqHsm7AP0M4B72eRCxcgl_OcfualuJ6ZUHm_X15fR2L-4Wf5DBgEfA91TnoeUxRA8IfAGgw30j4BRTW4j8XfqM9SN7ZiQOXRD0yKHpj7ikABkjE_abvcyub6_jzfTF4nvPJDptTrdd5MDOuSYwh3Igp958q8cPRy-j6JmiNyckVCxpKNzI7TTM70jpZMjBmuJTS5bIeoN5Dy5ORxdOC3o8X3SAn2Ec0Q0LosAEFi02KGf9qw0gaAwCM82VEl-0HoVEsK1CoudCojcLSRQUkq5tm-dEh-1aAoxG-VO-w8-pRJgL-kcKkX6uRLibE1DZzlW2Hc__zeI05SMyh-IOeXtfCVwALV6MgMfun_fyLPOAlHXTuGMHD8ffr2aopoNWqu3akaxLhj-RcEIMnuPJ3ciDq6WbdewHTNkDj5_KrkiCIsM5uCNyBT4KwScL-GhdZtEv-UZ1nWD5wHpPsQxhxbB_xYEwyqZFwalCKSJWUsTXYhZi0-DrcRTCW0TUO3z8SVMJEFEOmZSwz5-iQwUM7oEL4ByQ5llruSPMy63EncpYWiprfGVxSkzM_7myM5rJCC_KMC7eiTIRMBFtaDL0jSNAT6El9UtcfZUW1JNPtAgBGNwowzCQMi5BxPiK4jxfn3FcBDzFEIPOX_VotOZGAMe_CydYdZ0R7r1Zs0ZP9KhNzbolWb1CeLCjNpLOl1nOv0qTYi-KXE00qQjEPodMc0-XViDFiibx02ja_UU8iXfC42i6HQtSzBWW6Rjmy-GLfd187moaz0eqfhynT5wvVUNQHbHwjwZJxfyzkg4IhS9hnYBLilco2K4vUJIfgCJpBIrq-edlb7HQEL3bO45-wt5DZVEQeF2xsHCrUNr5HR7Nk54g7nxgTQ2W13FLVxVpEIytlFIC3IXHWimpd33We28mk1Jawxdr_OJT_P8EvlQMZKz_Kvhj3e0aWy49B-cgg95VeuHrI0EsulQ_8O41cLFm22f4Gmx4UspAk-ov4MZseYe9dxpsAq8lVvjPwEcP8BGDRP8t2I99e7usmJcceABeQ5CDaot5nmgQiq2uDyJ3KfBswD4w4NHUJK7D-9yAx1XDM_wV-ViHfwi_ZAyk1n8L_qFrzFDN_M-5G_pkSmC_bRhFM3zBNUjxlUR11fQ1gL6atMiJ2EI_07-CP7_5342_Nx_BqSv8jdfF9WHYVqKk5e7u5yWA9mECMJDRuvbgZYN4sSDZDCC96ojfBlBwz3a4luXqlm3VHCebl8f7__lLtXWzt9lVLZc4atGR8XNPJ7Yb0sddEnYpXxW8fP8ieHnsTgf8SAh8jYHrp74paJ4xPFyEhzo3mq6IHjJXv4hc7JjzR5-knwSu2BS4alvgugZcT2fQv9YhKf0q_WOU-IAfCdcC4N3BigkFnP2nqdj9PC6WC-x3On-41f3LFYRXZa6TnQoIW2pD7A4XD_w7Meeuqcdr4aqOchIWSGf7usXugt0_ryKcJovyxxv-1aWh-24rvDZ0uTB_fZD49mvWkCo4QgVq3fj1CBXhFeCj4OElrnxnFn7tElilfT3prK9S_us3CL--23wg-T2_3-9_Ag",
      "playgroundCharacters": 2558,
      "playgroundReason": null,
      "images": [
        {
          "animation": "projectile-0",
          "path": "gifs/water-spells--projectile-0.gif",
          "still": "gifs/water-spells--projectile-0-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 8,
          "durationMs": 480,
          "plays": "loop",
          "colors": 5,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60
          ],
          "bytes": 2729
        },
        {
          "animation": "impact",
          "path": "gifs/water-spells--impact.gif",
          "still": "gifs/water-spells--impact-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 11,
          "durationMs": 1390,
          "plays": "one-shot, looped here",
          "colors": 5,
          "delaysMs": [
            40,
            40,
            40,
            40,
            40,
            50,
            50,
            60,
            60,
            80,
            890
          ],
          "bytes": 5660
        },
        {
          "animation": "area",
          "path": "gifs/water-spells--area.gif",
          "still": "gifs/water-spells--area-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 20,
          "durationMs": 2040,
          "plays": "one-shot, looped here",
          "colors": 5,
          "delaysMs": [
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            60,
            50,
            60,
            60,
            60,
            60,
            70,
            70,
            80,
            80,
            90,
            900
          ],
          "bytes": 11952
        },
        {
          "animation": "buff",
          "path": "gifs/water-spells--buff.gif",
          "still": "gifs/water-spells--buff-still.png",
          "scale": 2,
          "width": 128,
          "height": 128,
          "frames": 10,
          "durationMs": 800,
          "plays": "loop",
          "colors": 6,
          "delaysMs": [
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80
          ],
          "bytes": 6015
        }
      ],
      "shownAnimations": [
        "projectile-0",
        "impact",
        "area",
        "buff"
      ],
      "alsoAnimations": [
        "projectile-45",
        "projectile-90",
        "projectile-135",
        "projectile-180",
        "projectile-225",
        "projectile-270",
        "projectile-315"
      ],
      "gifPaths": [
        "gifs/water-spells--projectile-0.gif",
        "gifs/water-spells--impact.gif",
        "gifs/water-spells--area.gif",
        "gifs/water-spells--buff.gif"
      ]
    },
    {
      "name": "interference",
      "kind": "wave",
      "file": "examples/interference.wave.json",
      "for": "A looping wave pattern: resonate.",
      "size": "48x30",
      "frames": 40,
      "plays": "loop",
      "colors": 3,
      "animations": {
        "resonate": {
          "frames": 40,
          "durationMs": 2400,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Interference",
      "group": "Waves",
      "groupId": "waves",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/interference.wave.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset interference --out interference.json",
        "npx -y pixelbolt@0.11.0 render interference.json --out interference"
      ],
      "alt": "A looping wave pattern: resonate.",
      "description": "A looping wave pattern: resonate.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=7Z3dcts4EoXfhXurVcV2kkn8KlO5MEBlk6oknnI8MzWVyrtvyZKIPg2ABA7hmEM2ryhSn9UgQfqcxt-P7q_Dw_fP99-626td9-3u66G77T5_ezw8fDw8HL75Q7fr_v7cP37qbl-_23WfDp__9-mxu715tev-uPtyeHw8dLc_Otfddv-5efPu43vf7Tp__PT2rf_Nfex2XX_85N9-vOpfdT933d03_-n-obv9_fr17urNh1338eHu6-F7d_v7j8vPPxy-33-7ezz899UR__Ph7vEpvrevdt2Xu38OD_Dlv-_-OsZ4_8fp6P0f3W33v4fPfbfrHu7_Ph7s9pVbt3tZxLkKxDnv-6fN-wSYRuRWEVh2a4C4KHrnvBtB_FOJ90N5Tn_keDSDuOM1cucf69UHl0KeiBCg9yEgYASifh82eS4gzovfiHZ8P_ymQIbfdkNIYi9ENg-pD4woPnORiVvJVJg9Uy2LtkYI8SATr4sLWBHYxPaLkA8_P_zcDf8o7v86PHy5-2dl_ysM2SbSZ_bzSN_3yf22vzK1GWLIEpHj_wr532LwIFdb9CAZQZFDGFExKLDkD71I8V0cvXMe1R4gQYa6k3A9a0oQoYCIUyBcUQVrRR3UN9wXlzEUktDbkYl1uzg4_P3wQy78zIC4oP9DFGFPnJ6DEIExxScuMnMrmQrDVMuyrRVS_yCTHqTypTSxmQcxxJBZiHkQQwxph2Q9yPUGPUg2qzkiKk4yrDKxWRtYFRJHoo8g4hLRP5XMZRDn85lwAWXy7af09_C9TL7doTxV0fUThiLNJA1FiCpqodinDEUQ4L00FOJoC6Q-MKL4zEUmbiVTYZhqef5GVI7Ryl-0NWs6YV4XtS8lIrBnQMyDGLJWxDyIIYa0Q7Ie5GZ7HuT4n_6oDpL_79Oi4imre8rsLsSDpMLXxzBH7QcZKcTOUV5Ktacz4dneOJONGjITns-3j3UsgrNS6oduRS7e87HU9zKj7xO7w5-8INimIQ1F1KoxAyECY4pPXGTmVjIVhqmWTOUv25p5EOJ1Uf1SIgJ7BsQ8iCFrRcyDGGJIOyTrQV6bB5lGRruE_0s8yJOojPvJOBSoOhOe7o1T1KihLlcy3z6aoYfTCd2-l12KEh2YpDsIFyHRWLGPDQV8LbM_H6kPjCg-c5GJW8lUGKZaXuKJirEYD0K9LsyDNI3LEEPmIuZBDDGkHZL1IG-26UGy_R6WewsBSXSij7vRS6R6iDGcQEkJalNo3el8e8JQjBDyvJD6cfcl1YFJSX1oV0jq4sEMxIjshSRHV7dFigMjik9cZOZWEhWGqZZ7pvIXbvZSqkbMgxiyVsQ8iCGGtEOyHuSteZAFBJYKRR0DRHaiDwXR3ehljlp21T93Vnf6TJQJx7mUMrMpzci3w_hqgQptHRuKPqhtKcKDNu9Rt4dTzmupH2zDaS8gojeUbG4QvadaILWBEcVnLjLddFJXYZhqyVT-8_lEOUYesbJtzS-lEsQ8iCFrRcyDGGJIOyTrQX7bngdZ3hQ0yWBG-paI6VWhrz5OuyoRHJfQ9yBzU937UQNqfeTaNGr45OAGNbwhYyhQJ8sP2lAkWxui9oY0gsMSlG9ohpQHVl984iLzTSd1FYaollTl3xOPWOG24pdSEWIexJC1IuZBDDGkHZL1IO-26EEWhqS1hzqKMqyXHedll_r0BERSAqqEM4rHVo0aSUbn22W0sCKEE4e1oehTYWMBe9Dt0NqAvwLtDRKJB4W7II3DdZyJ1AdGFJ-4yMStJJtOqqslU_n3zCNWuG0dMQ9iyFoR8yCGGNIOyXqQ9-ZBXhrBhLFLHgZEziWE2WOcT0iIvWiWIzXPUST2qJEao7o1HpQd-i_toSON_KD6L3kvR3GrtoPhlJT6YZhAaF64ZM5lFv7pWwoJqjZ_aD5SHhhRfOYiE7eSajohqiVT-ZlHrHTbOmIexJC1IuZBDDGkHZJfo3CjC6UvCRFzkp4nx1GHNSL0o-7CAjozJKnlqhJx13MXd5RxukuR3uKpZsWa33tAwweve1Z58deEhJVq0kt9DOuOR40Hap3yAQnf8PI8DK5GJG7UkI5h-JmZCBFYdfGJi8zcSqbCENWSqfzDH7_slTxipdvWETMhhqwVMRNiiCHtkLwJ2eRK6YtCpEA6LweXkkiowy6yK-gwp8-B2vNjClGcDppyXFKKbwSxKwWl-KIcF4Bdq4IITnRHGvbBhEj9GbcejNkDGADt9O8AMowxgNmu9urg6Ws8QgRWX3ziIjO3kqgwTLVkKj_1iJVuW0fMhBiyVsRMiCGGtEPyJmSLS6U_L5KRVXA4qZBc6BXv9iMKyYEOO4kq0GFRJ5YphehSJmSq2JEJEQIVlSuckcjl-Fhe__wt1PqCuMQObQFgD8LfjO2BUO4JRK7VIXfbIjWBVRefuMjMrSQqDFMtmcrPPGInKhOV_PBveSk9F2ImxJC1ImZCDDGkHZI3IRtcK_2ZEZlElqnjHCKztJjZzZoQ6NWu1mQWZ4Pay8y5I2NAZJIIXxnE7iBoMcENgw9Q7EJeH8Rur0R4QrgH8a33klrf5-yBj5HhR6AVYR8dnocQgdUXn7jIzK0kKgxTLZnKzzxip3MSL3iQC7dVIWZCDFkrYibEEEPaIXkTssHF0n8NEg20zSEhve0vCilIw4wJkbBeWyBpQqbKEJuQ6FT0SZuQy2Hf6_S5HH4skfPBMMh6yFjLgdbShAjCXX5t6MykmNmOAmfATew3QeoDqyk-cZGZW0lUGKZaMpWfecQwhsIHuXBbFWImxJC1ImZCDDGkHZI3IRtcLf2XILrjRx6BtPMJUUJPIdP5Y41Mir3hK4OmDH9Ma0qdE9b5YzX0IHUEEehblOhdFCMwexQuLOEyiJy8Kbev7gsuBSj3czPBEggRGFN84iLX3UqmwtRXS6byM48Y_MHSB7lwWxViJsSQtSJmQgwxpB2SNyEbXC6dQ7LriGW0S5RznUbOKddFyR3ntabU5VGI71PKFadvRWQyrx8hsLqE2k8jjKMAgQ4NAvLMXIT0LXXFZy4ycyuZClOytUwNVD5ixIO8r39djG_LRcyEGLJWxEyIIYa0Q_ImZJPrpdcjMLNnATJ0Pu_7lN7JKKRE_5KpwMa2BojTcs1Fo4mzGXcH_X6KmjX6Xg7SzuX15bJ4kJvH9fIkIieDRYHopKoWyMicsy6zHgWBEIExxScuMnMrmQpTtLUzIbWPGPMg178uJrblImZCDFkrYibEEEPaIXkTYgumlyBqZs9pxMkEarF2qQ-sEtGhRKEpxEU5YxfNq4pi1-e6_fiM2FVrfWdWBNfCfZDnDlSvb-goRhbsk-dmIpxvqSw-c5GJW8lUmPN3xj-_4LNPPcjVrwsisGUgZkIMWStiJsQQQ9oheRNiK6YXIPGKBFNI6PexIBMS53-jIyoXHg0BSBwDRArXHvczPYX8WF4_7SggAGw98Gmt78ftgY8ROTDcRTvCH8xCiMCY4hMXmbmVTIVhqmXR1tCE1D7I9a8LIrBlIGZCDFkrYibEEEPaIVkTcr3RFdOz41sbZUOdG-358UImJIo-6rCPiB96wssOOT4_kEDM-iqVq-7Fg5Ja5PW9zJoDg8I9uyaFzzqK4TeinbSj0AuQ416IbB5SHxhRfOYiE7eSqTB7ploWbc1MSPWDTLeCVr2UJjYzIYYYMgsxE2KIIe2QvAnZ5IrpuU7hDVVFWB5tMdnQqLt-osM-IHJQQMgE62EBmYw7KNd8xh3S5GpBhoyjiJPtsowprS8Oxm0UssVhQJIrn6fWQJ-FEIExxScuMnMrmQrDVMuyrRVS_yCTJqTypTSxmQkxxJBZiJkQQwxph-RNyBZXTM8PTc2rimFmz6U0ayTypvoIInF3_USHfciF-3wuPD2QAJaq8F7OKJTJuLt-vD_SuKNIM0lHEaKK2ij2KUcRFHgvHYU42gKpD4woPnORiVvJVBimWp6_EZVjtPIXbc0aT5jXRe1LiQjsGRAzIYasFTETYogh7ZC8CdngiunuMndN6h9-WlWImT0XYkJS4etjmKX2g44UaueoL3PjjP1Yh5zJZg2ZC89n3Mf6FsFZqfXFsOx4z8da38ucvk_sDn_ygmCrhnQUUbvGDIQIjCk-cZGZW8lUGKZaMpW_bGtmQojXRfVLiQjsGRAzIYasFTETYogh7ZC8Cdngiun1_-8XOHlutQ7zwzhZ6CqTX1zCyS442CGnqFlDr2WdyriP5ujhdEK4y9WuU32YpD0IFyHRXLGPHQV8LbM_H6kPjCg-c5GJW8lUGKZaXuKJirEYE0K9LsyENI3LEEPmImZCDDGkHZI3IRtcMX1MISz4HgKS6Egfd6WXSPU4YziBmhLkphC70xn3hKMYIeR5ofXjHkyqD5PS-tCykBTGgxuIEdkRSQ6xbosUB0YUn7jIzK0kKgxTLfdM5S_c7KVUjZgJMWStiJkQQwxph-RNyAZXTF_g__tUKGOzlMqO9KEguiu9zFLL7vpeLgCNHfYxF44zKmXmVJqRcYdB1gIV4jp2FH2Q21KFB3Heo3APp2CRC_hw-VMBER2iZIOD6EDVAqkNjCg-c5HpxpO6CsNUS6byn88nyjHyiJVta34plSBmQgxZK2ImxBBD2iF5E7LJFdOXNhFNMpiR7iVillXor4-zr0oExyb0PejcVBd_FIFaILk2zRo-OcBBDXHIOAoUyvKDdhTJ9oaoxSGN6LUEwTg0Q8oDqy8-cZH5xpO6CkNUS6ry74lHrHBb8UupCDETYshaETMhhhjSDsmbEFsx_eWRtPhQR1GH9bLzvOxWn56GCFbMxpQzqsdWzRpJRmfcZbSwMoQTh7WjSC_2rZYElwi0N-CvQIuDROKR4S5o43AdZyL1gRHFJy4ycSvJxpPqaslU_j3ziBVuW0fMhBiyVsRMiCGGtEPyJsRWTH9xBFPGLnkYEDmjEOaPcVYhofaiuY7UbEeR2qNGa4wK13hkdujCtIe-NPKD6sLkvRzKrVoPhlNS64ehAqGB4ZI7l3n4p28pJMja_KH5SHlgRPGZi0zcSqrxhKiWTOVnHrHSbeuImRBD1oqYCTHEkHZI1oTcbHTF9CUhYmbS8ww56rBGhH7UnVhAZ4YstVxcIu597uKuMk53KtJbPOGsWPx7D2j44HXfKi_-mpCwUk16qY9hAfKo9UAtWD4g4RtenocB1ojErRrSMQw_MxMhAqsuPnGRmVvJVBiiWjKVf_jjl72SR6x02zpiJsSQtSJmQgwxpB2SNyGbXDF9UYgUSOdV4VISCXXYRXYFHeb0OVB7fkwhitNBU45LSvGNIHaloBRflCMDsG9VEMGJ_kjDPpgQqT_j1oMxewBjoJ3-HUCGUQYw49VeHTx9jUeIwOqLT1xk5lYSFYaplkzlpx6x0m3riJkQQ9aKmAkxxJB2SN6EbHHF9OdFMrIKDicVkgvd4t1-RCE50GEnUQU6LOrEMqUQXcqETBU7MiFCoKJyhTMSuRwfy-ufv4VaXxCX2KEtAOxB-JuxPRDKPYHIBTvkblukJrDq4hMXmbmVRIVhqiVT-ZlH7ERlopIf_i0vpedCzIQYslbETIghhrRD8iZkgyumPzMik8gydZxDZJYWM7tZEwK92tXKzOJsUHuZWXdkDIhMEuErg9gdBC0muGHwAYpdyOuD2O2VCE8I9yC-9V5S6_ucPfAxMvwItCLso8PzECKw-uITF5m5lUSFYaolU_mZR-x0TuIFD3LhtirETIgha0XMhBhiSDskb0I2uGL6r0GigbY5JKS3_UUhBWmYMSES1ssLJE3IVBliExKdij5pE3I57HudPpfDjyVyPhgGWQ8ZaznQWpoQQbjLrw2dmRQz21HgHLiJ_SZIfWA1xScuMnMriQrDVEum8jOPGMZQ-CAXbqtCzIQYslbETIghhrRD8iZkgyum_xJEd_zII5B2PiFK6ClkOn-skUmxN3xl0JThj2lNqXPCOn-shh6kjiACfYsSvYtiBGaPwqUlXAaRkzfl9tV9wdUA5X5uKlgCIQJjik9c5LpbyVSY-mrJVH7mEYM_WPogF26rQsyEGLJWxEyIIYa0Q_ImZIMrpnNIdiWxjHaJcq7TyDnluii547zWlLo8CvF9Srni9K2ITOb1IwSWl1D7aYRxFCDQoUFAnpmLkL6lrvjMRWZuJVNhSraWqYHKR4x4kPf1r4vxbbmImRBD1oqYCTHEkHZI3oRscsX0egRm9ixAhs7nfZ_SOxmFlOhfMhXY2NYAcVquuWg0cTbj7qDfT1GzRt_LQdq5vL5cFw9y87hgnkTkZLAoEJ1U1QIZmXPWZdajIBAiMKb4xEVmbiVTYYq2diak9hFjHuT618XEtlzETIgha0XMhBhiSDskb0JsxfQSRM3sOY04mUAt1i71gVUiOpQoNIW4KGfsonlVUez6XLcfnxG7arHvzJLgWrgP8tyB6vUNHcXIgn3y3EyE8y2VxWcuMnErmQpz_s745xd89qkHufp1QQS2DMRMiCFrRcyEGGJIOyRvQmzF9AIkXpFgCgn9PhZkQuL8b3RE5cKjIQCJY4BI4drjfqankB_L66cdBQSArQc-rfX9uD3wMSIHhrtoR_iDWQgRGFN84iIzt5KpMEy1LNoampDaB7n-dUEEtgzETIgha0XMhBhiSDvkZEI-7Lq7b5-_PhmO793tj8GLHPc_Ptx9PTz9kxgcynE19eHDlfxwLT_cyA-v5Yc38sNb-eE3-eGd_PAefhRDgBiuIIgriOIKwriCOK4gkCuI5ApCuYJYriGWa7weEMs1xHINsVxDLNcQyzXEcg2xXEMsNxDLDcRygzcHYrmBWG4glhuI5QZiuYFYbt53H3bdl_ujwnh8-PPw8-fP_wM",
      "playgroundCharacters": 6907,
      "playgroundReason": null,
      "images": [
        {
          "animation": "resonate",
          "path": "gifs/interference--resonate.gif",
          "still": "gifs/interference--resonate-still.png",
          "scale": 3,
          "width": 144,
          "height": 90,
          "frames": 40,
          "durationMs": 2400,
          "plays": "loop",
          "colors": 3,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60
          ],
          "bytes": 25893
        }
      ],
      "shownAnimations": [
        "resonate"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/interference--resonate.gif"
      ]
    },
    {
      "name": "portal",
      "kind": "wave",
      "file": "examples/portal.wave.json",
      "for": "A looping wave pattern: open.",
      "size": "38x56",
      "frames": 40,
      "plays": "loop",
      "colors": 8,
      "animations": {
        "open": {
          "frames": 40,
          "durationMs": 2400,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Portal",
      "group": "Waves",
      "groupId": "waves",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/portal.wave.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset portal --out portal.json",
        "npx -y pixelbolt@0.11.0 render portal.json --out portal"
      ],
      "alt": "A looping wave pattern: open.",
      "description": "A looping wave pattern: open.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=7Z3rcts4EkbfhfvX64rs2Lm8ytb88E48l8pMMpScTG1N5d23ZBsk0WwADQoUAft8NTWW7BNCJIE23aco_dN9v98ffv_6pfu4u-i-3P15333s_vq6f7j7o7vo_v7908Nv3cfr9xfdb_e___rbQ_fx5vai--vuj_uHh_vu4z_d5-5j96-r3e7T9W130fXHZ7fvbt6833UX3f747O7m9pf_Hp8djs8-3d7tfv6lu-gejs9-ubvf_fy-u-i-HZ_dXN1e3R7J78dn12_fXr_9b3fR_Xp89vP1h_vbm-7HRXf35effvu67j__Zfbi42f100f2yv_vz_tB9_M8_7uV__ev-y7_fdBfdp2_7u4fHfbt9c9H9cfe_-70Hfvvy6X7_x93_uovu619PP_n6V_ex-3X_-6fj6__69_Gb3aUp3cX64OfnJMDPnz9_-_b9-_fvEvXBI_XtCXxkQ-Az50CPnIKOG8ApOQGfObczgpyCU8yhCjjjfHIAHwf-_HlGusFHUOGeSB9UBvYHn4JzbrLJCahxR9IDQxscN7kA1Llh7CcwvMFhk_lgiHNjrwVGXuLji8wGYzvtdnsl8PJpwRt2xgx-joOf1wWD5PdFYGxssRSCm5RrxgqGx54VgMAm55Xiu0rOa09gk_NqdvlZI7X6qA2uVlyFDNTwy-EXwYjpvxUcOYn-e2ZOhn5zSVL7XfgtmgkoX5yfVcF07OBPP376cTFcKv199_2-mcuk1wr2fd_bwP3eBPb7w2FOKuD-cDgc9mmwfwLlJk8CH2MA--Nezw6Qtte9diArO9crgMrk0cH97EwHptnhYJyPDYDmvbYfRy2NgtY1Y16F9nVdvKSYq5m9Pporrr2GqwE8N-hfJn393lZDKQN8eHh4sICHw3HdJsHD4XD5WFT3UfCJeoqP-uCUE6QH-pxP-qDcgwA446bkBFS4CbkAVLmRzAcD3ECuCKbiwOAG3SZfNzhfn0MeanmNLYDJVLFmiheAFYqUvT7aK669hpt_K9h_z9h_c13afxeGMgd_fU65LZ4PPF4peddKR023Q9Oh6QSIpouDOoemQ9PpIJoOTacM7NdwSQZqOJquAJjO0v4Tmq4F0CoI7JpO6ZTroK1fvYamW8Hnac5BPY6vs6f-knwe9i0KGme4ec1saN_sms5s38z10a7pXuc0axdE04mg6dB0uWAqDmzB8aDpmgeTqWLNoOkch6ar61JBB1VNd4WmQ9MJEE0XB3UOTYem00E0HZpOGdiv4ZIM1HA0XQEwnaX9JzTdiwLL-zxrY_vYKt_I5x1fo0nTPTbfi_o8Nc2CZpNQ3OetAJbfGS1tgnb7Zl4z5lW4gn0z1p41bpJ7jbPnVYBoOhE0HZouF0zFgS04HjRd82AyVawZNJ3j0HR1XSrooKrprtF0aDoBounioM6h6dB0OoimQ9MpA_s1XJKBGo6mKwCms7T_hKZ7leB2b6O5qc8z3fDTuzfw6w2gpjuqONeKPZh--zRwusdlwOkfvWceepoTwETOAJrno3mGb_oWlVvat1d6Oy3gAKLpRNB0aLpcMBUHtuB40HTNg8lUsWbQdI5D09V1qaCDqqZ7i6ZD0wkQTRcHdQ5Nh6bTQTQdmk4Z2K_hkgzUcDRdATCdpf0nNB1gDHxRH4tnvuHH7vPMWkQ7lHNw9kCCq9q38mB5qXZu-7aaz0ufa_dz8-wxa-MM-1b6Jjk-IA6wBRBNJ4KmQ9Plgqk4sAXHg6ZrHkymijWDpnMcmq6uSwUdVDXdDZoOTSdANF0c1Dk0HZpOB9F0aDplYL-GSzJQw9F0BcB0lvaf0HSARcDNfF5Bk9APW5xIjD4I9g7sk6DnTxSwH8DJl1FJKaD6dAqKVy-ez0AZQO87huNoPjPWc22ePbnz0TDDHV_cgWPfAFsA0XQiaDo0XS6YigNbcDxouubBZKpYM2g6x6Hp6rpU0EFV092i6dB0AkTTxUGdQ9Oh6XQQTYemUwb2a7gkAzUcTVcATGdp_wlNB3he0NpTf3pfPguo3RikgGmTkKnpMnyeXdNNb5w6xfFkWyP5kk8Fx3Mnnq8Plt-ZkvbNfK5zNV3JiXs5gGb7ZluF9nWNfQPctvmEppsETYemywVTcWALjgdN1zyYTBVrBk3nODRdXZcKOqhqundoOjSdANF0cVDn0HRoOh1E06HplIH9Gi7JQA1H0xUA01naf0LTAVYKJrv0gzkZ-_59FNTUxBR0ImQqMfpCWqTvY2CvG5kiMsgKqk8B1zvgqXNtnj0Z89E6w81rxr4Kx9eAfQOsHUTTiaDp0HS5YCoObMHxoOmaB5OpYs2g6RyHpqvrUkEHVU33Hk2HphMgmi4O6hyaDk2ng2g6NJ0ysF_DJRmo4Wi6AmA6S_tPaDrAVkHX7J_0_U8zCb3mJk6yHfni77gzNp9X-ra71-nz1rBvppvk0ud6jWlmneHZDjy9CqMBBKwKRNOJoOnQdLlgKg5swfGg6ZoHk6lizaDpHIemq-tSQQdVTfcBTYemEyCaLg7qHJoOTaeDaDo0nTKwX8MlGajhaLoCYDpL-09oOsAzgbNbaPoTwflNOf1pJqHX3MRJtmOBaBlvnIqAvXM8fQjs989fnqzR8yaHtyWcg76H0sCWfF7yNZr32noczWcm91yXtG_mGZ7hwK2rsHwBiAYQ8AQQTSeCpkPT5YKpOLAFx4Omax5Mpoo1g6ZzHJqurksFHVQ13e4Nng5PJ0A8XRzUOTwdnk4H8XR4OmVgv4ZLMlDD8XQFwHSWNqDwdK8O7NWHc7APPvFBv1HvPfNA2dDvg216I2j3dLngKCd0cMqVFnpWdzO5Fysq9KZ3d-lCrw9-AbQfx9wzYz_XOfotMR_NM3yFxVW-ANhrj72a2etjOIDtg3g6ETwdni4XTMWBLUgePF3zYDJVrBk8nePwdHVdKuig7ul2eDo8nQDxdHFQ5_B0eDodxNPh6ZSB_RouyUANx9MVANNZ2oDC01UP9t6XIDhpvMf12_hjQfqg98M-0gK3ezoBnu7pZmBIJZjBy0tJRsG00OsHzr_XawZOOHkb2EngUfCYtNGziEqBQm21DZr3Ous4ljuFxtmzin4rvbhyPJ2xUtg9nbmameujveLaa3gwgOcG8XQieDo8XS6YigNbkDx4uubBZKpYM3g6x-Hp6rpU0EHd013h6fB0AsTTxUGdw9Ph6XQQT4enUwb2a7gkAzUcT1cATGdpAwpPVzso3povCGZ4ullTXwPHT85y7_oXAvd94IkPDvcOKc8E6Hffg-BegoE_7MQG_W8sA3PNX0Gh14_cbGosA0fe6Jes4OzJ-cCCO1P-gK-g36zzsfhSMK9C-7o2Vwpz7bFXM3N9zPF01hoeDOC5QTydCJ4OT5cLpuLAFiQPnq55MJkq1gyeznF4urouFXRQ93TXeDo8nQDxdHFQ5_B0eDodxNPh6ZSB_RouyUANx9MVANNZ2oDC09UO-u-4FwYnbiDu6ca30BMddgHup2DkT5zpZsQmfVB230PglkJvBp5Ld0zljfeNOThwM720CJxKBKOIKg5O_3_moVNg-QOeca7LTzPrDN9Uv1krhb32mKuZvT6aK669hgcDeG4QTyeCp8PT5YKpOLAFyYOnax5Mpoo1g6dzHJ6urksFHdQ93Vs8HZ5OgHi6OKhzeDo8nQ7i6fB0ysB-DZdkoIbj6QqA6SxtQOHpagdzPF0_fAmDvetY9_tinm4__zcKuD9Mm-qHmKeb_Gwf83TGxv9egqG_AFcQeuLPuWLmb5Q8cXByd1dcET7Nnsk3AuBEbcVdou_AzgaaX6N1r83HMfPMXKrfWDh7ius385rJ0OrGdW2uFPbak-XpbPXRXHHxdA2CeDoRPB2eLhdMxYEtSB48XfNgMlWsGTyd4_B0dV0q6KDu6W7wdHg6AeLp4qDO4enwdDqIp8PTKQP7NVySgRqOpysAprO0AYWnqx703povDBb3dP1hBA8RsB-76v20wT4D94ex4z59rIBWoTf9mT-2Dx58lXAIgRlCz_szLQjmCL3iYJ75mxgrwGXHcbNzbZ6PGfrNumbMq9Cu38yVwlx7zNVsFU9nreHBAJ4bxNOJ4OnwdLlgKg5sQfLg6ZoHk6lizeDpHIenq-tSQQd1T3eLp8PTCRBPFwd1Dk-Hp9NBPB2eThnYr-GSDNRwPF0BMJ2lDSg8XfXg7PYhHTR3jfuxDx0XeoeDAw8JT-d-PPwTHTxMm-qHMGht03tbEWP74ME3BGHn4P2oD4N7aTGCXsQM2k2L7Y6o9bRR__hfQXCQZecfuuDhybpXbQpGznXxaWae4fY1Y12FGfrNWinMtcdczez1Mc_Tjf-PgoEAnhvE04ng6fB0uWAqDmxB8uDpmgeTqWLN4Okch6er61JBB3VP9w5Ph6cTIJ4uDuocng5Pp4N4OjydMrBfwyUZqOF4ugJgOksbUHi6FwPOP2VLB4_958f2csrT7cfOdvwNMqct8MjfQv1h2lRPeLpJm_70-25WEXreTURVmj__ZJxRETYC2mWZBxY5MytYten2q9Rv5nVtrhTm2mOvZub6aK-4wQBWC-LpRPB0eLpcMBUHtiB58HTNg8lUsWbwdI7D09V1qaCDuqd7j6fD0wkQTxcHdQ5Ph6fTQTwdnk4Z2K_hkgzUcDxdATCdpQ0oPN2LAXM83fRrCMx4g0zjrSr1C71LKSdC4CpCrwXzV1oRrgFutdfrWDUzaJqP5hneiH6z1p6Mt7O03k-Hp3vBIJ5OBE-Hp8sFU3FgC5IHT9c8mEwVawZP5zg8XV2XCjqoe7oPeDo8nQDxdHFQ5_B0eDodxNPh6ZSB_RouyUANx9MVANNZ2oDC0706sB_by4n3dSst9MyebvzxPvVOmrbGf_G33LTrjoMPHkLgOu7GCpr90usEtzoz5tmzgn6zv_mkeRVa13XObXLF9Zu5PgYD2D6IpxPB0-HpcsFUHNiC5MHTNQ8mU8WawdM5Dk9X16WCDqqe7uoNng5PJ0A8XRzUOTwdnk4H8XR4OmVgv4ZLMlDD8XQFwHSWNqDwdK8PdO3n5I13xoa1_ca74u-k-ZKEXob582-dCoHbmr9XCJrPzAqT4qXpN2OlyPB0Zv1mrY_BALYP4ulE8HR4ulwwFQe2IHnwdM2DyVSxZvB0jsPT1XWpoIO6p9vh6fB0AsTTxUGdw9Ph6XQQT4enUwb2a7gkAzUcT1cATGdpAwpPBxgEX47Qu_RVQhjcVuhtZf72vl-KKkJv802D5r3e0KptqN_Mawb9BvjiQDydCJ4OT5cLpuLAFiQPnq55MJkq1gyeznF4urouFXRQ93RXeDo8nQDxdHFQ5_B0eDodxNPh6ZSB_RouyUANx9MVANNZ2oDC0wGeDpo_Gs_aVJ-26WOgvfGf8xl68pEGTrbTp27lMwuUqZIpAK7ilwDjskz7R6eBttljnY92_Zbx2W_GVWhe11n6zVZ7ggEEnIN4OhE8HZ4uF0zFgS1IHjxd82AyVawZPJ3j8HR1XSrooO7prvF0eDoB4unioM7h6fB0Ooinw9MpA_s1XJKBGo6nKwCms7QBhacDPCNoF3r7I_L8JQaW_gy94kLv0hcoYXAiOaTvEOAaNqjXHgO6H5Y-4NZzbZ49q-i3FT77zbiu0W-Am3ef8HST4OnwdLlgKg5sQfLg6ZoHk6lizeDpHIenq-tSQQd1T_cWT4enEyCeLg7qHJ4OT6eDeDo8nTKwX8MlGajheLoCYDpLG1B4OsAawaf7aGZ308zADYVexq18vXykghlKZip54qDycA72PnhmRbgZaN1r83HMOTPGc22ePWu8p-Qq-s20roMBBDwHiKcTwdPh6XLBVBzYguTB0zUPJlPFmsHTOQ5PV9elgg7qnu4GT4enEyCeLg7qHJ4OT6eDeDo8nTKwX8MlGajheLoCYDpLG1B4OsAqQXc7TQrcTOhlvDen3fwNSiZh_iY2KG7-Cgu91wvajqP5zNjPtdmq2d9Tckv9Zl3XoQACngPE04ng6fB0uWAqDmxB8uDpmgeTqWLN4Okch6er61JBB3VPd4unw9MJEE8XB3UOT4en00E8HZ5OGdiv4ZIM1HA8XQEwnaUNKDwdYNtg_5wU2Pc6OQcHOREHj5rjCUzpjhXMXy8ftQy6hzW_xsLgGlbNOh_NM9y-ZsyrMBRAwKpAPJ0Ing5Plwum4sAWJA-ernkwmSrWDJ7OcXi6ui4VdFD3dO_wdHg6AeLp4qDO4enwdDqIp8PTKQP7NVySgRqOpysAprO0AYWnA3wl4CpC75i07sgwf5dWJWMEe_EgAE790nnBHLW11Wu0H8fypzDDqpnnI_oNEDAK4ulE8HR4ulwwFQe2IHnwdM2DyVSxZvB0jsPT1XWpoIO6p3uPp8PTCRBPFwd1Dk-Hp9NBPB2eThnYr-GSDNRwPF0BMJ2lDSg8HeCJoGjiBz_mSzb7p99YBM646bc0cGIcYqAnJ1Sw18BeAz1ObnIO-komCk6-hEFpg2Lg07Mw2HtDDi-hbxI073XmcTSfmYxzbZg91vlonuG5a8aLDpYvAPbaEwsg4BzE04ng6fB0uWAqDmxB8uDpmgeTqWLN4Okch6er61JBB3VP9wFPh6cTIJ4uDuocng5Pp4N4OjydMrBfwyUZqOF4ugJgOksbUHg6wADYB5_4oNnTSfBkTzcHAyqhDz4QoPvpaCdO9HR5YP90S9RefojXFHz6fzmh1-tgyIHZwdGBnR0suDNr6DfzuS4-zcwzPGPNWFdhhqezVooMT2etZpEAviIQTyeCp8PT5YKpOLAFyYOnax5Mpoo1g6dzHJ6urksFHVQ93fUbPB2eToB4ujioc3g6PJ0O4unwdMrAfg2XZKCG4-kKgOksbUDh6V4d2KsP56DZ0_lgAU9nBPM9nRWcSIyYp_N1R0SgPH4K2d4APn7G2F5aIxWcvMNh1Pw9aaOwDfINlPBRgObjmHtm7OfaPHvS89E8w1dYXOULgL325Hg6a30MB7B9EE8ngqfD0-WCqTiwBcmDp2seTKaKNYOncxyerq5LBR3UPd0OT4enEyCeLg7qHJ4OT6eDeDo8nTKwX8MlGajheLoCYDpLG1B4uvrBJ0OQBPvZAx18QZ5uBpZyDombiMY3Vhx1x_ipYAo4MS0BMF_oTTapgeNwE22k_ck9fV0xcHRP_XioIw5sMFybgInXaN5r-3E0nxn7uTbPHut8XOE2OfMqfHmezlpx7TU8FMBzg3g6ETwdni4XTMWBLUgePF3zYDJVrBk8nePwdHVdKuig7umu8HR4OgHi6eKgzuHp8HQ6iKfD0ykD-zVckoEajqcrAKaztAGFp9sO7GctbhX03s0uAorPsQqC48_7aB96-tM-0tm2ezoBntHT5Qq94p7u8eYpC2hVMknQvTnkVBvttT-5R3C8vSsOTtTWiaBZlpUfOnuvU8ex_CnMnj1FPV3pxZXj6YyVIsfTGauZvT7aK669htt_KwQCWAjE04ng6fB0uWAqDmxB8uDpmgeTqWLN4Okch6er61JBB3VPd42nw9MJEE8XB3UOT4en00E8HZ5OGdiv4ZIM1HA8XQEwnaUNKDzddqDd0x3b9AU9XYAUoLmzbb1V5VXfeDfeOXUmT5ch9Jx8Gv747APGqne70o-PTwPH15WwauWHNu71hmfGPHu4TW7-ZGk1M9fHTE9nquF4ulpAPJ0Ing5Plwum4sAWJA-ernkwmSrWDJ7OcXi6ui4VdFD3dG_xdHg6AeLp4qDO4enwdDqIp8PTKQP7NVySgRqOpysAprO0AYWn2w40e7rHfn66x-vd8hMBtxJ65u677OeHwAqEntWLJD_xLl_oHQ5GG2QGjdrIU1txsO83A42vMcOqlT7gdv1m_zS5YrfJraLfBHgZBO2eblv9Zqy49hqOp6sExNOJ4OnwdLlgKg5sQfLg6ZoHk6lizeDpHIenq-tSQQd1T3eDp8PTCRBPFwd1Dk-Hp9NBPB2eThnYr-GSDNRwPF0BMJ2lDSg83XagtSPba71gBez3R0Ng8XTP7eVUH9resC7bXrb3841gS0JP-ciyKTgMNP6lOBl7Cq4n9A6Hw6Gw0CsNml9jwcNjPTPmc_3i9JsVjGR57TFXM3N9NFdcew3H01UC4ulE8HR4ulwwFQe2IHnwdM2DyVSxZvB0jsPT1XWpoIO6p7vF0-HpBIini4M6h6fD0-kgng5Ppwzs13BJBmo4nq4AmM7SBhSebjuwvKc7ygnL3R1bCj3lrffWP-DbC73JrVEBcPi5zd2YJc_xXFvAqYiKKsKpA9MVYT6435feYgI073X2cbSfGcO5Ns6eTfVbJKeBpkqxpX4zV1w8XWsgnk4ET4enywVTcWALkgdP1zyYTBVrBk_nODxdXZcKOqh7und4OjydAPF0cVDn8HR4Oh3E0-HplIH9Gi7JQA3H0xUA01nagMLTbQdu6OmKC73n93VLt8DVnrp-HLcQemZwNfOnqBsPzLdBTlgVE1Fm8zeVZecFy--M_Tgmz4z5XDdl1cygbV1bK0VG7Smu3_B0LxbE04ng6fB0uWAqDmxB8uDpmgeTqWLN4Okch6er61JBB3VP9x5Ph6cTIJ4uDuocng5Pp4N4OjydMrBfwyUZqOF4ugJgOksbUHi6DUGriOqVFq8GTu4NioLbCb2MD9vLEHpamgWTk6KXYFDyPH8ZtVEcnBirE8H1ZFkSLL8z2ccxfWbkXk1T23wsDJrXdc7Hcm6o32wV117DX-WkqBDE04ng6fB0uWAqDmxB8uDpmgeTqWLN4Okch6er61JBB3VP9wFPh6cTIJ4uDuocng5Pp4N4OjydMrBfwyUZqOF4ugJgOksbUHi6BkD7jXfGrvFTHzoNtiD0LtW-f22ncAXQ3M-f_0UZmGZJlTC_sywOlpdldquWfI3mvXaxHsdXaVqsq7AJ_WatjzmejtvkmgLxdCJ4OjxdLpiKA1uQPHi65sFkqlgzeDrH4enqulTQwSdP99NFd_fl9z8fvdyh-_jPo647fv1lf_fn_ePl0aPAe_N4DXX_5d879-DKPbh2D966Bzfuwa178M49eO8efBg2OG562PZu2Phu2Ppu2Pxu2P5uGGA3jLAbhtgNY1wNY1yNr38Y42oY42oY42oY42oY42oY42oY42oY43oY43oY43o8SMMY18MY18MY18MY18MY18MY1x-6ny66P74er10f9t_uf_z48X8",
      "playgroundCharacters": 9219,
      "playgroundReason": null,
      "images": [
        {
          "animation": "open",
          "path": "gifs/portal--open.gif",
          "still": "gifs/portal--open-still.png",
          "scale": 3,
          "width": 114,
          "height": 168,
          "frames": 40,
          "durationMs": 2400,
          "plays": "loop",
          "colors": 8,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60
          ],
          "bytes": 20816
        }
      ],
      "shownAnimations": [
        "open"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/portal--open.gif"
      ]
    },
    {
      "name": "hero",
      "kind": "poses",
      "file": "examples/hero.poses.json",
      "for": "A rig whose motion templates make idle, walk, run, jump, attack, hurt.",
      "size": "32x36",
      "frames": 36,
      "plays": "loops and one-shots",
      "colors": 14,
      "animations": {
        "idle": {
          "frames": 4,
          "durationMs": 800,
          "plays": "loop"
        },
        "walk": {
          "frames": 8,
          "durationMs": 640,
          "plays": "loop"
        },
        "run": {
          "frames": 10,
          "durationMs": 800,
          "plays": "loop"
        },
        "jump": {
          "frames": 7,
          "durationMs": 560,
          "plays": "one-shot"
        },
        "attack": {
          "frames": 5,
          "durationMs": 400,
          "plays": "one-shot"
        },
        "hurt": {
          "frames": 2,
          "durationMs": 160,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Hero",
      "group": "Characters and motion",
      "groupId": "characters-motion",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/hero.poses.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset hero --out hero.json",
        "npx -y pixelbolt@0.11.0 render hero.json --out hero"
      ],
      "alt": "A rig whose motion templates make idle, walk, run, jump, attack, hurt.",
      "description": "A rig whose motion templates make idle, walk, run, jump, attack, hurt.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=rVbLcqw4DP0X3a3SBYZ-sZzF_MCdWVEsDJjHQGOuMZM0Kf59SjYQ6KQrNz3JomPJ5uhIliW9QibVhWsIoC1fRJ1JlYunVnaiA4R_hepK2UDgIjT8IiCAQigJCM9lqgsIPIZQiDIvNATeAaHltdBaQPAKFQTww43dAzsAwgtJB-FlHgeEK0kJO8b7BBAGkjInPp8EICiSvMxNGO11JB0zFnspIBDNH_HJP3gZIPQkCeco9gwQWpIYYyffB4RfBuXsHw8xIEiS9vyQnc-AEJs9znzmAkJimfm-5wBCYbiwxPWJS254OifOOIwIil_aDoIwhBfjBFGPMARliBI9IkWa1lAgw1GEUNsAMbanCCndUXy0VJ2kxYV3RtGVg4AgPOI5sqZM2GPeCQgYgux1XTZ0BRVxaWXZWKCibCEIHfQjhK6QfZ0KBUHo4pMXITQiqazkR-NIt8VT-krJZ3IFdruqqqrdDhB2VV4URUXLKqdlUZllMQzVUNkDwzBMy-swDFez3FXX69V8tjNoux1ECLxJCklEfDxGI4Iuyrwgy7FsTILUoskph_ZLNoUeeovvbPbd3fqOkHBzC6Bk31BW2P_RJiiiSSEwv-R0V5TNp6bZF0x3MqmE_i3bGVd_Peq68_9dz7j6-aD3d61_wfu-bSkb3xv334yzlfF7Gf-Q61KJL5h2vvnW_37U9W9I-IyrPx_0_jtuPZZSr4tMlSS2rMRJYmoK_W2KhIvMlCfbeYLwde43nebG57RXXJtexByiqMqcsjp09-jto6Wuvn243IDd22q41jwxT3Las9V48ojMzoV0JJJ5LSA470dco5sAr8EnxTvsNZMJ3gRqQX5yb6BtwVhjz5pPiVM3WHF2tsCmFKxxJ8VHnBcSH3K-Af6DbnwBjq30EerMYA26glrc2XpHA0ro4JO7j1aHTS9bzk7SpxEyHXFtsxHvIq6_IdwEu413dyfYGwKfRptO_1641wzuxJuO3DyT_rveCGHfPJI7L2TD4u4TiUaqVmVuq1p6XVGyU82cArmtUIHnIyjR6VUZqUVuJ7h1zJc40ei2yvw5XWmG4-ry9uHMdfFw-nDWz8UgoiJ5kVS3TJUs09rUYi0ubc1pTraqEeGZ19XNllEhdK0QKQTMR-i0KlPqEA4NlZm2zVrGELg0nvbNDQJpFgD_9BGAPwNQbHgDwWlE-KenlrCBMqpxurtbppOSxste6ZtNo7JTmBBmM5F1f6GInMbxPw",
      "playgroundCharacters": 1298,
      "playgroundReason": null,
      "images": [
        {
          "animation": "idle",
          "path": "gifs/hero--idle.gif",
          "still": "gifs/hero--idle-still.png",
          "scale": 4,
          "width": 128,
          "height": 144,
          "frames": 4,
          "durationMs": 800,
          "plays": "loop",
          "colors": 13,
          "delaysMs": [
            200,
            200,
            200,
            200
          ],
          "bytes": 2863
        },
        {
          "animation": "walk",
          "path": "gifs/hero--walk.gif",
          "still": "gifs/hero--walk-still.png",
          "scale": 4,
          "width": 128,
          "height": 144,
          "frames": 8,
          "durationMs": 640,
          "plays": "loop",
          "colors": 14,
          "delaysMs": [
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80
          ],
          "bytes": 6259
        },
        {
          "animation": "run",
          "path": "gifs/hero--run.gif",
          "still": "gifs/hero--run-still.png",
          "scale": 4,
          "width": 128,
          "height": 144,
          "frames": 10,
          "durationMs": 800,
          "plays": "loop",
          "colors": 14,
          "delaysMs": [
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80,
            80
          ],
          "bytes": 7623
        },
        {
          "animation": "jump",
          "path": "gifs/hero--jump.gif",
          "still": "gifs/hero--jump-still.png",
          "scale": 4,
          "width": 128,
          "height": 144,
          "frames": 7,
          "durationMs": 1360,
          "plays": "one-shot, looped here",
          "colors": 13,
          "delaysMs": [
            80,
            80,
            80,
            80,
            80,
            80,
            880
          ],
          "bytes": 4788
        }
      ],
      "shownAnimations": [
        "idle",
        "walk",
        "run",
        "jump"
      ],
      "alsoAnimations": [
        "attack",
        "hurt"
      ],
      "gifPaths": [
        "gifs/hero--idle.gif",
        "gifs/hero--walk.gif",
        "gifs/hero--run.gif",
        "gifs/hero--jump.gif"
      ]
    },
    {
      "name": "slime-idle",
      "kind": "poses",
      "file": "examples/slime-idle.poses.json",
      "for": "A rig whose motion templates make idle.",
      "size": "32x32",
      "frames": 8,
      "plays": "loop",
      "colors": 5,
      "animations": {
        "idle": {
          "frames": 8,
          "durationMs": 1120,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Slime Idle",
      "group": "Characters and motion",
      "groupId": "characters-motion",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/slime-idle.poses.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset slime-idle --out slime-idle.json",
        "npx -y pixelbolt@0.11.0 render slime-idle.json --out slime-idle"
      ],
      "alt": "A rig whose motion templates make idle.",
      "description": "A rig whose motion templates make idle.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=hVJLspswELxLZztQBmyH0lUoFrIRoOIjIomQF5funhrp2X7JJivUqp4edTcP9MYu0kNg07_U3Bs7qGwzTjkQfirrtFkhCsIqFwUBN-tFZbqbFQiH7vwIUZWEUelh9Om8yVl5ryAemCDwrejKWyVB6BiVt--y6kAYGFW9rM6MZkZ13xVXZh6M-nN_VjUCwcplcxBNgzTI9LYlzGlpWV54q_WOd95M98HfRbqInf6tIJqyoqJskxbEiXCTTkVrZvezXtndBEI_cxze7ioQNqPXpNrLO6ucKLu0BDfGgSa7Ula3IRDUh4o8aw5-KY4jz_PjAGGa8jyfpi-nliDX-2gsRFNR0YaX4Nd5jiFHFE-FiObxrIELyE4c6W6lTx2dTwRj9aBXiKa4Ulm3r1TekzGddP9G7Jit8VNezOjoxfxE0nt5H_mhfyvEoCBSTOGLSjL2knnC_-kkXght4Mr0wMzBmn3tIMqaPkt-Tlnl_DuVQFgMhxILif-qeMCrZZulf6bHTVu5cKw1wf3YpRshTnlx-SfUENtRyrPI3cz7wrp1CH8A",
      "playgroundCharacters": 616,
      "playgroundReason": null,
      "images": [
        {
          "animation": "idle",
          "path": "gifs/slime-idle--idle.gif",
          "still": "gifs/slime-idle--idle-still.png",
          "scale": 4,
          "width": 128,
          "height": 128,
          "frames": 8,
          "durationMs": 1120,
          "plays": "loop",
          "colors": 5,
          "delaysMs": [
            140,
            140,
            140,
            140,
            140,
            140,
            140,
            140
          ],
          "bytes": 3891
        }
      ],
      "shownAnimations": [
        "idle"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/slime-idle--idle.gif"
      ]
    },
    {
      "name": "swing",
      "kind": "poses",
      "file": "examples/swing.poses.json",
      "for": "Posed parts: swing.",
      "size": "40x40",
      "frames": 5,
      "plays": "one-shot",
      "colors": 6,
      "animations": {
        "swing": {
          "frames": 5,
          "durationMs": 530,
          "plays": "one-shot"
        }
      },
      "preset": true,
      "title": "Swing",
      "group": "Characters and motion",
      "groupId": "characters-motion",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/swing.poses.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset swing --out swing.json",
        "npx -y pixelbolt@0.11.0 render swing.json --out swing"
      ],
      "alt": "Posed parts: swing.",
      "description": "Posed parts: swing.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=rVNJbsMwDPzL9MoYXrJV3-gx8EGu5USQbRmSWjcI9PeCTurEKHpqeCIpcTQcUhc01nUyQGDQX6ptrDuq1WC98iB8Kue17SEyQi87BQE_6v4IwqjrcIJYp4ST0sdTuPqDbFUICuICA4GXrM5kXoFQcbSTa1nkIJw5UvsqXUvGmiLVFE0DgufoVcrd-w6EN4429VbuG0TGd8Ezuh-tq9lxdvQQByRJkpjkwUCcM2ezzBljzNnMds1VlTmb8ceMme_5m72ZB7xF7e93S4Ls30_WQRxyKkrCYHV_pR30AHHItlSUMXI_k9LicPnR10ntFQj1h5Phqv0-JVinj7pnwJTydTkLcS-sWllzIR9Mc2J9CM4GyfNYZcUmloROOqPcopI5zXUzDFO-HcYy0nzbB6fNkuHrMwgW6XPo8X6usgW_TUoIo1I9T6BxtnvQOdjHngJEmhQFQUnPaLpH_AWe_wd8u_sLvLFta8fl6LfPUHaTxjJOS6m7Cfj2gfgjT5xlN-3gTPuu4b3huYsbzZLQWjtANLL1Ksb4DQ",
      "playgroundCharacters": 602,
      "playgroundReason": null,
      "images": [
        {
          "animation": "swing",
          "path": "gifs/swing--swing.gif",
          "still": "gifs/swing--swing-still.png",
          "scale": 4,
          "width": 160,
          "height": 160,
          "frames": 5,
          "durationMs": 1330,
          "plays": "one-shot, looped here",
          "colors": 6,
          "delaysMs": [
            180,
            50,
            50,
            90,
            960
          ],
          "bytes": 1650
        }
      ],
      "shownAnimations": [
        "swing"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/swing--swing.gif"
      ]
    },
    {
      "name": "coin",
      "kind": "recipe",
      "file": "examples/coin.json",
      "for": "A hand-drawn recipe: spin.",
      "size": "24x24",
      "frames": 6,
      "plays": "loop",
      "colors": 4,
      "animations": {
        "spin": {
          "frames": 6,
          "durationMs": 660,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Coin",
      "group": "Hand-drawn sprites",
      "groupId": "hand-drawn-sprites",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/coin.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset coin --out coin.json",
        "npx -y pixelbolt@0.11.0 render coin.json --out coin"
      ],
      "alt": "A hand-drawn recipe: spin.",
      "description": "A hand-drawn recipe: spin.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=5ZVNboMwEEbv8mXrSjHh11eJsnCwA5aMjYA0iSLuXhmnxG1SKWy6aFdgNG8882QPV7zLrlfWgFECwxsJhtIqA4KTEkMNFsUEtVRVPfj3lms5DBLsCikqF78qaBrFaxBUVgv3QYr9PslAoD2H1eEgY-5C-pqLCSqznMcbjASHjjeyB9tePysYjp15c9Hi2PHBl0fXBLb1YbYFg9Ratb0EwRksJbiAJQQnMBoR1GA0ISittp2LdZWO5BmZTWTqybUnozs5tTSTWpkblk9YTnCO_CL6uqPv_Anokl_ACk9Oq2-oVzTuHBwKoUuEZIGQYomPPPCRvayjCHUUv6IjWqKjCHQkS3S4tLOPzcs-KA2FTKvnRh7a2ixp61ZdElb3Yl80PPc_9PVQXPw3nSf__GbtCLhRzdR_7yZ73yrjnvNovo_keRTNl3A-tvMRuUndjaMb-FIOLldp9bFx6VP3ExFCmQqMjuMH",
      "playgroundCharacters": 536,
      "playgroundReason": null,
      "images": [
        {
          "animation": "spin",
          "path": "gifs/coin--spin.gif",
          "still": "gifs/coin--spin-still.png",
          "scale": 4,
          "width": 96,
          "height": 96,
          "frames": 6,
          "durationMs": 660,
          "plays": "loop",
          "colors": 4,
          "delaysMs": [
            110,
            110,
            110,
            110,
            110,
            110
          ],
          "bytes": 1637
        }
      ],
      "shownAnimations": [
        "spin"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/coin--spin.gif"
      ]
    },
    {
      "name": "ember",
      "kind": "recipe",
      "file": "examples/ember.json",
      "for": "A hand-drawn recipe: burn.",
      "size": "24x24",
      "frames": 4,
      "plays": "loop",
      "colors": 5,
      "animations": {
        "burn": {
          "frames": 4,
          "durationMs": 400,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Ember",
      "group": "Hand-drawn sprites",
      "groupId": "hand-drawn-sprites",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/ember.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset ember --out ember.json",
        "npx -y pixelbolt@0.11.0 render ember.json --out ember"
      ],
      "alt": "A hand-drawn recipe: burn.",
      "description": "A hand-drawn recipe: burn.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=lVPLbqNAEPyXynXWCq-VPV8SKfKhgSFGGWjU4I2Rxb9HMwNrQ5xo1xfcpa6qfkxf8cdIX3MLHSm01BhomCY3AoWPuhxO0HGqcDL122kI_zuyZhgM9BUMjafflCRpCgVxUVFleZZAgVxUJYc8K6Ew-qgq833mlENURQVhUujHJmfbO8XK-hpesZt_zOELtUAsW4hlm8UitIYcsoYCMjM95BEiCgYeEqJxHO8hFho_bti3kGeutB7IO0xk0xDzUtVuh-OkUAk1pod-vS4rqmxdvBv5RVAoz0JDWGH0rMBdyOQOGv1ATYdlwp7oBBQu0KnfSjYdJ_VFN1_pHp5dDdxsjFdOhTUkQTiKgrLfs3s80Inz8Hm2bmf_KPZpqcIlnkkx9EGhYMvuLQn-srr6YuxMyzwtueWNeNhDsZ5N_P-zSZUT616gBzmbhyblymT_D4O6a2W_7YR-6jjadHxUoLZuvLW_nfwsrb-h5bmsirhf7f2Ibp0cJ3eLJ2MGp1KwPTdO2J98WdbtG3Q0TZ8",
      "playgroundCharacters": 587,
      "playgroundReason": null,
      "images": [
        {
          "animation": "burn",
          "path": "gifs/ember--burn.gif",
          "still": "gifs/ember--burn-still.png",
          "scale": 4,
          "width": 96,
          "height": 96,
          "frames": 4,
          "durationMs": 400,
          "plays": "loop",
          "colors": 5,
          "delaysMs": [
            110,
            90,
            120,
            80
          ],
          "bytes": 1596
        }
      ],
      "shownAnimations": [
        "burn"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/ember--burn.gif"
      ]
    },
    {
      "name": "shrine",
      "kind": "recipe",
      "file": "examples/shrine.json",
      "for": "A hand-drawn recipe: pulse.",
      "size": "48x40",
      "frames": 2,
      "plays": "loop",
      "colors": 15,
      "animations": {
        "pulse": {
          "frames": 2,
          "durationMs": 640,
          "plays": "loop"
        }
      },
      "preset": true,
      "title": "Shrine",
      "group": "Hand-drawn sprites",
      "groupId": "hand-drawn-sprites",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/shrine.json",
      "commands": [
        "npx -y pixelbolt@0.11.0 compile --preset shrine --out shrine.json",
        "npx -y pixelbolt@0.11.0 render shrine.json --out shrine"
      ],
      "alt": "A hand-drawn recipe: pulse.",
      "description": "A hand-drawn recipe: pulse.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=jVXLboMwEPyX6dVCvEISfqCnnnqsosqACVZ5yTZ5KMq_V2sggZREvSRa7JnZHXvXFxyE0rKpEXsMNa8EYuhCyVqA4SgzUyAONwyFkPvCIA5dhpaXwhiB-AKOGG8-973QBUNCURgE7oqDgajeoiSMog0Ycor4JnIjWussLg0SPwfDgaIgX_GA1n4o8jKP-wkYtGXJIr6htU-rkIXcshQUbcU2STIwpJYz95NwBYbK4nIehKTwYXHR2g0o2lO0ytN1Qpm9U5RFeZ57uDLoc5U0pabqVFcLxF9wnL3jgMHZO3v6p7_9JO7Xd1eGXPFKaMRfl9FMmZVkZdYpbqzPoesylPws1Gyf_jmDoWn7j02LGEqkBgwnxC7D2f4eh9NAHLgMaVM2CjE4rmzAZNIUQk1RmynKm6DI3UzUWpoz4i-Xebsby6OyNyOJphwvlOeozR0l_q_sR1OOcMrxQvkpKn9Qdp316rl44D7z7vBK_Tmsm8s7_opqtwmM18A0tvVmF0GUpWy16DW8yIr0FVJAGv5dQ2OhngFE--4ofxnVypMoe5g_wIL7xnRKf1TSjGltZgp-r-AyqK4cOqLiJi2on1LbNBo7BiXakqdDl9HXFLvrjqGSSpGeUZ1gKGUljR1R2ghyZsughcgQrxfPwQ8nHvXH4E_u3-ef-8eQSXLLdiiUnXUMzUE8eNN0puxn48hVgKFttBygstYys_d75KPacTpRcae-xH5WPGX8WXJYVC0li28sOvpt5-aDn3YKWjfTgtf00XXWo3H-gsgCcWXH7F_ij76E2b4_BzrsmyUQjQkEtwS04VWLcfJSRl093qpt38_uS78e3XZuPjM4J3J73mT7sjnSk6SaamlC-w-PHD0X7_Q0zJryX1nb4nktKz4kd0HbldrS3t6KMQOb1u56vf4C",
      "playgroundCharacters": 976,
      "playgroundReason": null,
      "images": [
        {
          "animation": "pulse",
          "path": "gifs/shrine--pulse.gif",
          "still": "gifs/shrine--pulse-still.png",
          "scale": 3,
          "width": 144,
          "height": 120,
          "frames": 2,
          "durationMs": 640,
          "plays": "loop",
          "colors": 15,
          "delaysMs": [
            400,
            240
          ],
          "bytes": 1930
        }
      ],
      "shownAnimations": [
        "pulse"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/shrine--pulse.gif"
      ]
    },
    {
      "name": "forest-spirit",
      "kind": "recipe",
      "file": "examples/forest-spirit.json",
      "for": "A hand-drawn forest spirit: idle, bob and blink.",
      "title": "Forest Spirit",
      "group": "Hand-drawn sprites",
      "groupId": "hand-drawn-sprites",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/forest-spirit.json",
      "commands": [
        "curl -LO https://raw.githubusercontent.com/skulitom/Pixelbolt/v0.11.0/examples/forest-spirit.json",
        "npx -y pixelbolt@0.11.0 render forest-spirit.json --out forest-spirit"
      ],
      "alt": "A hand-drawn forest spirit: idle, bob and blink.",
      "description": "A hand-drawn forest spirit: idle, bob and blink.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=3VbbbuIwEP2Xs6_TVS6UQr6BP6h4cDKGWEziKE6XIpR_X9mJ04Ja7UtVqWshwRz7zMyxx2Ou-KN7Z2yLIiW0qtEocLC9dsOD60xvBhDOhocaRbYi1Noc62H63SnRw6BRXMEo8CtbPa5WWxDEW09Z-bhhEHbeqrZ6rRIQam-Vay63FQinwEvyTX4AofOW3pTJVoPgwtwm58c098yjtw8ZV9scI8FdmtKK89Eb65yY9ojiGb_nwTx9gyLEO-E3KMyzvF_FO-YFmYkssiDRF4dxt6qu48rJl9TTCNgnkEdO4ROwT6Gu87SukwjNvqSW9-7nwbfZLwJi9sK3sqe9WATtR8KhV412KJ6vsSR8QYDAL70aQrVkq4Qg6qL7m3WuVmzPINhuwq0_VC1iOucP9RXFE-GCIksJZxRpEkoiI1RWbO89YNyPtDgsLV8QGMmdUzeopkMsBBRvZRDCrAIpH_c37noT0njTkX67jof0K4QcxKq7E8m-XUn2FUpKMe3p9kySn6KE5uW9roZpZhNm0ixksL5PoMZCEdPOSW8nSk54zaasL9lkR9rpI5qP8Z6Xf8i7qxol8l-Uv9PDIHc3ef2DOtKeoFrThNTDG2ZYwku6tN7YcueOFe97vC3Rnk903g_fvEtb_tvRnsDGV23YOnSmPXa2PfqHdYrwkYcYO5h7glgv-6DE6dG_yLXWgydWVl4aL2vt_yQwh6c5JbhKeZHpOP4F",
      "playgroundCharacters": 788,
      "playgroundReason": null,
      "images": [
        {
          "animation": "idle",
          "path": "gifs/forest-spirit--idle.gif",
          "still": "gifs/forest-spirit--idle-still.png",
          "scale": 4,
          "width": 96,
          "height": 96,
          "frames": 7,
          "durationMs": 1220,
          "plays": "loop",
          "colors": 6,
          "delaysMs": [
            240,
            140,
            220,
            100,
            220,
            140,
            160
          ],
          "bytes": 2419
        },
        {
          "animation": "bob",
          "path": "gifs/forest-spirit--bob.gif",
          "still": "gifs/forest-spirit--bob-still.png",
          "scale": 4,
          "width": 96,
          "height": 96,
          "frames": 4,
          "durationMs": 740,
          "plays": "loop",
          "colors": 6,
          "delaysMs": [
            240,
            140,
            220,
            140
          ],
          "bytes": 1853
        },
        {
          "animation": "blink",
          "path": "gifs/forest-spirit--blink.gif",
          "still": "gifs/forest-spirit--blink-still.png",
          "scale": 4,
          "width": 96,
          "height": 96,
          "frames": 3,
          "durationMs": 1380,
          "plays": "one-shot, looped here",
          "colors": 6,
          "delaysMs": [
            240,
            100,
            1040
          ],
          "bytes": 1420
        }
      ],
      "size": "24x24",
      "frames": 6,
      "colors": 7,
      "animations": {
        "idle": {
          "frames": 7,
          "durationMs": 1220,
          "plays": "loop"
        },
        "bob": {
          "frames": 4,
          "durationMs": 740,
          "plays": "loop"
        },
        "blink": {
          "frames": 3,
          "durationMs": 580,
          "plays": "one-shot"
        }
      },
      "plays": "loops and one-shots",
      "shownAnimations": [
        "idle",
        "bob",
        "blink"
      ],
      "alsoAnimations": [],
      "gifPaths": [
        "gifs/forest-spirit--idle.gif",
        "gifs/forest-spirit--bob.gif",
        "gifs/forest-spirit--blink.gif"
      ]
    },
    {
      "name": "ground",
      "kind": "autotile",
      "file": "examples/ground.autotile.json",
      "for": "Side-view platformer ground with slopes, stones and collision boxes, on its test map.",
      "title": "Ground",
      "group": "Tile sets",
      "groupId": "tile-sets",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/ground.autotile.json",
      "commands": [
        "curl -LO https://raw.githubusercontent.com/skulitom/Pixelbolt/v0.11.0/examples/ground.autotile.json",
        "npx -y pixelbolt@0.11.0 autotile ground.autotile.json --out ground.json --preview ground-map.png",
        "npx -y pixelbolt@0.11.0 render ground.json --out ground"
      ],
      "alt": "Side-view platformer ground with slopes, stones and collision boxes, on its test map.",
      "description": "Side-view platformer ground with slopes, stones and collision boxes, on its test map.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=fZTLcqMwEEX_5c5WdvEwfugHvKWSymrKCwGNwxiQCgknGZf-faoFju1MKgsWrT79Ul9xQa2HTjlImOad2loPR1qo0WnXtASBMw220T1kLNCrjiBxHPTYVxAIiIzXAka15BxBXnCCxK9Yxat4C4E9W7uiKjNOdmQrI7VdJRCo2EqLjUrXECjYUtEmWikIjGxtyiwOvpcQV6Qq2UHAsLVV22jDFfLgq7Ntxjmf2FqppE7Yeg7Vy7KmNbyA_egK3Vru0jrdE-RvLI1Zck5jck6W5zkOAoaKog1-k-PgBRwNg2r6EEpUQSYCddO2fFDqVg-QGCFgDZWnEHk7f4GA6vTYO8hoyddlm78EufLiBhWP0JVJ75n8gYnSK5R4bpGqI4XZ1NRWRca9hr0Vqq8sD3MKd8lwf0ekAn8a52iAjL7A-7A0XtVBwI21s58DB-Y4M3v231rLMu8F3ph9SFeE2vaudvJ_d98Wegq75e-hUOq50KRHnrTpex4j9oJj22aSrhtGEqiHe_kuLp2yJ7-4nNXQqN55Xl6rzXSFX9ng8ayhGbdhw_ODYMG-UXN8dfPC5vPi_vxBQ1fpTFra8RSfUUGa9i40_iE03vAFaDP1o02IV53BVe3XhBB4h4wjgQ_IZM31vqdn6U_4LuDp2h88v4qBzg3Nay1P839A4jk8rlciNy9t7HrLPwbv_wE",
      "playgroundCharacters": 755,
      "playgroundReason": null,
      "images": [
        {
          "animation": "test map",
          "path": "gifs/ground.png",
          "width": 772,
          "height": 612,
          "scale": 1,
          "plays": "still",
          "bytes": 16204
        }
      ],
      "size": "16x16",
      "frames": 151,
      "colors": 10,
      "animations": {},
      "plays": "still",
      "shownAnimations": [],
      "alsoAnimations": [],
      "factsNote": "Tile size and tile-frame count; preview shows the static test map.",
      "gifPaths": []
    },
    {
      "name": "meadow",
      "kind": "autotile",
      "file": "examples/meadow.autotile.json",
      "for": "A top-down meadow over dirt with rare flowers, on its test map.",
      "title": "Meadow",
      "group": "Tile sets",
      "groupId": "tile-sets",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/meadow.autotile.json",
      "commands": [
        "curl -LO https://raw.githubusercontent.com/skulitom/Pixelbolt/v0.11.0/examples/meadow.autotile.json",
        "npx -y pixelbolt@0.11.0 autotile meadow.autotile.json --out meadow.json --preview meadow-map.png",
        "npx -y pixelbolt@0.11.0 render meadow.json --out meadow"
      ],
      "alt": "A top-down meadow over dirt with rare flowers, on its test map.",
      "description": "A top-down meadow over dirt with rare flowers, on its test map.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=jVTLjuIwEPyX2qtB5AHM-DwSl_mDEQcTd4KXJI5iByaD_O-rdmAIq93V3lLtKvernCtK2zfKQ6Izn1SXtq9ooQZvvakJAmfqnbEtZCLQqoYg0ZDS9gKBSJHJRqBTNXlPkFecIPEjofSQphB4Y5TqXKUFBDSjrNgcsjUEKkZ5-aKyEgI7RputyvMtBN4ZvZTFdq0gMDIqV3q7YXSJKC8T4gwuZlgl-apYv0JgYLxV63WWIwi4sTnY2nFlWhk3Qn5geVnyNSP3wN97gcPgPfXF0PH5yMfLEfsg4KnvlWlZ74g0ZC5QmrrmQGFr20Oi4jI6Kk48jo9HXENANXZoPeRqmaYCznwR5DqIB2n3ROJhTqR8Tnp_Iq2yOykNXCPpimKHaqpLU-ePkKnAT8NtxeXdUgscVKsdt3mKG-ELYntP8R0PxQ-ld9-NxrPqfvaoJg8hbuE7b_Zbjjfm28E7o3k-cNizpLdDq2OVpm1jkUGg7OceW1wb5U5hcT2r3qjWBzbk9OnipG-OjK4gUx39bW63-GEef9rlfYXTTpMkhJms-E9Zmj3JytpeqHczcfIPcbblIdhuasR2kHBeNR3unmUDRccKfEK-xleQRuv8mfywcBQkL1GR5X9XzK5PpvuzsA97ga6ns6HL5IriVN1WhSG-qCORv7liaFrHf4AQfgE",
      "playgroundCharacters": 739,
      "playgroundReason": null,
      "images": [
        {
          "animation": "test map",
          "path": "gifs/meadow.png",
          "width": 644,
          "height": 452,
          "scale": 1,
          "plays": "still",
          "bytes": 11409
        }
      ],
      "size": "16x16",
      "frames": 188,
      "colors": 9,
      "animations": {},
      "plays": "still",
      "shownAnimations": [],
      "alsoAnimations": [],
      "factsNote": "Tile size and tile-frame count; preview shows the static test map.",
      "gifPaths": []
    },
    {
      "name": "shore",
      "kind": "autotile",
      "file": "examples/shore.autotile.json",
      "for": "A layered shore of water, sand and grass, on its test map.",
      "title": "Shore",
      "group": "Tile sets",
      "groupId": "tile-sets",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/shore.autotile.json",
      "commands": [
        "curl -LO https://raw.githubusercontent.com/skulitom/Pixelbolt/v0.11.0/examples/shore.autotile.json",
        "npx -y pixelbolt@0.11.0 autotile shore.autotile.json --out shore.json --preview shore-map.png",
        "npx -y pixelbolt@0.11.0 render shore.json --out shore"
      ],
      "alt": "A layered shore of water, sand and grass, on its test map.",
      "description": "A layered shore of water, sand and grass, on its test map.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=zVXLcuIwEPyXzlWh8ANjdE4Vl9w45JDiIKwHXoxNSSKEpfzvWyMHY2-S2uWWm4aZ0fR0t8wFurF74cFxKN9VpRtr1KM4-saXlQLDm7KubGrwiKEWewUOt20spUIFjzKGg6iU9wr8gh04HiIVb-IYDE8UxTIVcQEGSVFSZJtkBgZDUapzkWgwLCnK5iJN52B4pijXxXwmwLAKkchkmoPBUSQXm8WccoT8oUgXOqN5Z4pUIZMF5V7C9Hy2yCk6hUhnQkxprzBdLKZFCgYdbtEq1zFaBnfeb5rK0T5VWZ3BXzEx5mQmBHu5PBlDB2OMpoOkkwTDREopJ1gzuK2qqtCmqUdrWnG1WlFOitKdB7kz5ei8bhm0HXD8eCkaWyvrWjBU4qysA3-9XHU4Ca8sGHaK1j4RGcpaUdaE2yklwWcMuiQkFxRN1diPOndQxY7Ee739_gIGsW-OtQefTmIGV_5W4HnLbjVvo5ppei2K23XbMpxUabYePGV4E7YUtR_h3WBUMgB7xdiBjqK2pakfbcV_tsXJqC0Id-uMGJpDB6c5EMFe7A-4Sn2rfwfPgo9m7bpdM1q9KrsX4O1RDQY4UcueffcV-_ln9t037PsRs1HP7GxI_3lMf3ajf1C0Ghf1QkYt-UtJo4KvRYdLqoPfgscMv0pPdiKiuoaMYSNqSZzBk3Gbo3elJNzQ4QUF0W1zrCV4wlDWNV0Q_zQndI_xDitcG3ovzMkLgxuNFc712puvtE8_a2--0V6OX178pfbLsUF67dNh0fNY-2T4Pu_SfjbQfhe-3HRBWG_0-5J84Y_au37RkDPX3A1NSmZxg7nJXzOeRn6Kez9FP81P9AEvlbvHUd03PzgqCY5K6L5_1kbTULwI9uv-VpT_YPq4rx2l2j8",
      "playgroundCharacters": 955,
      "playgroundReason": null,
      "images": [
        {
          "animation": "test map",
          "path": "gifs/shore.png",
          "width": 708,
          "height": 676,
          "scale": 1,
          "plays": "still",
          "bytes": 23356
        }
      ],
      "size": "16x16",
      "frames": 90,
      "colors": 14,
      "animations": {},
      "plays": "still",
      "shownAnimations": [],
      "alsoAnimations": [],
      "factsNote": "Tile size and tile-frame count; preview shows the static test map.",
      "gifPaths": []
    },
    {
      "name": "forest-spirit-lit",
      "kind": "scene",
      "file": "examples/forest-spirit-lit.scene.json",
      "for": "A forest spirit lit through its normal pass.",
      "title": "Forest Spirit Lit",
      "group": "Scenes",
      "groupId": "scenes",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/examples/forest-spirit-lit.scene.json",
      "commands": [
        "curl -LO https://raw.githubusercontent.com/skulitom/Pixelbolt/v0.11.0/examples/forest-spirit-lit.scene.json",
        "curl -LO https://raw.githubusercontent.com/skulitom/Pixelbolt/v0.11.0/examples/forest-spirit.json",
        "curl -LO https://raw.githubusercontent.com/skulitom/Pixelbolt/v0.11.0/examples/forest-spirit-normal.json",
        "npx -y pixelbolt@0.11.0 scene forest-spirit-lit.scene.json --out forest-spirit-lit",
        "npx -y pixelbolt@0.11.0 sequence forest-spirit-lit.scene.json --out forest-spirit-lit/frames --fps 25 --size 72x40 --scale 1"
      ],
      "alt": "A forest spirit lit through its normal pass.",
      "description": "A forest spirit lit through its normal pass.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=7VnrcqM6DH4X7V8ng82dZ-gbdPLDYBM8dYBgenLp5N3PyIaEsMlud063c7obTztB-iRZMh8gzBuUTbfhPWTQqr3UZdOt5cIUspZA4B_ZGdXUkFECNd9IyNBcmn5hWtWpfqFVDwR2SvQVZDEjUEm1rnrIAo-AeO1479yZ5xHIefGy7prXWkAG32hAOeNAgBsjewPZG7igeNTJQrUSj36WwmV6Flymx-OWa9n3NoidkAVhEKRAQKMUszxMBBB4QqlIZcQ9IFChlEciTwsg8GL9PD_xSyDQoiST3EtxbYzFEl-E1EfPNcolE0Xqw4mAOWzyRtuyNo0xWtVryJ5hOQwh3C-QUSWetLioLC701Eo8CXHWDI5C67NmjCXsmFlV1WjpYunKDau7o0LNi_2zuruqtkW3ttWjaoilKz0NPwxxnf25gDF7La7LdmtxLmh1IlB2fCMNZM9vIyWQEDBlHEMCan6Q3ZWdqbhodkCgaZ2-wZMqtVatwZO6hywmcICMUQI7yKhnKcEIFI1uOowAp9WJnAPmjTiA9fBmQU3PNy2MRIDsQgM7TWCd_NPqKlynbBqTK-fT61jQjyik1A2fnRH26ZWwj6gk16p-uT4n3lephAzmnSx6hyQWocxmEM0TqODsolU9JJ06F5_AnrmsD8zJo9vLLTecY-rn3_SbsYZr_UfQ38i-17MrOfpCd6QVAV6rjU3dPsOU0PZJer71jrfc4Y41Xu_j1TLKwxkd1gNv3nmT_zzQioBQyFq7dNCqet029RofrG6GWxHGua24IqAbLLvk2sgTPpErKW1zUTT6dYNlRdgkCGEfzZSAKTgWSdG4xq5Iv6cBWQym7-lDKPYIIeNCYqkMpcTLSyv5KHExYAFKgZd4VgqdZeKV2IdEtkcpByx2MUNmpcRZBg5LXcwB26LkU5_mGGXnLKmTpO2C5IBx26BRzA05bPseOUhHF6WQVtq7KNJJhYtisV94Tl-xdN0p4QJ7I4u7ZmemzdN8XJqo_wBt5T1oG0fie8jac7-44XUMd7tdOEEmAY80TsXyJrTkQSp3N9PYbuMknYKXNLYxQmkq5RzicRyHIWJiBqFTiOPiNkI8CAILRVE061GPR0oR8X2_KOZzUcQmyGQ1jpQyNkGmq3FkjLELMl2NI9vv2a3lXS6Phfu_Ac3HBIoTO9IbEGV2-O8J-J6O7fMY_aDtkMMfS9sfQL-F0Xda9w-m9IO3Qw5_I29_AP0WSt95h3tQevmg9HfQfPw_KX37VfnRd7jJHmT_en3HvT2Tx9uhGw-6f5W3w7989wzNVW16XhfXuz_nL3b2k9-VoofsmQUkmS4dZG7hcD017qfZqd6Ab3Il6x4yb-mH-FmxFsZuX1ojN6MNSANCvdVlNw63pDsu1CuaJ5cd1G9lWTIR4T7q6V8",
      "playgroundCharacters": 1471,
      "playgroundReason": null,
      "images": [
        {
          "animation": "scene",
          "path": "gifs/forest-spirit-lit.gif",
          "still": "gifs/forest-spirit-lit-still.png",
          "width": 144,
          "height": 80,
          "frames": 30,
          "durationMs": 1200,
          "plays": "loop",
          "colors": 16,
          "delaysMs": [
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40,
            40
          ],
          "bytes": 2064
        }
      ],
      "size": "72x40",
      "frames": 30,
      "plays": "loop",
      "colors": 16,
      "animations": {
        "scene": {
          "frames": 30,
          "durationMs": 1200,
          "plays": "loop"
        }
      },
      "shownAnimations": [
        "scene"
      ],
      "alsoAnimations": [],
      "factsNote": "Scene size; frame and colour counts describe the displayed GIF.",
      "gifPaths": [
        "gifs/forest-spirit-lit.gif"
      ]
    },
    {
      "name": "room",
      "title": "Diorama room",
      "kind": "scene",
      "file": "showcase/diorama/art/room.scene.json",
      "copyGif": "docs/images/diorama/room.gif",
      "copyStill": "docs/images/diorama/room.png",
      "for": "A dungeon diorama with a waterfall, torches and a hero breaking a pot.",
      "group": "Scenes",
      "groupId": "scenes",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/showcase/diorama/art/room.scene.json",
      "commands": [
        "git clone --depth 1 --branch v0.11.0 https://github.com/skulitom/Pixelbolt.git",
        "cd Pixelbolt",
        "node bin/pixelbolt.js scene showcase/diorama/art/room.scene.json --out room",
        "node bin/pixelbolt.js sequence showcase/diorama/art/room.scene.json --out room/frames --fps 25 --size 160x128 --scale 1"
      ],
      "alt": "A dungeon diorama with a waterfall, torches and a hero breaking a pot.",
      "description": "A dungeon diorama with a waterfall, torches and a hero breaking a pot.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=7V1Lc-M4Dv4vnOMqKlEPv-5JDuNDVw7t6krlIEv0Y6VYDi3Hcboyv30LIClSD9uyk2y6p6XZbYsUCXwA-AIlIj_JLOOPYU5GZL18Yeks43N2tYnYihGLPDO-WWYrMqIW2S3jfEFGtOdYZMGW80VORtQdWCTe8jDHUq7vOBaZhlEy59l2FZMR-cuJnRntEYtEW7Yho59kk_NlwqCu47xZJNxsWI4PeJY9wq_JdBU-MjISjzQE3zcgUNci6zBlec6gNgWmbj9w-iGxiFtKJSVAf0OK9mno-sQiGyzZcwfujFgE9PGXF3qh7xCLbCEV9APPj0EpkOqHfbfnAiZIDWfDfj8iFpkhFebOvIBYZI5UIi_2PWKRBaT8gT9AKhyfzdyeOyQWeYJUb-r1PUossobUYBZQH1KPWDLwYheorBCLG0QuUMkQizdwPJBvihJFnhcA6qgkOxrDY_1eCM8YchhMexFIew2puMeiGTx7QZyBO6TwbC84-D0X5HuFVOj1HQ-432I9GsYBPEvx2TB0BsBvDCnmxXE0JRa5wZTbFzh_QGo2jYYBNLIJpmYzLwJ93iGy0I29kLxZZLN_nGYpto8oXJPRPdmJa5uI3wQsIq6t-pVZXGZxkbWtXGC83W6r6ME_ouLWpAdZXGbxIkvRSOQPsYidlC4b2tuudEGppIwLs8qwElHRxCUrmrgwq4zrMK2dIacCYcj54bjqFWvKebBIxMMoYfFhmyaKpmFTxS45YdPVTv0qm66yZ_Vb2HT1rH7fa1MD11HdFbgK3Wlc2qYFrrNsaurrw3G1s-kuzBkHi0bySuQPjEdwUZlPo0hlGdehLFcm3KOlyvSNUgaIJovmpQul3ZQuzIqnxhWLLBOXzDJRGVm0ntVQqp5VyHNWxXa4Stchi87SLONXDth0Li-Y2T7utuBBj_KYGbkznbs4j4db47HQt7M2iBf6dtbMw2uvq9n5upryZZRIe3C4RAm-mM_VrbhkPb6Yi1sjVxTWuc08qvaQ3GRhvuA6V5IAupIwrxMu81jNwogJOfI838D_Yd2lb1Xng1zIyzd5-VY1U1h2yQvasLw0Dyp5QFXJQ92aPERmXr49zSNKl7NZTY5m8Ebu3_ICHrb4zyTcxKMqRzP4Zh6SRXKYB9p8cxUCExuNZ8v2wqEJcT5fcKzDiwspQD63-VymoB78a5CcAklFEOhBjfmC68bDBd3FnNuaRQlWpGGJwvMFNynAHVa3ZZ6Uap2GqwTrKjMm-9fXfaJMqwtd4ULEtsWcYCey0OtezBH7REBLlLqyFbgz98RObdsew_J3PE7tFLWQ2kkChTbJNk0VdyQzHo8F73EiBtyxgMC302nKCgTCUMn2OUm2OPk-b5NnJBll0x1DjabjdJwC0bGd2niTpvbYVjl4k5YtrQlccYEdaMBjoDDGcmM7FUIUOXBrkHizyIyHjyj9T-Wg4bx_Bd6D9gbpwKl5ZpH0yWJY22drQSMDfydfpuwxXENjXqImBtYAFJPthJrFNZlMJmb7neD1_bv4VZk3cH37hj8iczIpZ04mkHlzY2be3OjMb3i1yTSuicFIZSEjBUllmuBlqQI8SilLlYynRKz0XX2BddnjOgeP7R8wPpsz8MF_gvf1k_BtKm1W-FT3xeyu5y49G-s5ExZ26G5DHc-i8N_Dm_WT7BaMy1aLWlbIsPFrLmrO0jMLNMRFuIoYGTm210DKticfRwr_nbyP1MQgVUOlJjM95Ty8QUf5VlZ8zh7XaZgXHYZYJNzmmWjwZJpm4Co_hnkEWwXfvpMPQDBpRoB1Iuxuyg0rGdm16EMd3GHl_lPFo6ZFPXk9WCSbzTYsJ6N7B9oPwPtORqttmr4BZRwG4mW-QMW8kNEAdx98DzdZcM-HjDwHhrA0g-2TFQw3bLVZQpO_d-yh5TxYJF5yFokRiPAwXoYweK3DPGccsp7DdAu7DpsoBMECi2wYOKGeRbJn8F3InDSiGVKEAzteOzLyBBzX_yo4gdBObyi04yAcOvgqOKCIPRnRAOG4Qjv0y7RDqSesJRoPlXi-pvEolpnJ0rG94AhpV5EeFKRXmjRnO77MobgerwaqRs8yOrwcTe5RXlx4c7ZOwwi7MOyp4oxulMsayq1kuYcCwCYPH2HwED0exge1fBTqD1D7wfBkhams4IreFXgna0Sihj_ECv2gLYuBaBHe6QqSA3WEFO6RGmJ9KQD1xXB1qvRVrMg7QuR-K_IDKe_gCHxckwow9KQBxOJUDG1iLAncw6XlAtWE4h6BYhaXWPpHqMtVrTHqeydLX6mu7jm1Goswxr60CNcwebE0Xa43Eo4rRwZXjAwURwa_XV1K6eWVRfvw-qKqc05VORP2LqhKBybb4VlVXQG5Ry_h676HsRQ4uKSuMJHXO7-ubBr9S0zk-bJ_XgBZtqqL-KpR6hLGfaHmoWjNg3OqBv7lVSVg7wJpe32T7Xn9byj49soNEue0khdLT3qxsfRiWefFdl5s58V2XmznxXZebOfFdl5s58V2XmznxXZebOfFdl7sF3ux7kkvlkkvNuq82M6L7bzYzovtvNjOi-282M6L7bzYzovtvNjOi-282M6L_WIv1mv9RXHnxXZebOfFdl5s58V2XmznxXZebOfFdl5s58V2XmznxXZe7P_bi4WF7mr5iF4rhq6RYTF-6pOzxolZ_dWxfnOrvN-HtzeL8PAR_dp7kmDYIghWBCGKIDARhCMC7g_WPZnhRAsoIMUxrBAEE4LUI4YOgoBBkJpieCALP2RmGAAIcl8w3A8E-YHQPpCTYiAfuLvBsD2w-n_AE8BhKoLyNARrEs-KaE0DHatp0EVq-vdGaqofCoeGcJVWToUPnco2zZwvUctyWyaJIxZHMcBMopjB_-AW81iMuXgfiagmMSSwAD5X1eIoYlhAZKuVZhkYrQGbcQhBZgLPebjaCA_73rFccGk5xKHK-ZbVKbpnU_RPUPTOptg7SrF6SP-UOaQ1MH6PUCbcSmXDrSjARAG4x1xpLlkNrCHLCgoN5qieu6iKys82R_UbmDYUj5ujuh_ZhmLFHLWpQdixPDcYtjWaqtHGisahxuIr3kCBawpcU-Cawq88w6w5NsvGGUY8M0ISGuEAuznmXzzHhKtoARsf9wOLQseqzznTkHMGjappUAPXUawUjdcARiCwV7xk3Jf9fq9uX17k7R6ei8AwL1DgBW9vX_f719tq7gsEmnkxwmrZlWFvneWHcYqVJSxly0AR5zpJkjUyeVqv1094BzdPKk_c2cnT05OMKwRVGwBcTTkLxZb1e4EkCkiigSQaSNIKCD0JxDOWCvbathUDWwNRefb6qUnpV5tFyOPNqTZicsK3IckT7kwnTxADSHCDHzsROn6yReiedYXjlq9OCTVsVC5LkgSnzSSK5bSaQAcSd7dwFaHdpgLNdDo9ouaIh7jDd1TsgaFfHfzqYNcobl_wEr3kZb9_Eb1kD31nX81VdCumWaZpyE_h82pdV2hr-7zb7Z5FRMNnjIooAx4-w1UKWCgCOW3yfLt9931iKgkifamoigeEjBZsc6Tb-83tQY1Pe63vvbgUr1uF4WW_v9VDkDEcaQNpmg3YrrI1O9JgjwM0GZqKuf2R_LhNbuugzgQYruKUHem5coygZs_9Ubz-s3_YMubWRN0U0bjGGnOF6TRcrdiRZhk0dxsgd3d3dydubm_vqjl31Zzixk7EjW3bdypiW4OxwuURO_XrdhLdRA6NR-7tbZVXnvFoUY3uRQ94Di_4vqCskiL-2evtq2D0osYpW74uaCQRVAwJVX5MhBlvftw046RfjFM2swLn5ABO92txqn5xUp_eL2J3wNesz1kWPlabp3sYptjdhzd4BZNrdm2z62smboAPu47Z9XV8Df-wayZQM-N_tekVUdB3oAAIEgH8ChQIQ_2DKFgZRxMK9z26YNcaA0MUQhVSHfE1rCEqIASKmnNbLOzK3ml54Vle_RkLtAeLpBngnYXphr1Z5gRVoqcmVeN5rS625XI1PazpgUN3TdX40cXOwseKg62aXGF1qfhf1Z9eMJ4dcKfxkfamXcOb9jtv-g_wpnsWdRu96WWcssrAin_iYZ0tV-KPNswYfn6DFKof4OlRRr4gNUd14aDAlADrHlutgOQSKB2nYumjnz4bS_pbtaDf4jK8aSLxGvzW3M7lAj6x66tLFJZ-lLDexwr7MSLG2W7VNFH-tvZUPJOG-RiFbZiPLxOWfr2wJy3bMO3_npa1EyWs2FRpEtb7QyzLYSr-kk57l44T9VSVe97tZN72-VbdbQ-t5pultcXfWMBttKq3LaT9il77KdLaSS5pNe7ICWm_ott-lm1Pt-Sv6LdfYdswTxretTaLapFpCt-ZjO6H1uB3NHO9nlO10VjuN4ylzlK5tVUdAUBv5f7ff7fe6lvHn643v6Y3GPmqQ1-93rD6gioZjxs0VBkzen-eiswdV9WysEWNm_ciYHlf9uEL70au_EE7sLQol9Jr5mI9Way1xDoE6nHhMJsV9cStJzU94KvBECqHeR5GlT0SNXyo7qCMrqhWNjh-zU0H-Hou2x3YdpAPmz4U87pthz9g28HHI0EN343B8FUZqPR3l8XHoZ4-B5EQ0eN_xS6QhpvFoR6Az5q_Y-l23v6ELuBaw8YugC2jsnzsHd7FFzNpaXF6fX1tHuwcY1Kd8sRUkRgbCUx9WKJE2mRqwCmAlhc5QgP0ozQwHpsakKkiYcAUqQ9KlEibTEtwDA3UTnoxHm6Y-HbwyFGvabhn3CUNCnQ_RYHjiixlKcvyvydRIl1l-j4F9pv1V1s2FuO3XprpzqkbqdL277Isg_drB5dl4usoOSt5xvsgt5uV_sWzkvG3lvHPAD6t8S_d4Rtb1NsDCgoN-QGFvCf86cAfhJtu-aa6axlUR5_aObzyYU965Dhg-5LxJ5RUZ0zF1wr0yHnL9jRrEpU-QkJ10gvVKWH2TjP3Wyupvej91uoMTuKscG-hzkL2ujrdC9UpBTpyLFeVdM9VZwvRB-eq8wjO9iaqqDNoUKd3oTqlQP5p5uJQIz1yBDlubSJZ0nVO0pyW-0YLdQ5bq7OvZK-r079QncPW6hSiu07rNtdCnfQkTaVO7wNN1EKdwWXqVMyPRBEIzRPVLv1IbXonaVa0eXr8aGGhWsesa7P3Pm2ebpz91tocttam31qbbtvJzXVP0qz1y7o2-xdqk7bVZu9cbbZoR61par3XJR9cKLl77uDRwpStm5wbHBZoeKFAXmuYxSTY4KwihrKzqhfieg2plz965taTjh4vdV_X7VTbTQn8G7i8bxZZrjY5BLYpeSk8y4BPuMEgUkVS6dSMqpXjqbNe9dzqxqhepFVZq4hBByGzurhz58Sd07HmvpcDjlXChX03w5eZlpPHYi2yyTPjPG-tSEpUWDOIG4bus7j5piKJVb6uNiyuDqKWiMoi2Agcy_Uf9H6v6Jek9ol9ymb5CbLi-2VJN3At12tBV7yVPIMwdQanKMPXwlfFuztFucgQ5YuXOKEIzubUScrXnri3pjqn_hgZX2YrMvJNIiOjK9p0YKwqnsKgCwAKr2d5jTg2Gc9xLzTbrmJyOQPq-udyKI6rHuKgCwAH17H84FMZUCtoaLDHdJQ1NbBCQVnRCLyzsavzioeIF89R-b5j9YafAx1on4ldnPo8RFs-VbSDhh73Ibg9z_LPM-eZ7cXrWYPzFNMavN-zBr1PbC-u_2nQKe2fjV0cbTw4YhcyFEcgkdPQsahz3pCjOB2Ycw4w6vXOZnRmU-oNrAE9TxJ57OegCOq5nIpbCQAxD5-2DCcjCG-6FC9Fcr5M2H8GjlOZPY0jR-WjcyGfs_yqfZNx-la_RXM8Cm9YRafPX5XAyTlWwVJJo2LRDLGReS2h5Tz8L4vyjO8NcI7qzz5QARQl0GUm4NIcFrACUn42VSP5n37NTPjxV_31qLmAUekjC5bFMo7h7Jl4mdhm-SK-vXs7arV-FayAUhfLxVdNi2XMVDAZUx712s5YkckMVK-c2MsinNOWhG9ZRxUMj6BSp5QPd1H5HCeTwKKOe3TxeRY9Sj-YYD-wKB18HL0hPUmvOH1-eBBVBWQnGzYsgqBbqbMTy4yHjyF5-x8",
      "playgroundCharacters": 6159,
      "playgroundReason": null,
      "images": [
        {
          "animation": "scene",
          "path": "gifs/room.gif",
          "still": "gifs/room-still.png",
          "width": 480,
          "height": 384,
          "frames": 48,
          "durationMs": 2400,
          "plays": "loop",
          "colors": 31,
          "delaysMs": [
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50
          ],
          "bytes": 113058
        }
      ],
      "size": "160x128",
      "frames": 48,
      "plays": "loop",
      "colors": 31,
      "animations": {
        "scene": {
          "frames": 48,
          "durationMs": 2400,
          "plays": "loop"
        }
      },
      "shownAnimations": [
        "scene"
      ],
      "alsoAnimations": [],
      "factsNote": "Scene size; frame and colour counts describe the displayed GIF.",
      "gifPaths": [
        "gifs/room.gif"
      ]
    },
    {
      "name": "room-night",
      "title": "Diorama by torchlight",
      "kind": "scene",
      "file": "showcase/diorama/art/room-night.scene.json",
      "copyGif": "docs/images/diorama/room-night.gif",
      "copyStill": "docs/images/diorama/room-night.png",
      "for": "Torches and candles flicker; the room flashes when the hero breaks a pot.",
      "group": "Scenes",
      "groupId": "scenes",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/showcase/diorama/art/room-night.scene.json",
      "commands": [
        "git clone --depth 1 --branch v0.11.0 https://github.com/skulitom/Pixelbolt.git",
        "cd Pixelbolt",
        "node bin/pixelbolt.js scene showcase/diorama/art/room-night.scene.json --out room-night",
        "node bin/pixelbolt.js sequence showcase/diorama/art/room-night.scene.json --out room-night/frames --fps 25 --size 160x128 --scale 1"
      ],
      "alt": "Torches and candles flicker; the room flashes when the hero breaks a pot.",
      "description": "Torches and candles flicker; the room flashes when the hero breaks a pot.",
      "altSource": "description",
      "playground": "https://skulitom.github.io/Pixelbolt/playground/#v=0.11.0&r=7V1bc-I80v4v2ss1Lh_BcJ_kYrmYysWkplK5MLY4fDaYyCaEmcr-9q-6JVnyATAk2cy8Y7-7gyRL3Y-6dWpZ6vwi84ytw4JMyHb1StN5xhZ0kEd0Q4lBXijLV9mGTGyD7FdxsSQTe2gZZElXi2VBJrYTGCTesbDAXI5nWQaZhVGyYNluE5MJ-ZcVW3N7SAwS7WhOJr9IXrBVQqGsZb0ZJMxzWuALlmVr-NWZbsI1JRP-SkHwPA2C7RhkG6a0KCiUtoGpM_KtUUgM4lRiSQXQfyBmj-zQ8YhBcsw5dAJnTgwC8viXG7qhZxGD7CDmj3zXi0EoEBuFI2foACaIjefj0SgiBpkjFerMXZ8YZIFUIjf2XGKQJcS8wAuQCsN3c2fojIlBniE2nLkj1yYG2UIsmPu2B7E15vTd2AEqG8Ti-JEDVDLE4gaWC_WbYY0i1_UBdVSpOyrDpaNhCO8ocghmwwhqewOxeEijObx7RZy-M7bh3YFz8IYO1O8nxEJ3ZLnA_Q7L2WHsw7sU341DKwB-U4hRN46jGTHILcacEcf5A2LzWTT2oZE9YGw-dyOQ5z0iC53YDcmbQfLDepal2D6icEsmj2TPn13CfxPQCH928lckMZHEeNKu9oDy9vudpAf_8II7nR4kMZHEyiRJIxE_xCBmUnlMaG_7ygO5kiouTKrCSnhBHZcoqOPCpCqu47T2Wj0lCK2eH46rWbAhnCeDRCyMEhof12kiaWo6leySMzrd7OWv1Okme5G_pU43L_L3vTrVcJ2UXYmrlJ3CpXRa4rpIp7q8PhxXN53uw4Iy0GgknkT8wHgEjy3S7SiSSdpzLMkREedkrip9LZcGok2jReXB2uaVB5PimfbEPEnHJZJ0VFqS3UxqydVMKutzUcFuuCrPMY3O0yxjAwt0uhAPzGwfFyx52Cd5zLXUuUpdXsbDafBYquC8C-KlCs7bebjdZTW_XFYztooSoQ8GD8_BlouFDPJHlGPLBQ9qqTyzSm3nUdeH4CYysyVTqYIE0BWEWZNwlcdmHkaU16Moihz-D-suFZSdD1IhrciLalA2U1h2iQfasHgUD1vwgKKChwzqPHhiUQ2e5xGlq_m8UY928Frqf8QDPEz-n064jUe9Hu3g23kIFslxHqjzfBACExOVZ4r2wqAJMbZYMizDygcpQDoz2ULEoBz8q5GcAUlJEOhBicWSqcbDON3lgpmKRQVWpGDxzIsl0ylACIubIk3UapuGmwTLSjUmh58_D4lUrco0wIWIafI5wUxEpp8HPkccEg4tkeLKNmDOPBIzNU1zCsvf6TQ1U5RCaiYJZMqTXZpK7khmOp1y3tOED7hTDoHtZrOUlgi4opLdS5LscPJ92SUvSDLKZnuKEk2n6TQFolMzNTGQpubUlCkYSKuaVgQGjGMHGvAaKEwx39RMeSXKFAhqJN4MMmfhGmv_SxpoOO8PwHpQ1qAdWA3LLBI2WQxr-2zLaWRg7xSrlK7DLTTmFUoiMAIQTLbnYubPw8PDg95-H_D5_p3_ysRbeL59wx-e-PBQTXx4gMTbWz3x9lYlfsOnS6L2PGiMZBIykpBkog5e5CrBYy1FroryZBVrfVc9oF263hZgsf0XlE8XFGzwX2B9_SJslwqdlTbVYzm7q7lLzcZqzoSFHZrbUMY1bPjv6c34RfZLykSrRSlLZNj4FRc5Z6mZBRriMtxElEws020hZZoPH0cK_314H6kHjVQDlZzM1JTz9AYd5VtV8AVdb9OwKDsMMUi4KzLe4MkszcBUXodFBFsF376TD0Dw0I4Ay0TY3aQZVlGyY9hPTXDHhfvfOh45LarJ68kg2Xye04JMHi1oPwDvO5lsdmn6BpRxGIhXxRIF80omAe4-eC5usuCeD5m4FgxhaQbbJxsYbugmX0GTf7TMsWE9GSReMRrxEYiwMF6FMHhtw6KgDJJewnQHuw55FELFfIPkFIxQ1yDZC9guZEFa0YxthAM7XnsycTkcx_sqOD6XznDMpWMhHDv4KjggiAOZ2D7Ccbh07C-Tjm27XFu88dgCz9c0Hsky01lapuufIO1I0kFJeqNIM7pnqwKyq_EqkCWGhtbhxWjyiPXFhTej2zSMsAvDnirO6Fq-rCXfRuR7KgHkRbiGwYP3eBgf5PKRi99H6fvjswVmooDDe5fvni0R8RLeGAuM_K4sAt4i3PMFBAfb4rVwTpTg60sOaMSHq3O5B7Ekb_EqjzqRD0R9gxPwcU3KwdhnFcAXp3xo42OJ7xzPLRaoOhTnBBQ9u8AyOkFdrGq1Ud89m3sgu7prNUoswxj70jLcwuRF03S1zQUcR4wMDh8ZbBwZvG5lbdu-vjBvH-6IF7UuKSpmwuEVRe1AZzu-qKjDIQ_ta_g672EsKuxfU5aryB1eXlY0jdE1KnI90T-vgCxa1VV85Sh1DeMRF_OYt-bgkqK-d31RAdi9orbDkc72sv435nyH1QaJc1rFirXPWrGxsGJpb8X2VmxvxfZWbG_F9lZsb8X2VmxvxfZWbG_F9lZsb8X2VuwXW7HOWSuWCis26q3Y3ortrdjeiu2t2N6K7a3Y3ortrdjeiu2t2N6K7a3Y3or9YivW7XyiuLdieyu2t2J7K7a3Ynsrtrdieyu2t2J7K7a3Ynsrtrdieyv2f23FwkJ3s1qj1Yqua4RbjF_q5qx2Y1adOlZfbqX1-_T2ZhAWrtGufSQJui0CZ0XgoggcE4E7IuD-ZDySOU60gAJiDN0KgTMhiK3RdRA4DILYDN0DGXiQmaIDIEh9RXc_4OQHXPtASoqOfCB0i257YPX_hDeAw5Q75Wlx1sTfld6aAuWrKeg9Nf1zPTU1L4VDQxiktVvhY6u2TbNgK5Sy2JZJ4ojGUQwwkyim8D8IYhqNMRXDEfdqEkMEM-B7WSyOIooZeLJcaVaB2Q1gcwYuyHTgBQs3ObewHy3DAZOWgR-qgu1ok6JzMUXvDEX3YorDkxTrl_TPqUNoA_33cGFCUAgbgjwD5RkgjKlCXaIYaEPk5RRa1FG_d1GvKrtYHfUzMF0onlZHfT-yC8WaOhpTA9djdW7QdKs1Va2NlY1DjsUD1kKBKQpMUWCKwu88w2wZNsvWGYa_01wSau4A-znmHzzHhJtoCRsfj4FhQ8dqzjmzkDEKjaptUAPTka8Utc8AmiOwn_gIvy-Hw0EGX19F8ADvuWOYV8jwisG7n4fDz7t66is4mnnV3GqZtWFvmxXHcfKVJSxlq0AR5zZJki0yed5ut88YgsCzTOMhM3l-fhZ-haBoC4DBjNGQb1m_F0gigSQKSKKAJJ2A2GeBuNpSwdyapmRgKiAyzdw-twl9kC9DFufn2ojOCb-GJM-4M508gw8gzg1-zITL-Nnkrnu2NY47tjlXqXGrcGmSJDhtJlEsptUEOhAP3cFTunabcTSz2eyEmCMW4g7fyWoHmnyV86ujXaMMvuLDe8nr4fDKe8kB-s6hnirp1lSzStOQncPnNroul9buZb_fv3CPhi_oFVE4PHyBp-KwkDtyyotit3t3ONGFBJ6-pFfFI5WMljQ_0e299vYgx6eDkveBP5LXncTwejjcqSFIG46UghTNFmyDbEtPNNjTAHWGumDufiQ_7pK7JqgLAYabOKUneq4YI2y95_4oP_-ZP0zhc-tBBkpvXFOFucZ0Fm429ESz9Nu7DZC7v7-_54G7u_t6yn09pQyYCQ-YpnkvPba1KCtcndDTqKkn3k3E0HgibO7qvIqMRcu6dy_7iOXwit8LqiIp_Z_9vPvJGb3KccoUnwtaSfg1RUKRHw9cjbc_bttx2l-MUzSzEufDEZzO1-KU_eKsPN3fRO-Ar12e8yxc15uncxwm392HL3glkxt6Y9KbG8oDwIfexPTmJr6Bf-gN5aip9r_G9Ioo7HegAAgCAfxyFAhD_oMoaBVHGwrnPbKgNwoDRRRcFEIc8Q2sIWogOIqGcVsu7KrWaXXhWV39aQu0J4OkGeCdh2lO3wx9gqrQk5Oq9r5RFttytZga1tTAobqmbPxoYmfhumZgyyZXal0I_ne1p5eUZUfMaXylrGlHs6a93pr-C6zpoWE7rdb0Kk5pbWDFP_GwzVYb_kcb5hSP3yCF-gE8NcqID6T6qM4NFJgSYN1jyhWQWAKl05QvfdTbF21JfycX9DtchrdNJG6L3VqYhVjAJ2ZzdYmVtT-qsu7HVvZjqhhn-03bRPnH6lPyTFrmY6xsy3x8XWXtr6_sWc22TPt_pmbNRFaWb6q0Vdb9SzTLYCr-kk57n04T-Vbme9nvRdru5U6GdsdW8-21NfnfWMBttLq1zWv7Fb32U2prJoWg1bojx2v7Fd32s3R7viV_Rb_9Ct2GRdLyrbW9qgaZpXDOZPI4NoI_Uc3NclZdR1Ox3zAVMkvF1lZ9BAC5Vfv_6N1ya24df7rcvIbcYOSrD33NcuP6B6pkOm2RUG3MGP59ItJ3XGXLwhY1bd-LgOV91YYvrRux8gfpwNKimkutmcv1ZLnW4usQKMe4wawXVBO3mtTUgC8HQygcFkUY1fZI5PAhu4NUuqRa2-D4PTcd4PRctj-y7SBeth0Uc_tth79g28HDK0Et58Zg-KoNVOrcZXk41FX3IBLCe_zv2AXSMF8e6wH4rv0cS7_z9jd0AccYt3YBbBm15ePw-C4-n0kri9Obmxv9YucUo_KWJ8bKyFSLYOzDIhXSOlMNTgm0usjhErA_SgLTqS4BESsjGkwe-6BIhbTOtAJHk0DjphdlYU752cETV71m4YEyh7QI0PkUAU5rdanWslr_90QqpOtM3yfAUbv8GsvGcvxWSzPVOVUjldL-U5Zl8H3t6LKMn44Ss5KrfQ9y-lnpHzwraX9rGf8M4PMW_9IdfrFFuT1hRaEhP2ElHwl7PvIH4WY7ltd3Lf366NO4h1e97GmfuA7YPWf8CTnlHVN-WsE-cd-yO81GjSqHkFCc9pXiFDCH55l7nYXUveqjzuL0z-Ksce8gzrLuTXE6V4pTVOjEtVyZ07lUnB2qHlwqzhM4u6uoJk6_RZzuleIUFfLOM-eXGu0TV5DjzioSOR3rLM1ZtW90EOe4szhHsu5NcXpXinPcWZy86o7Vuc11EKd9lqYUp_uBKuogTv86cUrmJ7wIhPqNasf-SGm6Z2nWpHl-_OigoUbHbEpz-D5pnm-co87SHHeWptdZmk7Xyc1xztJs9MumNEdXStPuKs3hpdLs0I4601Ryb9Y8uLLmzqWDRwdVdm5yjn-8QuMrK-R2hllOgi3GKmKoGqtqIa7WkGr5o2ZuNemo8VL1ddVOld5khf8Ak_fNIKtNXoBjm4qVwrIM-IQ5OpEqo1KmuletAm-dDev3VnOteBmXeY3SBx24zOr9zl3id075mvtedThWcxf2XXdfpmtOXIs1SF5k2n3eRpaUSLdm4DcMzWce-CY9idVOV2salxdRK0RFFmwEluF4T2q_l_dL0jhin9J5cYYsP78s6PqO4bhNugZJV0V55LnGg3-hvICJbQWXcIFTxIPym57kUibwsuXHnZA7bbPayOPnUNxzk51WHVLGj9ySjPjCSMlkYLddJKtXVWJQGQCFOzTcVhx5xgrcI812m5hcz8B2vEs5lNdYj3FQGYCDYxme_6kMbMNvacinZJS1NbZSQFnZCNyLsct7jMeIl-9R-J5lDMefAx1oX4id3wY9Rlu8lbT91t73Abhd1_AuU-eF7cUdGsFlgukM3hsawfAT24vjfRp02x5djJ1feTw6epd1KK9GIqexZdhWhyHnyFguuR6Zl44wHQ7fxfTCJjYMjMC-TJbimtDR6sj3YuruWJmcPu8oTlLgDnXFP6IUbJXQfweWVZthtStK1at2IVvQYtC9KVkjY9ShmZ6EN66jU_e1KuDE3CthyahWsGye2PjcjtAKFv4fjYqMHTRwluznHlABFBXQVSZgAh2vYA2kOGbVIPnvUUNNeFis-TlVX9jI-ImFzHIVx3BXjX987LKs4Wf13k5qbVQHy6E0q-Xgp6nlKqbS-YxeH_mZT1upiQQUr5jwq1W4pC1xW7SJyh-fQCVvNR_vouI9TjK-YVvOyeX1RfRs-4MJjnzDtoOPoze2z9Irb6sfH0RlBtHJxi2LI-hW8q7FKmPhOhxsRA9P4Xe1WUA7XmcxWtFipyLK0EVeiE5Aw_VsRaFNW6ZrAFf44OyBNUZhb8AVlLhNN8_SlJ8T1LqGZhq9lf1sgI1SHpKCk9BhvNrlZDLUPAPDF04rCtDf-CpKuOu9cJ3tBB7fIPSFwqgDR7K5j1sbzbwTQPgQ9z9A4hxHUpmXJRTHGDgalKFCAnt0GpLYGlvHkHgKyahE4p5HUpXK50HxTqhHTZ2advynit9BiQM-euQFo5sFnG2wqpqyIw8drxzyY8OuVrQ5stlWNYtj-oqxFxiE4lEUku3axkU3qDHQQcNm39vb_wM",
      "playgroundCharacters": 6479,
      "playgroundReason": null,
      "images": [
        {
          "animation": "scene",
          "path": "gifs/room-night.gif",
          "still": "gifs/room-night-still.png",
          "width": 480,
          "height": 384,
          "frames": 48,
          "durationMs": 2400,
          "plays": "loop",
          "colors": 31,
          "delaysMs": [
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50,
            50
          ],
          "bytes": 128381
        }
      ],
      "size": "160x128",
      "frames": 48,
      "plays": "loop",
      "colors": 31,
      "animations": {
        "scene": {
          "frames": 48,
          "durationMs": 2400,
          "plays": "loop"
        }
      },
      "shownAnimations": [
        "scene"
      ],
      "alsoAnimations": [],
      "factsNote": "Scene size; frame and colour counts describe the displayed GIF.",
      "gifPaths": [
        "gifs/room-night.gif"
      ]
    },
    {
      "name": "wave-scene",
      "title": "Wave scene",
      "kind": "scene",
      "file": "showcase/waves/scene.scene.json",
      "copyGif": "showcase/waves/scene.gif",
      "copyStill": "showcase/waves/scene.png",
      "for": "Paired cyan waves and a violet portal in a small game scene.",
      "group": "Scenes",
      "groupId": "scenes",
      "recipeUrl": "https://github.com/skulitom/Pixelbolt/blob/v0.11.0/showcase/waves/scene.scene.json",
      "commands": [
        "git clone --depth 1 --branch v0.11.0 https://github.com/skulitom/Pixelbolt.git",
        "cd Pixelbolt",
        "node bin/pixelbolt.js scene showcase/waves/scene.scene.json --out wave-scene",
        "node bin/pixelbolt.js sequence showcase/waves/scene.scene.json --out wave-scene/frames --fps 25 --size 240x160 --scale 1"
      ],
      "alt": "Paired cyan waves and a violet portal in a small game scene.",
      "description": "Paired cyan waves and a violet portal in a small game scene.",
      "altSource": "description",
      "playground": null,
      "playgroundCharacters": 35707,
      "playgroundReason": "35707 characters exceeds the 16384-character playground limit",
      "download": "data/recipes/wave-scene.json",
      "images": [
        {
          "animation": "scene",
          "path": "gifs/wave-scene.gif",
          "still": "gifs/wave-scene-still.png",
          "width": 720,
          "height": 480,
          "frames": 40,
          "durationMs": 2400,
          "plays": "loop",
          "colors": 283,
          "delaysMs": [
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60,
            60
          ],
          "bytes": 217932
        }
      ],
      "size": "240x160",
      "frames": 40,
      "plays": "loop",
      "colors": 283,
      "animations": {
        "scene": {
          "frames": 40,
          "durationMs": 2400,
          "plays": "loop"
        }
      },
      "shownAnimations": [
        "scene"
      ],
      "alsoAnimations": [],
      "factsNote": "Scene size; frame and colour counts describe the displayed GIF.",
      "gifPaths": [
        "gifs/wave-scene.gif"
      ]
    }
  ]
}
