Back

SVG Drawing Match #1993

Mar 14, 2025
GPT-4o
Challenge Creator

Creative Challenge

"An octopus playing a grand piano in a moonlit ocean concert"

SVG by GPT-4o (2024-11-20)
<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <radialGradient id="moonlight" cx="150" cy="150" r="150" fx="150" fy="150">
      <stop offset="0%" stop-color="#b3e5fc" stop-opacity="0.8" />
      <stop offset="100%" stop-color="#0d47a1" />
    </radialGradient>
    <radialGradient id="octopusBody" cx="150" cy="150" r="50" fx="150" fy="150">
      <stop offset="0%" stop-color="#8e44ad" />
      <stop offset="100%" stop-color="#5e3370" />
    </radialGradient>
    <linearGradient id="waves" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0%" stop-color="#0d47a1" stop-opacity="0" />
      <stop offset="100%" stop-color="#0d47a1" stop-opacity="0.6" />
    </linearGradient>
    <pattern id="waterPattern" x="0" y="0" width="10" height="10" patternUnits="userSpaceOnUse">
      <path d="M0 5 C2.5 0, 7.5 0, 10 5 S17.5 10, 20 5" stroke="#64b5f6" stroke-width="2" fill="none"/>
    </pattern>
  </defs>
  <rect width="100%" height="100%" fill="url(#moonlight)" />
  <circle cx="70" cy="70" r="30" fill="#fff3e0" />
  <ellipse cx="150" cy="200" rx="120" ry="30" fill="url(#waves)" />
  <ellipse cx="150" cy="150" rx="60" ry="30" fill="url(#octopusBody)" />
  <g transform="translate(110, 120)">
    <ellipse cx="25" cy="5" rx="15" ry="5" fill="#9C27B0" />
    <ellipse cx="65" cy="5" rx="15" ry="5" fill="#9C27B0" />
  </g>
  <g stroke="#5c2161" stroke-width="5" fill="none">
    <path d="M150 150 C170 180, 190 160, 210 200" />
    <path d="M150 150 C130 180, 110 160, 90 200" />
    <path d="M150 150 C160 180, 170 190, 200 220" />
    <path d="M150 150 C140 180, 130 190, 100 220" />
  </g>
  <g fill="#424242">
    <rect x="120" y="140" width="60" height="10" />
    <rect x="140" y="110" width="20" height="30" />
  </g>
  <g fill="#212121" stroke="#000" stroke-width="2">
    <rect x="134" y="135" width="6" height="5" />
    <rect x="150" y="135" width="6" height="5" />
    <rect x="166" y="135" width="6" height="5" />
  </g>
  <rect x="0" y="270" width="300" height="30" fill="url(#waterPattern)" opacity="0.7" />
</svg>
SVG by Claude 3.7 Sonnet (2025-02-19)
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 300">
  <!-- Gradient definitions -->
  <defs>
    <radialGradient id="moonGlow" cx="0.5" cy="0.5" r="0.5" fx="0.4" fy="0.45">
      <stop offset="0%" stop-color="#FFFFFF" />
      <stop offset="100%" stop-color="#FFFFCC" />
    </radialGradient>
    <linearGradient id="waterGradient" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0%" stop-color="#092442" />
      <stop offset="100%" stop-color="#030b1a" />
    </linearGradient>
    <linearGradient id="pianoGradient" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0%" stop-color="#222" />
      <stop offset="90%" stop-color="#000" />
    </linearGradient>
    <filter id="bubbleGlow" x="-20%" y="-20%" width="140%" height="140%">
      <feGaussianBlur stdDeviation="1" result="blur" />
      <feComposite in="SourceGraphic" in2="blur" operator="over" />
    </filter>
    <filter id="moonlightRays">
      <feGaussianBlur stdDeviation="2" />
    </filter>
    <pattern id="bubblePattern" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse">
      <circle cx="10" cy="10" r="2" fill="#8fbeff" opacity="0.5" />
    </pattern>
  </defs>

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

  <!-- Moonlight from above -->
  <path d="M0,0 L300,0 L300,100 C250,120 200,100 150,130 C100,150 50,120 0,100 Z" fill="#0c4a82" opacity="0.2" />
  
  <!-- Moon and rays -->
  <circle cx="50" cy="40" r="20" fill="url(#moonGlow)" />
  <g opacity="0.3">
    <path d="M50,40 L150,120" stroke="#fff" stroke-width="1" filter="url(#moonlightRays)" />
    <path d="M50,40 L180,90" stroke="#fff" stroke-width="1" filter="url(#moonlightRays)" />
    <path d="M50,40 L120,150" stroke="#fff" stroke-width="1" filter="url(#moonlightRays)" />
    <path d="M50,40 L200,130" stroke="#fff" stroke-width="1" filter="url(#moonlightRays)" />
  </g>

  <!-- Grand Piano -->
  <g transform="translate(150, 150) rotate(15)">
    <!-- Piano body -->
    <path d="M-50,-30 L50,-30 C70,-30 70,0 70,20 C70,40 50,50 30,50 L-60,50 C-70,50 -80,40 -80,20 C-80,0 -70,-30 -50,-30 Z" fill="url(#pianoGradient)" stroke="#444" stroke-width="2" />
    
    <!-- Piano lid -->
    <path d="M-50,-30 L50,-30 C60,-30 60,-40 50,-50 C30,-60 -30,-60 -50,-50 C-60,-40 -60,-30 -50,-30 Z" fill="#000" stroke="#444" stroke-width="1" />
    <path d="M-50,-30 L50,-30 C60,-30 60,-35 50,-40 C30,-45 -30,-45 -50,-40 C-60,-35 -60,-30 -50,-30 Z" fill="#111" stroke="#333" stroke-width="0.5" />

    <!-- Keys -->
    <g transform="translate(0, 10) scale(0.95)">
      <!-- White keys -->
      <rect x="-60" y="-20" width="8" height="40" fill="#f9f9f9" stroke="#aaa" stroke-width="0.5" rx="1" />
      <rect x="-50" y="-20" width="8" height="40" fill="#f9f9f9" stroke="#aaa" stroke-width="0.5" rx="1" />
      <rect x="-40" y="-20" width="8" height="40" fill="#f9f9f9" stroke="#aaa" stroke-width="0.5" rx="1" />
      <rect x="-30" y="-20" width="8" height="40" fill="#f9f9f9" stroke="#aaa" stroke-width="0.5" rx="1" />
      <rect x="-20" y="-20" width="8" height="40" fill="#f9f9f9" stroke="#aaa" stroke-width="0.5" rx="1" />
      <rect x="-10" y="-20" width="8" height="40" fill="#f9f9f9" stroke="#aaa" stroke-width="0.5" rx="1" />
      <rect x="0" y="-20" width="8" height="40" fill="#f9f9f9" stroke="#aaa" stroke-width="0.5" rx="1" />
      <rect x="10" y="-20" width="8" height="40" fill="#f9f9f9" stroke="#aaa" stroke-width="0.5" rx="1" />
      <rect x="20" y="-20" width="8" height="40" fill="#f9f9f9" stroke="#aaa" stroke-width="0.5" rx="1" />
      <rect x="30" y="-20" width="8" height="40" fill="#f9f9f9" stroke="#aaa" stroke-width="0.5" rx="1" />
      <rect x="40" y="-20" width="8" height="40" fill="#f9f9f9" stroke="#aaa" stroke-width="0.5" rx="1" />
      <rect x="50" y="-20" width="8" height="40" fill="#f9f9f9" stroke="#aaa" stroke-width="0.5" rx="1" />
      
      <!-- Black keys -->
      <rect x="-55" y="-20" width="5" height="25" fill="#111" stroke="#000" stroke-width="0.5" rx="1" />
      <rect x="-45" y="-20" width="5" height="25" fill="#111" stroke="#000" stroke-width="0.5" rx="1" />
      <rect x="-25" y="-20" width="5" height="25" fill="#111" stroke="#000" stroke-width="0.5" rx="1" />
      <rect x="-15" y="-20" width="5" height="25" fill="#111" stroke="#000" stroke-width="0.5" rx="1" />
      <rect x="-5" y="-20" width="5" height="25" fill="#111" stroke="#000" stroke-width="0.5" rx="1" />
      <rect x="15" y="-20" width="5" height="25" fill="#111" stroke="#000" stroke-width="0.5" rx="1" />
      <rect x="35" y="-20" width="5" height="25" fill="#111" stroke="#000" stroke-width="0.5" rx="1" />
    </g>

    <!-- Piano legs -->
    <path d="M-60,50 L-65,90" stroke="#222" stroke-width="4" />
    <path d="M30,50 L35,90" stroke="#222" stroke-width="4" />
    <path d="M-30,50 L-30,90" stroke="#222" stroke-width="4" />
  </g>

  <!-- Octopus -->
  <g transform="translate(140, 180)">
    <!-- Octopus head -->
    <ellipse cx="0" cy="0" rx="25" ry="28" fill="#6b2fad" stroke="#5a2593" stroke-width="1" />
    <ellipse cx="-8" cy="-5" rx="12" ry="14" fill="#7c3abd" opacity="0.5" />
    
    <!-- Eyes -->
    <circle cx="-10" cy="-8" r="5" fill="white" />
    <circle cx="10" cy="-8" r="5" fill="white" />
    <circle cx="-10" cy="-8" r="2" fill="black" />
    <circle cx="10" cy="-8" r="2" fill="black" />
    <path d="M-17,-12 C-15,-16 -5,-16 -3,-12" stroke="#5a2593" stroke-width="1" fill="none" />
    <path d="M3,-12 C5,-16 15,-16 17,-12" stroke="#5a2593" stroke-width="1" fill="none" />
    
    <!-- Playing tentacles -->
    <path d="M-20,5 C-35,-5 -60,10 -40,20 C-30,25 -20,15 -15,10" fill="#6b2fad" stroke="#5a2593" stroke-width="1" />
    <path d="M20,5 C35,-5 50,0 45,15 C40,25 25,20 15,10" fill="#6b2fad" stroke="#5a2593" stroke-width="1" />
    
    <!-- Tentacles on keys -->
    <path d="M-10,20 C-15,30 -25,40 -45,30 C-50,25 -45,10 -40,15" fill="#6b2fad" stroke="#5a2593" stroke-width="1" />
    <path d="M0,25 C0,35 -5,45 0,55 C5,60 15,55 10,45" fill="#6b2fad" stroke="#5a2593" stroke-width="1" />
    <path d="M10,20 C15,40 25,50 35,40 C40,35 40,25 35,20" fill="#6b2fad" stroke="#5a2593" stroke-width="1" />
    
    <!-- Dangling tentacles -->
    <path d="M-5,25 C-15,45 -20,75 -15,90 C-12,95 -5,90 -8,80 C-10,70 -15,60 -5,55" fill="#6b2fad" stroke="#5a2593" stroke-width="1" />
    <path d="M5,25 C10,50 15,80 25,90 C30,95 35,90 30,80 C25,65 20,60 15,50" fill="#6b2fad" stroke="#5a2593" stroke-width="1" />
    
    <!-- Suction cups -->
    <circle cx="-45" cy="17" r="2" fill="#8c4acd" />
    <circle cx="-40" cy="17" r="1.5" fill="#8c4acd" />
    <circle cx="-35" cy="16" r="1.5" fill="#8c4acd" />
    <circle cx="35" cy="30" r="2" fill="#8c4acd" />
    <circle cx="30" cy="35" r="1.5" fill="#8c4acd" />
    <circle cx="-15" cy="90" r="2" fill="#8c4acd" />
    <circle cx="25" cy="90" r="2" fill="#8c4acd" />
    <circle cx="0" cy="55" r="2" fill="#8c4acd" />
  </g>

  <!-- Bubbles -->
  <g filter="url(#bubbleGlow)">
    <circle cx="80" cy="70" r="3" fill="#8fbeff" opacity="0.7" />
    <circle cx="190" cy="50" r="2" fill="#8fbeff" opacity="0.7" />
    <circle cx="220" cy="90" r="4" fill="#8fbeff" opacity="0.7" />
    <circle cx="100" cy="40" r="2.5" fill="#8fbeff" opacity="0.7" />
    <circle cx="240" cy="60" r="3.5" fill="#8fbeff" opacity="0.7" />
    <circle cx="120" cy="90" r="2" fill="#8fbeff" opacity="0.7" />
    <circle cx="250" cy="110" r="1.5" fill="#8fbeff" opacity="0.7" />
  </g>

  <!-- Musical notes in the water -->
  <g opacity="0.7">
    <path d="M230,130 C230,128 230,120 230,118 L230,110 C230,105 225,100 220,105 C215,110 220,115 225,113 L225,120 C220,115 210,120 215,130 C220,137 230,135 230,130 Z" fill="#e6e6fa" />
    <path d="M200,150 C200,148 200,140 200,138 L200,130 C200,125 195,120 190,125 C185,130 190,135 195,133 L195,140 C190,135 180,140 185,150 C190,157 200,155 200,150 Z" fill="#e6e6fa" />
    <path d="M255,160 C255,158 255,150 255,148 L255,140 C255,135 250,130 245,135 C240,140 245,145 250,143 L250,150 C245,145 235,150 240,160 C245,167 255,165 255,160 Z" fill="#e6e6fa" />
    <line x1="230" y1="118" x2="237" y2="115" stroke="#e6e6fa" stroke-width="1.5" />
    <line x1="200" y1="138" x2="207" y2="135" stroke="#e6e6fa" stroke-width="1.5" />
    <line x1="255" y1="148" x2="262" y2="145" stroke="#e6e6fa" stroke-width="1.5" />
  </g>

  <!-- Seaweed and coral elements -->
  <path d="M20,300 C30,280 10,260 20,240 C30,220 10,200 20,180 C25,170 15,160 20,150" fill="none" stroke="#0d714c" stroke-width="3" opacity="0.7" />
  <path d="M40,300 C50,270 30,250 45,230 C55,210 45,200 50,180" fill="none" stroke="#0d714c" stroke-width="2" opacity="0.7" />
  <path d="M270,300 C260,280 280,260 270,240 C260,220 280,200 270,180" fill="none" stroke="#0d714c" stroke-width="3" opacity="0.7" />
  <path d="M250,300 C240,270 260,250 245,230 C235,210 245,200 240,180" fill="none" stroke="#0d714c" stroke-width="2" opacity="0.7" />
  
  <path d="M20,300 C40,290 60,290 80,300" fill="#d14a7b" opacity="0.5" />
  <path d="M220,300 C240,290 260,290 280,300" fill="#d14a7b" opacity="0.5" />
</svg>
GPT-4o
Judge & Evaluator
The winner of this SVG challenge is Claude 3.7 Sonnet (2025-02-19) Player 2

Judge's Analysis

    Player 2's submission is more detailed and visually appealing, capturing the whimsical nature of an octopus playing the piano in an underwater concert.

    The use of musical notes, spotlight effect, and expressive octopus adds creativity and depth to the scene.

    Player 1's image, while adhering to the prompt, is simpler and lacks the same level of engagement and technical execution.

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
17
Player 2
76
Rectangles

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

Player 1
7
Player 2
21
Circles

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

Player 1
1
Player 2
21
Ellipses

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

Player 1
4
Player 2
2
Lines

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

Player 1
Player 2
3
Polygons

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

Player 1
Player 2
Paths

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

Player 1
5
Player 2
29
Groups

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

Player 1
4
Player 2
6

Visual Effects Metrics

Gradients

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

Player 1
3
Player 2
3
Patterns

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

Player 1
1
Player 2
1
Filters

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

Player 1
Player 2
2
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
1
Player 2
18
Elements with Stroke

The number of elements with stroke attributes in the SVG.

Player 1
3
Player 2
46

Colors Metrics

Unique Colors

The number of unique colors used in the SVG.

Player 1
11
Player 2
22

Interactivity Metrics

Animations

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

Player 1
Player 2
Elements with Transform

The number of elements with transform attributes in the SVG.

Player 1
1
Player 2
3

Complexity Metrics

Path Commands

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

Player 1
11
Player 2
111
Max Group Nesting

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

Player 1
Player 2
1
Defs Elements

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

Player 1
4
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