Back

SVG Drawing Match #2324

May 09, 2025
GPT-4o
Challenge Creator

Creative Challenge

"An octopus juggling flaming swords underwater."

SVG by GPT-4.1 (2025-04-14)
<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <!-- Water gradient for background -->
    <radialGradient id="waterGrad" cx="50%" cy="40%" r="80%">
      <stop offset="0%" stop-color="#a8e6ff"/>
      <stop offset="45%" stop-color="#4bb5e7"/>
      <stop offset="85%" stop-color="#1867b2"/>
    </radialGradient>
    <!-- Gradient for octopus body -->
    <radialGradient id="octoBodyGrad" cx="60%" cy="40%" r="70%">
      <stop offset="0%" stop-color="#ff85a1"/>
      <stop offset="70%" stop-color="#be3e73"/>
    </radialGradient>
    <!-- Tentacle gradient -->
    <linearGradient id="tentacleGrad" x1="0%" y1="0%" x2="100%" y2="100%">
      <stop offset="0%" stop-color="#ffb2c2"/>
      <stop offset="80%" stop-color="#902160"/>
    </linearGradient>
    <!-- Sword blade gradient -->
    <linearGradient id="bladeGrad" x1="0%" y1="0%" x2="0%" y2="100%">
      <stop offset="0%" stop-color="#dfecf6"/>
      <stop offset="80%" stop-color="#bcd2dd"/>
      <stop offset="100%" stop-color="#9fabb1"/>
    </linearGradient>
    <!-- Sword handle gradient -->
    <linearGradient id="handleGrad" x1="0%" y1="0%" x2="0%" y2="100%">
      <stop offset="0%" stop-color="#bc6c2b"/>
      <stop offset="100%" stop-color="#7d4323"/>
    </linearGradient>
    <!-- Fire gradient -->
    <radialGradient id="fireGrad" cx="50%" cy="60%" r="80%">
      <stop offset="0%" stop-color="#fffcd3"/>
      <stop offset="40%" stop-color="#ffe057"/>
      <stop offset="70%" stop-color="#ff8808"/>
      <stop offset="100%" stop-color="#ff2a2a"/>
    </radialGradient>
    <!-- Bubbles -->
    <radialGradient id="bubbleGrad" cx="50%" cy="50%" r="50%">
      <stop offset="0%" stop-color="#fff" stop-opacity="0.7"/>
      <stop offset="70%" stop-color="#a8e6ff" stop-opacity="0.3"/>
      <stop offset="100%" stop-color="#0ff" stop-opacity="0"/>
    </radialGradient>
    <!-- Underwater light rays -->
    <linearGradient id="rayGrad" x1="50%" y1="0%" x2="50%" y2="100%">
      <stop offset="0%" stop-color="#a8e6ff" stop-opacity="0.35"/>
      <stop offset="80%" stop-color="#1867b2" stop-opacity="0"/>
    </linearGradient>
    <!-- Pattern for subtle texture to sand -->
    <pattern id="sandPattern" width="10" height="6" patternUnits="userSpaceOnUse">
      <ellipse cx="2" cy="3" rx="1.2" ry="1" fill="#edcb99" opacity="0.3"/>
      <ellipse cx="7" cy="5" rx="1" ry="0.7" fill="#dec28c" opacity="0.25"/>
    </pattern>
  </defs>
  <!-- Background: water -->
  <rect x="0" y="0" width="300" height="300" fill="url(#waterGrad)"/>
  <!-- Underwater light rays -->
  <g>
    <polygon points="60,0 80,0 35,300 10,300" fill="url(#rayGrad)" />
    <polygon points="170,0 185,0 140,300 120,300" fill="url(#rayGrad)" />
    <polygon points="230,0 250,0 205,300 190,300" fill="url(#rayGrad)" />
    <polygon points="270,0 285,0 252,300 240,300" fill="url(#rayGrad)" />
  </g>
  <!-- Seafloor sand -->
  <ellipse cx="150" cy="295" rx="145" ry="25" fill="#ffc39e"/>
  <ellipse cx="150" cy="299" rx="150" ry="16" fill="url(#sandPattern)" opacity="0.7"/>
  <!-- Octopus shadow -->
  <ellipse cx="150" cy="240" rx="62" ry="18" fill="#32347c" opacity="0.18"/>
  <!-- Octopus body -->
  <ellipse cx="150" cy="170" rx="46" ry="54" fill="url(#octoBodyGrad)"/>
  <!-- Octopus head shine -->
  <ellipse cx="165" cy="160" rx="13" ry="7" fill="#fff" opacity="0.16"/>
  <!-- Octopus eye whites -->
  <ellipse cx="135" cy="170" rx="8.2" ry="11" fill="#fff"/>
  <ellipse cx="163" cy="171" rx="8.2" ry="11" fill="#fff"/>
  <!-- Octopus eye irises -->
  <ellipse cx="135" cy="174" rx="3.8" ry="5.8" fill="#2d1971"/>
  <ellipse cx="163" cy="175" rx="3.8" ry="5.8" fill="#2d1971"/>
  <!-- Octopus pupils -->
  <ellipse cx="135" cy="176" rx="1.2" ry="2" fill="#fff"/>
  <ellipse cx="163" cy="177" rx="1.2" ry="2" fill="#fff"/>
  <!-- Octopus mouth -->
  <path d="M139,191 Q150,197 161,191" fill="none" stroke="#5b1743" stroke-width="2.6" stroke-linecap="round"/>
  <!-- Octopus tentacles (8) -->
  <g>
    <!-- Tentacle 1 (upper left, juggling)-->
    <path d="M140 180 Q90 130 65 85 Q58 75 67 74 Q90 86 120 160 Q126 175 140 180"
      fill="none" stroke="url(#tentacleGrad)" stroke-width="14" stroke-linecap="round"/>
    <!-- Suction cups -->
    <circle cx="86" cy="123" r="2" fill="#ffe2f3"/>
    <circle cx="113" cy="157" r="2.2" fill="#ffe2f3"/>
    <!-- Tentacle 2 (upper left, juggling, further) -->
    <path d="M145 167 Q80 110 110 78 Q124 68 132 96 Q140 140 145 167"
      fill="none" stroke="url(#tentacleGrad)" stroke-width="13" stroke-linecap="round"/>
    <circle cx="105" cy="101" r="1.8" fill="#ffe2f3"/>
    <circle cx="120" cy="85" r="1.8" fill="#ffe2f3"/>
    <!-- Tentacle 3 (lower left) -->
    <path d="M145 200 Q80 240 110 260 Q130 262 126 246 Q122 234 145 200"
      fill="none" stroke="url(#tentacleGrad)" stroke-width="15" stroke-linecap="round"/>
    <circle cx="109" cy="242" r="2.5" fill="#ffe2f3"/>
    <!-- Tentacle 4 (lower left closer) -->
    <path d="M144 215 Q106 271 136 277 Q164 284 144 215"
      fill="none" stroke="url(#tentacleGrad)" stroke-width="13" stroke-linecap="round"/>
    <circle cx="124" cy="263" r="2" fill="#ffe2f3"/>
    <!-- Tentacle 5 (lower right closer) -->
    <path d="M154 217 Q181 255 200 283 Q207 289 213 277 Q216 268 185 252 Q159 227 154 217"
      fill="none" stroke="url(#tentacleGrad)" stroke-width="14" stroke-linecap="round"/>
    <!-- Tentacle 6 (lower right) -->
    <path d="M153 204 Q212 235 213 265 Q210 279 193 267 Q170 252 153 204"
      fill="none" stroke="url(#tentacleGrad)" stroke-width="13" stroke-linecap="round"/>
    <circle cx="199" cy="254" r="2.2" fill="#ffe2f3"/>
    <!-- Tentacle 7 (upper right, juggling, closer &) -->
    <path d="M157 173 Q220 103 210 72 Q207 58 192 75 Q175 103 157 173"
      fill="none" stroke="url(#tentacleGrad)" stroke-width="13" stroke-linecap="round"/>
    <circle cx="200" cy="99" r="2" fill="#ffe2f3"/>
    <circle cx="187" cy="82" r="1.8" fill="#ffe2f3"/>
    <!-- Tentacle 8 (upper right, juggling, farthest)-->
    <path d="M152 163 Q235 65 254 86 Q261 97 230 120 Q180 145 152 163"
      fill="none" stroke="url(#tentacleGrad)" stroke-width="12" stroke-linecap="round"/>
    <circle cx="228" cy="99" r="1.7" fill="#ffe2f3"/>
    <circle cx="218" cy="110" r="1.7" fill="#ffe2f3"/>
  </g>
  <!-- Swords and fire (juggled above tentacle tips, in arc, 5 swords) -->
  <g>
    <!-- Sword 1 -->
    <g transform="rotate(-18 88 66)">
      <!-- Blade -->
      <rect x="83" y="46" width="6" height="30" rx="2.5" fill="url(#bladeGrad)" />
      <!-- Hilt -->
      <rect x="81.2" y="76" width="10" height="6" rx="3" fill="url(#handleGrad)"/>
      <!-- Guard -->
      <ellipse cx="86" cy="80" rx="6" ry="2.4" fill="#b5986b"/>
      <!-- Fire -->
      <g>
        <ellipse cx="86" cy="46" rx="8" ry="13" fill="url(#fireGrad)" opacity="0.8"/>
        <path d="M86 42 Q84 32 90 39 Q97 46 86 46" fill="url(#fireGrad)" opacity="0.65"/>
      </g>
    </g>
    <!-- Sword 2 -->
    <g transform="rotate(-7 110 82)">
      <!-- Blade -->
      <rect x="105" y="61" width="5.4" height="28" rx="2" fill="url(#bladeGrad)"/>
      <!-- Hilt -->
      <rect x="102.7" y="87.4" width="10" height="6" rx="3" fill="url(#handleGrad)"/>
      <!-- Guard -->
      <ellipse cx="108" cy="90.8" rx="6" ry="2.4" fill="#b5986b"/>
      <!-- Fire -->
      <g>
        <ellipse cx="108" cy="61" rx="7.5" ry="11" fill="url(#fireGrad)" opacity="0.8"/>
        <path d="M108 59 Q108 48 114 54 Q120 61 108 61" fill="url(#fireGrad)" opacity="0.65"/>
      </g>
    </g>
    <!-- Sword 3 (top center) -->
    <g transform="rotate(4 150 57)">
      <rect x="146.2" y="40" width="7" height="28" rx="2.5" fill="url(#bladeGrad)"/>
      <rect x="143.5" y="66.5" width="13" height="7" rx="4" fill="url(#handleGrad)"/>
      <ellipse cx="149.7" cy="70.4" rx="7" ry="2.6" fill="#b5986b"/>
      <g>
        <ellipse cx="150" cy="40" rx="8" ry="14" fill="url(#fireGrad)" opacity="0.85"/>
        <path d="M150 36 Q149 28 158 34 Q165 39 150 40" fill="url(#fireGrad)" opacity="0.6"/>
      </g>
    </g>
    <!-- Sword 4 -->
    <g transform="rotate(18 192 69)">
      <rect x="187" y="52" width="6.1" height="27" rx="2.4" fill="url(#bladeGrad)"/>
      <rect x="183.5" y="77.5" width="10" height="6" rx="3" fill="url(#handleGrad)"/>
      <ellipse cx="188.5" cy="80.3" rx="6" ry="2.3" fill="#b5986b"/>
      <g>
        <ellipse cx="190" cy="52" rx="7.6" ry="12.5" fill="url(#fireGrad)" opacity="0.82"/>
        <path d="M191 48 Q188 33 198 40 Q205 48 190 52" fill="url(#fireGrad)" opacity="0.60"/>
      </g>
    </g>
    <!-- Sword 5 -->
    <g transform="rotate(32 222 98)">
      <rect x="217.2" y="77" width="5.5" height="27" rx="2.2" fill="url(#bladeGrad)"/>
      <rect x="214" y="102.5" width="10.5" height="6" rx="3.2" fill="url(#handleGrad)"/>
      <ellipse cx="218.5" cy="105" rx="6" ry="2.3" fill="#b5986b"/>
      <g>
        <ellipse cx="220" cy="77" rx="6.9" ry="11" fill="url(#fireGrad)" opacity="0.75"/>
        <path d="M220 77 Q219 72 225 78 Q230 85 220 77" fill="url(#fireGrad)" opacity="0.55"/>
      </g>
    </g>
  </g>
  <!-- Bubbles -->
  <g>
    <ellipse cx="68" cy="60" rx="7" ry="6" fill="url(#bubbleGrad)" opacity="0.53"/>
    <ellipse cx="115" cy="35" rx="4.2" ry="3.5" fill="url(#bubbleGrad)" opacity="0.33"/>
    <ellipse cx="200" cy="43" rx="5.7" ry="5" fill="url(#bubbleGrad)" opacity="0.41"/>
    <ellipse cx="250" cy="77" rx="8" ry="7" fill="url(#bubbleGrad)" opacity="0.32"/>
    <ellipse cx="230" cy="120" rx="4.5" ry="4" fill="url(#bubbleGrad)" opacity="0.35"/>
    <ellipse cx="130" cy="95" rx="3.7" ry="3" fill="url(#bubbleGrad)" opacity="0.28"/>
    <ellipse cx="90" cy="110" rx="2.6" ry="2.25" fill="url(#bubbleGrad)" opacity="0.3"/>
    <ellipse cx="178" cy="62" rx="2.7" ry="2.6" fill="url(#bubbleGrad)" opacity="0.37"/>
    <ellipse cx="117" cy="197" rx="2.8" ry="2.6" fill="url(#bubbleGrad)" opacity="0.23"/>
    <ellipse cx="166" cy="232" rx="2.3" ry="2.5" fill="url(#bubbleGrad)" opacity="0.2"/>
    <ellipse cx="80" cy="190" rx="4" ry="4.5" fill="url(#bubbleGrad)" opacity="0.23"/>
    <ellipse cx="210" cy="210" rx="3.4" ry="3.8" fill="url(#bubbleGrad)" opacity="0.25"/>
    <ellipse cx="120" cy="250" rx="3.8" ry="3.1" fill="url(#bubbleGrad)" opacity="0.18"/>
    <ellipse cx="240" cy="175" rx="2.5" ry="2.1" fill="url(#bubbleGrad)" opacity="0.2"/>
  </g>
  <!-- Seaweed and coral, left and right foreground -->
  <g>
    <!-- Seaweed left -->
    <path d="M40 280 Q32 260 45 250 Q58 240 46 220 Q34 200 55 175" fill="none" stroke="#256b35" stroke-width="8" stroke-linecap="round"/>
    <path d="M54 285 Q55 268 51 255 Q47 245 60 234 Q73 223 57 210" fill="none" stroke="#238c35" stroke-width="7" stroke-linecap="round"/>
    <!-- Coral right -->
    <path d="M260 284 Q265 265 252 259 Q240 253 260 244 Q280 235 257 231" fill="none" stroke="#fa709a" stroke-width="7" stroke-linecap="round"/>
    <path d="M275 287 Q280 273 264 262 Q246 253 274 247" fill="none" stroke="#ed285a" stroke-width="6" stroke-linecap="round"/>
  </g>
</svg>
SVG by Gemini 2.5 Pro Preview 05-06
<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <linearGradient id="waterGradient" x1="0%" y1="0%" x2="0%" y2="100%">
      <stop offset="0%" style="stop-color:#64B5F6;stop-opacity:1" />
      <stop offset="30%" style="stop-color:#42A5F5;stop-opacity:1" />
      <stop offset="100%" style="stop-color:#1565C0;stop-opacity:1" />
    </linearGradient>

    <radialGradient id="octopusSkin" cx="50%" cy="50%" r="70%" fx="50%" fy="40%">
      <stop offset="0%" style="stop-color:#FF4081; stop-opacity:1" /> <!-- Vibrant Pink -->
      <stop offset="60%" style="stop-color:#F50057; stop-opacity:1" /> <!-- Deep Pink -->
      <stop offset="100%" style="stop-color:#C51162; stop-opacity:1" /> <!-- Darker Magenta -->
    </radialGradient>
    
    <radialGradient id="suckerGradient" cx="50%" cy="50%" r="50%">
        <stop offset="0%" style="stop-color:#F8BBD0;" />
        <stop offset="100%" style="stop-color:#F06292;" />
    </radialGradient>

    <linearGradient id="flameGradient" x1="0%" y1="100%" x2="0%" y2="0%">
      <stop offset="0%" style="stop-color:#FFF176; stop-opacity:1" />   <!-- Pale Yellow -->
      <stop offset="30%" style="stop-color:#FFB74D; stop-opacity:1" />  <!-- Light Orange -->
      <stop offset="70%" style="stop-color:#FF7043; stop-opacity:0.9" /> <!-- Orange-Red -->
      <stop offset="100%" style="stop-color:#E64A19; stop-opacity:0.7" /> <!-- Deep Orange, more transparent -->
    </linearGradient>
    
    <linearGradient id="swordMetal" x1="0%" y1="0%" x2="100%" y2="100%">
        <stop offset="0%" style="stop-color:#CFD8DC;"/> <!-- Blue Grey Light -->
        <stop offset="50%" style="stop-color:#90A4AE;"/> <!-- Blue Grey Medium -->
        <stop offset="100%" style="stop-color:#607D8B;"/> <!-- Blue Grey Dark -->
    </linearGradient>

    <filter id="flameGlow">
      <feGaussianBlur in="SourceAlpha" stdDeviation="2.5" result="blur"/>
      <feOffset in="blur" dx="0" dy="0" result="offsetBlur"/>
      <feFlood flood-color="#FFB74D" flood-opacity="0.5" result="glowColor"/>
      <feComposite in="glowColor" in2="offsetBlur" operator="in" result="coloredBlur"/>
      <feMerge>
        <feMergeNode in="coloredBlur"/>
        <feMergeNode in="SourceGraphic"/>
      </feMerge>
    </filter>
  </defs>

  <!-- Background -->
  <rect width="300" height="300" fill="url(#waterGradient)" />

  <!-- Light rays from above -->
  <g opacity="0.2">
    <path d="M50 0 L70 -20 L150 300 L120 300 Z" fill="rgba(227,242,253,0.3)" transform="rotate(-20 100 0)"/>
    <path d="M150 0 L170 -20 L250 300 L220 300 Z" fill="rgba(227,242,253,0.2)" transform="rotate(5 175 0)"/>
    <path d="M230 0 L250 -20 L330 300 L300 300 Z" fill="rgba(227,242,253,0.25)" transform="rotate(25 265 0)"/>
  </g>

  <!-- Background Bubbles -->
  <g id="backgroundBubbles" fill-opacity="0.5">
    <circle cx="30" cy="270" r="6" fill="rgba(207,216,220,0.4)"/> <animate attributeName="cy" values="270;50;270" dur="15s" repeatCount="indefinite" /> <animate attributeName="cx" values="30;40;20;30" dur="10s" repeatCount="indefinite" />
    <circle cx="260" cy="220" r="4" fill="rgba(207,216,220,0.3)"/> <animate attributeName="cy" values="220;30;220" dur="12s" repeatCount="indefinite" delay="2s"/>
    <circle cx="120" cy="150" r="5" fill="rgba(207,216,220,0.5)"/> <animate attributeName="cy" values="150;20;150" dur="10s" repeatCount="indefinite" delay="1s"/> <animate attributeName="cx" values="120;110;130;120" dur="12s" repeatCount="indefinite" />
    <circle cx="220" cy="80" r="7" fill="rgba(207,216,220,0.35)"/> <animate attributeName="cy" values="80;-20;80" dur="18s" repeatCount="indefinite" delay="3s"/>
    <circle cx="70" cy="40" r="3" fill="rgba(207,216,220,0.45)"/> <animate attributeName="cy" values="40;-30;40" dur="9s" repeatCount="indefinite" />
  </g>

  <!-- Octopus -->
  <g id="octopus" transform="translate(0 30)">
    <!-- Tentacles (drawn first to be behind head somewhat) -->
    <g id="tentacles_group" fill="url(#octopusSkin)" stroke="#AD1457" stroke-width="1.5" stroke-linejoin="round">
      <!-- Tentacle 1 (to sword 1 hilt at 80,130 world / 80,100 local) -->
      <path d="M125,175 Q100,150 80,105 L75,110 Q105,145 120,170 Z"/>
      <!-- Tentacle 2 (to sword 2 hilt at 150,80 world / 150,50 local) -->
      <path d="M152,170 Q150,110 150,55 L155,60 Q155,115 148,170 Z"/>
      <!-- Tentacle 3 (to sword 3 hilt at 220,130 world / 220,100 local) -->
      <path d="M175,175 Q200,150 220,105 L225,110 Q195,145 180,170 Z"/>
      
      <!-- Lower Tentacles for balance/support -->
      <path d="M110,185 Q80,210 70,240 L80,245 Q90,215 115,190 Z"/>
      <path d="M190,185 Q220,210 230,240 L220,245 Q210,215 185,190 Z"/>
      <path d="M130,190 Q115,230 120,260 L130,263 Q130,235 135,195 Z"/>
      <path d="M170,190 Q185,230 180,260 L170,263 Q170,235 165,195 Z"/>
      <path d="M150,195 Q150,225 145,250 L155,250 Q150,225 150,198 Z"/> 
    </g>

    <!-- Head -->
    <path d="M150,90 
             C110,90 90,120 90,150 
             C90,180 110,200 150,205 
             C190,200 210,180 210,150
             C210,120 190,90 150,90 Z" fill="url(#octopusSkin)" stroke="#AD1457" stroke-width="2.5"/>
    
    <!-- Eyes -->
    <g id="eyes">
      <ellipse cx="130" cy="130" rx="16" ry="22" fill="#FFFDE7" stroke="#AD1457" stroke-width="1"/>
      <ellipse cx="132" cy="135" rx="8" ry="10" fill="#212121"/>
      <circle cx="129" cy="131" r="3" fill="white" opacity="0.8"/>

      <ellipse cx="170" cy="130" rx="16" ry="22" fill="#FFFDE7" stroke="#AD1457" stroke-width="1"/>
      <ellipse cx="168" cy="135" rx="8" ry="10" fill="#212121"/>
      <circle cx="171" cy="131" r="3" fill="white" opacity="0.8"/>
    </g>

    <!-- Suckers -->
    <g id="suckers" fill="url(#suckerGradient)" stroke="#E91E63" stroke-width="0.5">
        <!-- Tentacle 1 suckers -->
        <circle cx="110" cy="160" r="4"/> <circle cx="95" cy="135" r="3.5"/> <circle cx="83" cy="115" r="3"/>
        <!-- Tentacle 2 suckers -->
        <circle cx="151" cy="140" r="4"/> <circle cx="152" cy="100" r="3.5"/> <circle cx="153" cy="70" r="3"/>
        <!-- Tentacle 3 suckers -->
        <circle cx="190" cy="160" r="4"/> <circle cx="205" cy="135" r="3.5"/> <circle cx="217" cy="115" r="3"/>
        <!-- Lower tentacles suckers -->
        <circle cx="85" cy="220" r="3.5"/> <circle cx="75" cy="235" r="3"/> 
        <circle cx="215" cy="220" r="3.5"/> <circle cx="225" cy="235" r="3"/>
        <circle cx="125" cy="240" r="3"/> <circle cx="175" cy="240" r="3"/>
    </g>
  </g>

  <!-- Swords & Flames -->
  <!-- Sword 1 (left) -->
  <g id="sword1" transform="translate(80 100) rotate(-65)"> <!-- Hilt base at 80,100 world -->
    <g class="flame" filter="url(#flameGlow)">
        <path d="M0,-75 C-15,-100 -20,-120 -10,-140 C0,-160 10,-160 20,-140 C30,-120 25,-100 0,-75 Z" fill="url(#flameGradient)" transform="translate(0 -5)"/>
        <path d="M0,-80 C-10,-100 -15,-115 -8,-130 C-2,-140 8,-140 15,-130 C22,-115 12,-100 0,-80 Z" fill="url(#flameGradient)" transform="scale(0.7) translate(0 -20) opacity(0.8)"/>
    </g>
    <polygon points="0,-5 -7,-75 7,-75" fill="url(#swordMetal)" stroke="#455A64" stroke-width="0.5"/> <!-- Blade -->
    <rect x="-12" y="-8" width="24" height="6" fill="#78909C" rx="1" stroke="#455A64" stroke-width="0.5"/> <!-- Guard -->
    <rect x="-6" y="0" width="12" height="22" fill="#546E7A" rx="2" stroke="#37474F" stroke-width="0.5"/> <!-- Hilt -->
    <g opacity="0.6"> <!-- Bubbles for flame 1 -->
        <circle cx="0" cy="-120" r="2.5" fill="rgba(227,242,253,0.7)"/> <animate attributeName="r" values="2.5;3;2;2.5" dur="1.5s" repeatCount="indefinite"/>
        <circle cx="-8" cy="-130" r="1.8" fill="rgba(227,242,253,0.6)"/> <animate attributeName="cy" values="-130;-135;-130" dur="2s" repeatCount="indefinite"/>
    </g>
  </g>

  <!-- Sword 2 (top) -->
  <g id="sword2" transform="translate(150 50) rotate(5)"> <!-- Hilt base at 150,50 world -->
     <g class="flame" filter="url(#flameGlow)">
        <path d="M0,-75 C-12,-100 -18,-120 -8,-140 C2,-160 12,-160 22,-140 C32,-120 22,-100 0,-75 Z" fill="url(#flameGradient)" transform="translate(0 -5)"/>
        <path d="M0,-80 C-8,-100 -13,-115 -6,-130 C0,-140 10,-140 17,-130 C24,-115 10,-100 0,-80 Z" fill="url(#flameGradient)" transform="scale(0.8) translate(0 -18) opacity(0.85)"/>
    </g>
    <polygon points="0,-5 -7,-75 7,-75" fill="url(#swordMetal)" stroke="#455A64" stroke-width="0.5"/>
    <rect x="-12" y="-8" width="24" height="6" fill="#78909C" rx="1" stroke="#455A64" stroke-width="0.5"/>
    <rect x="-6" y="0" width="12" height="22" fill="#546E7A" rx="2" stroke="#37474F" stroke-width="0.5"/>
     <g opacity="0.6"> <!-- Bubbles for flame 2 -->
        <circle cx="3" cy="-125" r="2.2" fill="rgba(227,242,253,0.75)"/> <animate attributeName="r" values="2.2;2.8;1.8;2.2" dur="1.3s" repeatCount="indefinite"/>
        <circle cx="10" cy="-135" r="1.5" fill="rgba(227,242,253,0.65)"/> <animate attributeName="cx" values="10;13;8;10" dur="1.8s" repeatCount="indefinite"/>
    </g>
  </g>

  <!-- Sword 3 (right) -->
  <g id="sword3" transform="translate(220 100) rotate(65)"> <!-- Hilt base at 220,100 world -->
     <g class="flame" filter="url(#flameGlow)">
        <path d="M0,-75 C-15,-100 -20,-120 -10,-140 C0,-160 10,-160 20,-140 C30,-120 25,-100 0,-75 Z" fill="url(#flameGradient)" transform="translate(0 -5)"/>
        <path d="M0,-80 C-10,-100 -15,-115 -8,-130 C-2,-140 8,-140 15,-130 C22,-115 12,-100 0,-80 Z" fill="url(#flameGradient)" transform="scale(0.75) translate(0 -19) opacity(0.75)"/>
    </g>
    <polygon points="0,-5 -7,-75 7,-75" fill="url(#swordMetal)" stroke="#455A64" stroke-width="0.5"/>
    <rect x="-12" y="-8" width="24" height="6" fill="#78909C" rx="1" stroke="#455A64" stroke-width="0.5"/>
    <rect x="-6" y="0" width="12" height="22" fill="#546E7A" rx="2" stroke="#37474F" stroke-width="0.5"/>
     <g opacity="0.6"> <!-- Bubbles for flame 3 -->
        <circle cx="-3" cy="-122" r="2.0" fill="rgba(227,242,253,0.72)"/> <animate attributeName="r" values="2;2.5;1.5;2" dur="1.6s" repeatCount="indefinite"/>
        <circle cx="-10" cy="-132" r="1.9" fill="rgba(227,242,253,0.55)"/> <animate attributeName="cy" values="-132;-138;-132" dur="2.2s" repeatCount="indefinite"/>
    </g>
  </g>
  
  <!-- Foreground Bubbles -->
  <g id="foregroundBubbles" fill-opacity="0.7">
    <circle cx="150" cy="160" r="3.5" fill="rgba(236,239,241,0.7)"/> <animate attributeName="cy" values="160;150;160" dur="3s" repeatCount="indefinite" /><animate attributeName="r" values="3.5;4;3;3.5" dur="2.5s" repeatCount="indefinite" />
    <circle cx="90" cy="200" r="4.5" fill="rgba(236,239,241,0.75)"/> <animate attributeName="cy" values="200;100;200" dur="8s" repeatCount="indefinite" delay="0.5s"/>
    <circle cx="210" cy="210" r="3" fill="rgba(236,239,241,0.65)"/> <animate attributeName="cy" values="210;120;210" dur="7s" repeatCount="indefinite" delay="1s"/> <animate attributeName="cx" values="210;200;220;210" dur="10s" repeatCount="indefinite" />
  </g>
</svg>
GPT-4o
Judge & Evaluator
The winner of this SVG challenge is GPT-4.1 (2025-04-14) Player 1

Judge's Analysis

    Player 1's submission excels in creativity and adherence to the prompt, capturing the underwater setting and depicting the octopus juggling flaming swords convincingly.

    The inclusion of flames on the swords and the dynamic positioning of the tentacles add visual interest.

    While Player 2's design is charming, it lacks the flames specified in the prompt, making it less accurate and engaging overall.

These metrics analyze technical aspects of both SVG drawings. Look for differences that might explain the judge's decision. Use the "View Code" button above to see the SVG code for each drawing.

Shapes Metrics

Total Shapes

The total number of shape elements (rect, circle, ellipse, line, polygon, polyline, path) in the SVG.

Player 1
81
Player 2
63
Rectangles

The number of rectangle elements (rect) in the SVG.

Player 1
11
Player 2
7
Circles

The number of circle elements (circle) in the SVG.

Player 1
11
Player 2
31
Ellipses

The number of ellipse elements (ellipse) in the SVG.

Player 1
37
Player 2
4
Lines

The number of line elements (line) in the SVG.

Player 1
Player 2
Polygons

The number of polygon elements (polygon) in the SVG.

Player 1
4
Player 2
3
Paths

The number of path elements (path) in the SVG.

Player 1
18
Player 2
18
Groups

The number of group elements (g) in the SVG.

Player 1
15
Player 2
16

Visual Effects Metrics

Gradients

The number of gradient definitions (linearGradient, radialGradient) in the SVG.

Player 1
8
Player 2
5
Patterns

The number of pattern definitions (pattern) in the SVG.

Player 1
1
Player 2
Filters

The number of filter definitions (filter) in the SVG.

Player 1
Player 2
1
Masks

The number of mask definitions (mask) in the SVG.

Player 1
Player 2
Clip Paths

The number of clipping path definitions (clipPath) in the SVG.

Player 1
Player 2
Elements with Opacity

The number of elements with opacity attributes in the SVG.

Player 1
29
Player 2
6
Elements with Stroke

The number of elements with stroke attributes in the SVG.

Player 1
13
Player 2
14

Colors Metrics

Unique Colors

The number of unique colors used in the SVG.

Player 1
30
Player 2
26

Interactivity Metrics

Animations

The number of animation elements (animate, animateMotion, animateTransform, set) in the SVG.

Player 1
Player 2
18
Elements with Transform

The number of elements with transform attributes in the SVG.

Player 1
5
Player 2
13

Complexity Metrics

Path Commands

The total number of path commands in all path elements (M, L, C, Q, etc.) in the SVG.

Player 1
65
Player 2
91
Max Group Nesting

The maximum nesting level of group elements (g) in the SVG.

Player 1
2
Player 2
1
Defs Elements

The number of elements defined within the defs element in the SVG.

Player 1
9
Player 2
6
Use Elements

The number of use elements (use) in the SVG.

Player 1
Player 2

Text Metrics

Text Elements

The number of text elements (text) in the SVG.

Player 1
Player 2

AI Judging Process

Creativity

Originality, innovative use of shapes and unique approach to the prompt.

Prompt Adherence

How accurately the SVG captures the essence of the prompt.

Visual Appeal

Aesthetic quality including composition, color usage and overall visual impact.

How does judging work?

SVG drawings are converted to static PNG images for evaluation. The AI judge receives the original prompt and both images, then determines which drawing better fulfills the evaluation criteria without seeing animations, interactivity, or SVG code.

Similar Challenges