{
 "format": "DemoKit04",
 "general": {
  "name": "Serpent in Paradise",
  "version": "2026/07/11",
  "authors": "TBD",
  "music": "Serpentti.mp3",
  "contentAspectRatio": "16:9",
  "borderColor": [
   0.01,
   0.05,
   0.03
  ],
  "targetFps": 60,
  "duration": 70,
  "loop": false
 },
 "paths": {
  "models": "models",
  "shaders": "shaders/serpentparadise",
  "shadersVerso": "shaders/verso",
  "textures": "textures/versodemo",
  "music": "music",
  "fonts": "fonts",
  "gui": "gui",
  "guiFonts": "gui/fonts",
  "guiIcons": "gui/icons",
  "guiStyles": "gui/styles",
  "javascript": "js",
  "particles": "particles"
 },
 "setupDialog": {
  "windowTitle": "Serpent in Paradise",
  "logo": "textures/versodemo/splash-codise-greippi.png",
  "font": "RobotoCondensed-Regular.ttf",
  "backgroundColor": [
   0,
   0,
   0
  ],
  "startButtonText": "ENTER PARADISE",
  "quitButtonText": "FLEE"
 },
 "debug": {
  "playmode": "Production",
  "debugMode": "Fullscreen",
  "font": "RobotoCondensed-Regular.ttf",
  "playbackRange": [
   0,
   70
  ]
 },
 "demoparts": [
  {
   "name": "background-clear",
   "type": "verso.clearscreen",
   "start": 0,
   "duration": 99999,
   "params": {
    "clear": {
     "color": [
      0.012,
      0.1,
      0.065
     ]
    }
   }
  },
  {
   "name": "background-paradise",
   "type": "verso.shadertoy",
   "start": 0,
   "duration": 99999,
   "priority": 1,
   "params": {
    "shader": {
     "frag": "paradise_bg.330.frag"
    },
    "channel": []
   }
  },
  {
   "name": "floating-motes",
   "type": "verso.gpuparticles",
   "start": 0,
   "duration": 99999,
   "priority": 2,
   "params": {
    "maxParticles": 2000,
    "emitterPosition": [
     0.0,
     0.5,
     -2.0
    ],
    "emitterPositionSpread": [
     8.5,
     4.5,
     3.0
    ],
    "velocity": [
     0.15,
     0.35,
     0.0
    ],
    "velocitySpread": [
     0.5,
     0.4,
     0.3
    ],
    "gravity": [
     0.0,
     0.0,
     0.0
    ],
    "lifeMin": 3.5,
    "lifeMax": 7.0,
    "sizeStart": 0.1,
    "sizeEnd": 0.01,
    "colorStart": [
     1.0,
     0.9,
     0.4,
     0.55
    ],
    "colorEnd": [
     0.15,
     0.6,
     0.5,
     0.0
    ]
   }
  },
  {
   "name": "scene1-ribbons",
   "type": "verso.group",
   "start": 0,
   "priority": 0,
   "demoparts": [
    {
     "name": "ribbon-green",
     "type": "serpentparadise.snake",
     "start": 16,
     "duration": 14,
     "priority": 3,
     "params": {
      "radius": 0.44,
      "bodyLength": 44.0,
      "speed": 7.0,
      "startX": -30.0,
      "pathDrift": 0.1,
      "pathAmpX": 5.0,
      "pathFreqX": 0.2,
      "pathPhaseX": 3.5,
      "amplitude": 2.6,
      "waveLength": 14.0,
      "pathPhaseY": 4.4,
      "baseY": 1.5,
      "baseZ": -2.8,
      "depthWobble": 0.4,
      "eyes": false,
      "pattern": false,
      "bodyColor": [
       0.3,
       0.78,
       0.32
      ],
      "bellyColor": [
       0.99,
       0.98,
       0.94
      ],
      "outlineColor": [
       0.02,
       0.09,
       0.06
      ],
      "outlineWidth": 0.0,
      "glint": 0.0,
      "pathDriftY": 0.26
     }
    },
    {
     "name": "ribbon-yellow",
     "type": "serpentparadise.snake",
     "start": 11,
     "duration": 19,
     "priority": 4,
     "params": {
      "radius": 0.3,
      "bodyLength": 48.0,
      "speed": 6.5,
      "startX": -45.0,
      "pathDrift": 0.35,
      "pathAmpX": 4.8,
      "pathFreqX": 0.25,
      "pathPhaseX": 0.0,
      "amplitude": 3.1,
      "waveLength": 11.4,
      "pathPhaseY": 0.8,
      "baseY": -0.8,
      "baseZ": 2.2,
      "depthWobble": 0.35,
      "eyes": false,
      "pattern": false,
      "bodyColor": [
       1.0,
       0.87,
       0.05
      ],
      "bellyColor": [
       0.99,
       0.96,
       0.82
      ],
      "outlineColor": [
       0.02,
       0.09,
       0.06
      ],
      "outlineWidth": 0.0,
      "glint": 0.0,
      "pathDriftY": 0.12
     }
    },
    {
     "name": "ribbon-blue",
     "type": "serpentparadise.snake",
     "start": 13.5,
     "duration": 16.5,
     "priority": 5,
     "params": {
      "radius": 0.38,
      "bodyLength": 44.0,
      "speed": 8.0,
      "startX": -48.0,
      "pathDrift": -0.32,
      "pathAmpX": 5.4,
      "pathFreqX": 0.24,
      "pathPhaseX": 1.6,
      "amplitude": 2.4,
      "waveLength": 8.0,
      "pathPhaseY": 2.6,
      "baseY": 2.2,
      "baseZ": 0.2,
      "depthWobble": 0.45,
      "eyes": false,
      "pattern": false,
      "bodyColor": [
       0.0,
       0.24,
       0.62
      ],
      "bellyColor": [
       0.85,
       0.92,
       1.0
      ],
      "outlineColor": [
       0.02,
       0.06,
       0.1
      ],
      "outlineWidth": 0.0,
      "glint": 0.0,
      "pathDriftY": -0.14
     }
    },
    {
     "name": "title",
     "type": "verso.truetype",
     "start": 1,
     "duration": 8,
     "priority": 10,
     "params": {
      "font": {
       "source": "Righteous-Regular.ttf",
       "pixelHeight": 96
      },
      "text": "SERPENT IN PARADISE",
      "style": "fillOutline",
      "weight": 0.66,
      "outlineWidth": 0.2,
      "fillColor": [
       1.0,
       0.87,
       0.05
      ],
      "outlineColor": [
       0.0,
       0.15,
       0.46
      ],
      "letterSpacing": {
       "easingType": "EaseInOut",
       "interpolationType": "Linear",
       "keyframes": [
        {
         "time": 0,
         "value": -0.02
        },
        {
         "time": 8,
         "value": 0.12
        }
       ]
      },
      "relativePosition": [
       0.5,
       0.44
      ],
      "relativeCharacterSize": [
       0.062,
       0.062
      ],
      "alpha": {
       "easingType": "EaseInOut",
       "interpolationType": "Linear",
       "keyframes": [
        {
         "time": 0.0,
         "value": 0.0
        },
        {
         "time": 1.2,
         "value": 1.0
        },
        {
         "time": 6.5,
         "value": 1.0
        },
        {
         "time": 8.0,
         "value": 0.0
        }
       ]
      }
     }
    },
    {
     "name": "subtitle",
     "type": "verso.truetype",
     "start": 2.2,
     "duration": 6.8,
     "priority": 10,
     "params": {
      "text": "a very hot, short and slithering trip",
      "style": "fill",
      "weight": 0.55,
      "fillColor": [
       0.99,
       0.97,
       0.88
      ],
      "relativePosition": [
       0.5,
       0.55
      ],
      "relativeCharacterSize": [
       0.032,
       0.032
      ],
      "alpha": {
       "easingType": "EaseInOut",
       "interpolationType": "Linear",
       "keyframes": [
        {
         "time": 0.0,
         "value": 0.0
        },
        {
         "time": 1.2,
         "value": 1.0
        },
        {
         "time": 5.3,
         "value": 1.0
        },
        {
         "time": 6.8,
         "value": 0.0
        }
       ]
      }
     }
    }
   ]
  },
  {
   "name": "scene2-hero",
   "type": "verso.group",
   "start": 30,
   "priority": 0,
   "demoparts": [
    {
     "name": "snake",
     "type": "serpentparadise.snake",
     "start": 0,
     "duration": 26,
     "priority": 5,
     "params": {
      "radius": 0.42,
      "bodyLength": 10.0,
      "amplitude": 1.7,
      "waveLength": 5.5,
      "speed": 1.65,
      "startX": -13.0,
      "depthWobble": 0.5,
      "patternRepeats": 26.0,
      "outlineWidth": 0.055,
      "bodyColor": [
       0.0,
       0.64,
       0.26
      ],
      "patternColor": [
       0.0,
       0.18,
       0.54
      ],
      "bellyColor": [
       0.99,
       0.96,
       0.82
      ],
      "outlineColor": [
       0.02,
       0.09,
       0.06
      ],
      "cameraPosition": [
       0.0,
       0.6,
       9.0
      ]
     }
    }
   ]
  },
  {
   "name": "scene3-credits",
   "type": "verso.group",
   "start": 52,
   "priority": 0,
   "demoparts": [
    {
     "name": "credit-0",
     "type": "verso.truetype",
     "start": 0.5,
     "duration": 11.2,
     "priority": 10,
     "params": {
      "font": {
       "source": "Righteous-Regular.ttf",
       "pixelHeight": 64
      },
      "text": "code: codise & AI",
      "style": "fillOutline",
      "weight": 0.5,
      "relativePosition": [
       0.4427,
       0.26
      ],
      "relativeCharacterSize": [
       0.045,
       0.045
      ],
      "outlineWidth": 0.2,
      "outlineColor": [
       0.0,
       0.0,
       0.0
      ],
      "revealCharactersPerSecond": 20,
      "fillShader": "plasma_fill.330.frag",
      "alpha": {
       "easingType": "EaseInOut",
       "interpolationType": "Linear",
       "keyframes": [
        {
         "time": 0.0,
         "value": 1.0
        },
        {
         "time": 9.0,
         "value": 1.0
        },
        {
         "time": 11.0,
         "value": 0.0
        }
       ]
      }
     }
    },
    {
     "name": "credit-1",
     "type": "verso.truetype",
     "start": 1.5,
     "duration": 10.2,
     "priority": 10,
     "params": {
      "font": {
       "source": "Righteous-Regular.ttf",
       "pixelHeight": 64
      },
      "text": "demo scripting: AI",
      "style": "fillOutline",
      "weight": 0.5,
      "relativePosition": [
       0.4546,
       0.345
      ],
      "relativeCharacterSize": [
       0.045,
       0.045
      ],
      "outlineWidth": 0.2,
      "outlineColor": [
       0.0,
       0.0,
       0.0
      ],
      "revealCharactersPerSecond": 20,
      "fillShader": "plasma_fill.330.frag",
      "alpha": {
       "easingType": "EaseInOut",
       "interpolationType": "Linear",
       "keyframes": [
        {
         "time": 0.0,
         "value": 1.0
        },
        {
         "time": 8.0,
         "value": 1.0
        },
        {
         "time": 10.0,
         "value": 0.0
        }
       ]
      }
     }
    },
    {
     "name": "credit-2",
     "type": "verso.truetype",
     "start": 2.5,
     "duration": 9.2,
     "priority": 10,
     "params": {
      "font": {
       "source": "Righteous-Regular.ttf",
       "pixelHeight": 64
      },
      "text": "font: Astigmatic",
      "style": "fillOutline",
      "weight": 0.5,
      "relativePosition": [
       0.4308,
       0.43
      ],
      "relativeCharacterSize": [
       0.045,
       0.045
      ],
      "outlineWidth": 0.2,
      "outlineColor": [
       0.0,
       0.0,
       0.0
      ],
      "revealCharactersPerSecond": 20,
      "fillShader": "plasma_fill.330.frag",
      "alpha": {
       "easingType": "EaseInOut",
       "interpolationType": "Linear",
       "keyframes": [
        {
         "time": 0.0,
         "value": 1.0
        },
        {
         "time": 7.0,
         "value": 1.0
        },
        {
         "time": 9.0,
         "value": 0.0
        }
       ]
      }
     }
    },
    {
     "name": "credit-3",
     "type": "verso.truetype",
     "start": 3.5,
     "duration": 8.2,
     "priority": 10,
     "params": {
      "font": {
       "source": "Righteous-Regular.ttf",
       "pixelHeight": 64
      },
      "text": "music: Greippi",
      "style": "fillOutline",
      "weight": 0.5,
      "relativePosition": [
       0.4069,
       0.515
      ],
      "relativeCharacterSize": [
       0.045,
       0.045
      ],
      "outlineWidth": 0.2,
      "outlineColor": [
       0.0,
       0.0,
       0.0
      ],
      "revealCharactersPerSecond": 20,
      "fillShader": "plasma_fill.330.frag",
      "alpha": {
       "easingType": "EaseInOut",
       "interpolationType": "Linear",
       "keyframes": [
        {
         "time": 0.0,
         "value": 1.0
        },
        {
         "time": 6.0,
         "value": 1.0
        },
        {
         "time": 8.0,
         "value": 0.0
        }
       ]
      }
     }
    },
    {
     "name": "credit-4",
     "type": "verso.truetype",
     "start": 4.5,
     "duration": 7.2,
     "priority": 10,
     "params": {
      "font": {
       "source": "Righteous-Regular.ttf",
       "pixelHeight": 64
      },
      "text": "ideas: human",
      "style": "fillOutline",
      "weight": 0.5,
      "relativePosition": [
       0.4031,
       0.6
      ],
      "relativeCharacterSize": [
       0.045,
       0.045
      ],
      "outlineWidth": 0.2,
      "outlineColor": [
       0.0,
       0.0,
       0.0
      ],
      "revealCharactersPerSecond": 20,
      "fillShader": "plasma_fill.330.frag",
      "alpha": {
       "easingType": "EaseInOut",
       "interpolationType": "Linear",
       "keyframes": [
        {
         "time": 0.0,
         "value": 1.0
        },
        {
         "time": 5.0,
         "value": 1.0
        },
        {
         "time": 7.0,
         "value": 0.0
        }
       ]
      }
     }
    }
   ]
  },
  {
   "name": "fade-to-black",
   "type": "verso.shadertoy",
   "start": 65,
   "duration": 5,
   "priority": 99,
   "params": {
    "shader": {
     "frag": "fade_black.330.frag"
    },
    "channel": [],
    "blend": "Transcluent",
    "alpha": {
     "easingType": "EaseInOut",
     "interpolationType": "Linear",
     "keyframes": [
      {
       "time": 0,
       "value": 0.0
      },
      {
       "time": 5,
       "value": 1.0
      }
     ]
    }
   }
  }
 ]
}