Creative Challenge
"A cactus wearing sunglasses lounging on a tiny desert island."
<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
<defs>
<radialGradient id="skyGrad">
<stop offset="0%" style="stop-color:#FFE4B5"/>
<stop offset="100%" style="stop-color:#87CEEB"/>
</radialGradient>
<linearGradient id="sandGrad" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#F4E4C1"/>
<stop offset="100%" style="stop-color:#D4A76A"/>
</linearGradient>
<linearGradient id="cactusGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#228B22"/>
<stop offset="50%" style="stop-color:#32CD32"/>
<stop offset="100%" style="stop-color:#006400"/>
</linearGradient>
<radialGradient id="waterGrad">
<stop offset="0%" style="stop-color:#00CED1"/>
<stop offset="100%" style="stop-color:#4682B4"/>
</radialGradient>
<pattern id="cactusTexture" x="0" y="0" width="4" height="4" patternUnits="userSpaceOnUse">
<circle cx="2" cy="2" r="0.5" fill="#006400" opacity="0.3"/>
</pattern>
<filter id="shadow">
<feGaussianBlur in="SourceAlpha" stdDeviation="3"/>
<feOffset dx="2" dy="2" result="offsetblur"/>
<feComponentTransfer>
<feFuncA type="linear" slope="0.3"/>
</feComponentTransfer>
<feMerge>
<feMergeNode />
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</defs>
<rect width="300" height="300" fill="url(#skyGrad)"/>
<circle cx="50" cy="50" r="25" fill="#FFD700" opacity="0.9"/>
<circle cx="50" cy="50" r="20" fill="#FFA500" opacity="0.6"/>
<ellipse cx="150" cy="250" rx="145" ry="45" fill="url(#waterGrad)" opacity="0.8"/>
<ellipse cx="150" cy="245" rx="140" ry="40" fill="#4682B4" opacity="0.4"/>
<ellipse cx="150" cy="200" rx="80" ry="25" fill="url(#sandGrad)" filter="url(#shadow)"/>
<ellipse cx="150" cy="195" rx="75" ry="20" fill="#F4E4C1"/>
<g transform="translate(150, 140)">
<ellipse cx="0" cy="20" rx="25" ry="45" fill="url(#cactusGrad)" filter="url(#shadow)"/>
<ellipse cx="0" cy="20" rx="25" ry="45" fill="url(#cactusTexture)"/>
<ellipse cx="-15" cy="0" rx="12" ry="20" fill="url(#cactusGrad)" transform="rotate(-20 -15 0)"/>
<ellipse cx="15" cy="5" rx="10" ry="18" fill="url(#cactusGrad)" transform="rotate(25 15 5)"/>
<circle cx="-3" cy="-15" r="1" fill="#FFB6C1"/>
<circle cx="3" cy="-12" r="1" fill="#FFB6C1"/>
<circle cx="0" cy="-18" r="1.5" fill="#FFB6C1"/>
<g transform="translate(0, -5)">
<rect x="-20" y="-8" width="40" height="16" rx="8" fill="#1a1a1a"/>
<rect x="-18" y="-6" width="36" height="12" rx="6" fill="#333"/>
<ellipse cx="-10" cy="0" rx="8" ry="6" fill="#4B0082" opacity="0.8"/>
<ellipse cx="10" cy="0" rx="8" ry="6" fill="#4B0082" opacity="0.8"/>
<rect x="-1" y="-8" width="2" height="10" fill="#1a1a1a"/>
<circle cx="-10" cy="-2" r="2" fill="#FFF" opacity="0.3"/>
<circle cx="10" cy="-2" r="2" fill="#FFF" opacity="0.3"/>
</g>
<path d="M-2,5 Q0,8 2,5" stroke="#006400" stroke-width="1.5" fill="none"/>
<g transform="translate(-30, 10)">
<ellipse cx="0" cy="0" rx="4" ry="2" fill="#FFE4AD"/>
<path d="M-4,0 Q-6,3 -4,6 Q0,8 4,6 Q6,3 4,0" fill="#FF6347"/>
<circle cx="0" cy="4" r="0.5" fill="#8B4513"/>
</g>
</g>
<g transform="translate(100, 190)">
<circle cx="0" cy="0" r="3" fill="#D4A76A"/>
<circle cx="10" cy="5" r="2" fill="#D4A76A"/>
<circle cx="-8" cy="3" r="2.5" fill="#D4A76A"/>
</g>
<g transform="translate(200, 195)">
<circle cx="0" cy="0" r="2" fill="#F5DEB3"/>
<circle cx="5" cy="2" r="1.5" fill="#F5DEB3"/>
</g>
<g transform="translate(240, 80)">
<ellipse cx="0" cy="0" rx="15" ry="8" fill="#FFF" opacity="0.8"/>
<ellipse cx="-5" cy="0" rx="10" ry="6" fill="#FFF" opacity="0.9"/>
</g>
</svg>
<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" >
<defs>
<radialGradient id="sunGrad" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#FFDD55"/>
<stop offset="100%" stop-color="#FCA311"/>
</radialGradient>
<linearGradient id="sandGrad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#F7E9B9"/>
<stop offset="100%" stop-color="#DDB56E"/>
</linearGradient>
<linearGradient id="cactusBodyGrad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#4CAF50"/>
<stop offset="100%" stop-color="#2E7D32"/>
</linearGradient>
<linearGradient id="cactusShadow" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="rgba(46,125,50,0.9)"/>
<stop offset="100%" stop-color="rgba(27,94,32,0)"/>
</linearGradient>
<linearGradient id="lensGrad" x1="0" y1="0" x2="1" y2="1">
<stop offset="0%" stop-color="#0D0D0D" />
<stop offset="100%" stop-color="#222" />
</linearGradient>
<radialGradient id="lensHighlight" cx="30%" cy="30%" r="30%">
<stop offset="0%" stop-color="#fff" stop-opacity="0.6" />
<stop offset="100%" stop-color="#000" stop-opacity="0" />
</radialGradient>
<pattern id="spinePattern" x="0" y="0" width="8" height="30" patternUnits="userSpaceOnUse" patternTransform="rotate(20)">
<line x1="4" y1="0" x2="4" y2="30" stroke="#DAF7A6" stroke-width="1.5" stroke-linecap="round"/>
</pattern>
<filter id="shadow" x="-20%" y="-20%" width="140%" height="140%" >
<feDropShadow dx="3" dy="4" stdDeviation="3" flood-color="#333" flood-opacity="0.4" />
</filter>
<filter id="gloveShadow" x="-10%" y="-10%" width="120%" height="120%">
<feDropShadow dx="1" dy="1" stdDeviation="1" flood-color="#274E13" flood-opacity="0.5" />
</filter>
</defs>
<!-- Background sky -->
<rect width="300" height="300" fill="url(#sunGrad)" />
<!-- Distant orange horizon glow -->
<ellipse cx="150" cy="240" rx="140" ry="24" fill="#FFBC42" opacity="0.3"/>
<!-- Tiny desert island sand -->
<ellipse cx="150" cy="260" rx="90" ry="30" fill="url(#sandGrad)" filter="url(#shadow)" />
<!-- Small sand texture with splattered shapes & small dots -->
<g opacity="0.35" fill="#CBA94A">
<circle cx="110" cy="255" r="2" />
<circle cx="90" cy="265" r="1.3" />
<circle cx="180" cy="245" r="1.6" />
<circle cx="170" cy="265" r="2" />
<ellipse cx="125" cy="260" rx="3" ry="1" />
<ellipse cx="155" cy="268" rx="2" ry="0.7" />
</g>
<!-- Water waves around island -->
<g stroke="#209CEE" stroke-width="2" fill="none" opacity="0.5">
<path d="M75 270 Q115 260 155 270 Q195 280 235 270" />
<path d="M80 275 Q120 265 160 275 Q200 285 240 275" />
</g>
<!-- Cactus stem shadow at base -->
<ellipse cx="150" cy="230" rx="36" ry="18" fill="url(#cactusShadow)" />
<!-- Cactus main body -->
<g transform="translate(150,160)">
<!-- Main cactus oval -->
<ellipse cx="0" cy="50" rx="32" ry="70" fill="url(#cactusBodyGrad)" filter="url(#shadow)" />
<!-- Side arms -->
<ellipse cx="-25" cy="35" rx="12" ry="40" fill="url(#cactusBodyGrad)" filter="url(#shadow)" />
<ellipse cx="25" cy="45" rx="14" ry="45" fill="url(#cactusBodyGrad)" filter="url(#shadow)" />
<!-- Spine pattern overlay -->
<ellipse cx="0" cy="50" rx="32" ry="70" fill="url(#spinePattern)" />
<ellipse cx="-25" cy="35" rx="12" ry="40" fill="url(#spinePattern)" />
<ellipse cx="25" cy="45" rx="14" ry="45" fill="url(#spinePattern)" />
<!-- Spine highlight lines -->
<path d="M-6 0 Q-2 15 2 0" stroke="#A5D6A7" stroke-width="2" fill="none" opacity="0.5"/>
<path d="M-10 25 Q-6 40 -2 25" stroke="#A5D6A7" stroke-width="1.8" fill="none" opacity="0.5"/>
<path d="M22 20 Q18 35 14 22" stroke="#A5D6A7" stroke-width="2" fill="none" opacity="0.5"/>
<!-- Cactus "face" - sunglasses -->
<g transform="translate(0,20)">
<!-- The sunglasses frame -->
<rect x="-30" y="-5" width="25" height="15" rx="5" ry="5" fill="#102027" stroke="#0A1419" stroke-width="2" filter="url(#shadow)" />
<rect x="5" y="-5" width="25" height="15" rx="5" ry="5" fill="#102027" stroke="#0A1419" stroke-width="2" filter="url(#shadow)" />
<!-- Lenses black gradient -->
<rect x="-28" y="-3" width="21" height="11" rx="4" ry="4" fill="url(#lensGrad)" />
<rect x="7" y="-3" width="21" height="11" rx="4" ry="4" fill="url(#lensGrad)" />
<!-- Lenses highlight -->
<circle cx="-18" cy="2" r="5" fill="url(#lensHighlight)" />
<circle cx="17" cy="2" r="5" fill="url(#lensHighlight)" />
<!-- Bridge -->
<rect x="-5" y="2" width="10" height="2" fill="#0A1419" rx="1" ry="1" />
</g>
<!-- Cactus mouth - small smile -->
<path d="M-10 80 Q0 90 13 75" stroke="#264D1C" stroke-width="2" fill="none" stroke-linecap="round" />
<!-- Top flower -->
<g transform="translate(0,-20)">
<defs>
<radialGradient id="flowerPetalGrad" cx="50%" cy="50%" r="50%">
<stop offset="20%" stop-color="#FFD1DC"/>
<stop offset="100%" stop-color="#E91E63"/>
</radialGradient>
</defs>
<g>
<ellipse cx="0" cy="0" rx="7" ry="15" fill="url(#flowerPetalGrad)" transform="rotate(0)" />
<ellipse cx="0" cy="0" rx="7" ry="15" fill="url(#flowerPetalGrad)" transform="rotate(45)" />
<ellipse cx="0" cy="0" rx="7" ry="15" fill="url(#flowerPetalGrad)" transform="rotate(90)" />
<ellipse cx="0" cy="0" rx="7" ry="15" fill="url(#flowerPetalGrad)" transform="rotate(135)" />
<ellipse cx="0" cy="0" rx="7" ry="15" fill="url(#flowerPetalGrad)" transform="rotate(180)" />
<ellipse cx="0" cy="0" rx="7" ry="15" fill="url(#flowerPetalGrad)" transform="rotate(225)" />
<ellipse cx="0" cy="0" rx="7" ry="15" fill="url(#flowerPetalGrad)" transform="rotate(270)" />
<ellipse cx="0" cy="0" rx="7" ry="15" fill="url(#flowerPetalGrad)" transform="rotate(315)" />
<circle cx="0" cy="0" r="5" fill="#B71C1C" />
</g>
</g>
<!-- Cactus arms "lounging" -->
<g filter="url(#gloveShadow)">
<!-- Left hand rests holding a tiny wooden cocktail chair -->
<rect x="-65" y="65" width="25" height="10" rx="2" ry="2" fill="#8D6E63" />
<rect x="-66" y="55" width="5" height="25" fill="#5D4037" />
<rect x="-43" y="55" width="5" height="25" fill="#5D4037" />
<line x1="-66" y1="65" x2="-48" y2="65" stroke="#5D4037" stroke-width="3" />
<line x1="-66" y1="68" x2="-48" y2="68" stroke="#5D4037" stroke-width="3" />
<!-- Left arm -->
<ellipse cx="-25" cy="35" rx="12" ry="40" fill="url(#cactusBodyGrad)" />
</g>
<g filter="url(#gloveShadow)">
<!-- Right hand holds tropical drink with tiny umbrella -->
<ellipse cx="60" cy="110" rx="12" ry="15" fill="#FF7043" />
<!-- Drink glass wiring -->
<rect x="48" y="95" width="20" height="25" rx="4" ry="4" fill="#FFB74D" />
<rect x="50" y="98" width="16" height="20" fill="#FFCC80" opacity="0.7" rx="4" ry="4" />
<!-- Straw -->
<rect x="60" y="70" width="3" height="40" fill="#E53935" transform="rotate(-20 61.5 90)" />
<!-- Umbrella -->
<path d="M72 68 L58 75 Q65 63 72 68Z" fill="#D81B60" />
<line x1="65" y1="75" x2="65" y2="85" stroke="#A3153C" stroke-width="1.5" />
<!-- Right arm -->
<ellipse cx="25" cy="45" rx="14" ry="45" fill="url(#cactusBodyGrad)" />
</g>
</g>
<!-- Tiny palm tree shadow on sand -->
<g transform="translate(210,215)">
<ellipse cx="0" cy="0" rx="10" ry="3" fill="#5D4037" opacity="0.5"/>
</g>
<!-- Palm tree trunk -->
<rect x="210" y="170" width="6" height="60" fill="url(#sandGrad)" stroke="#4E342E" stroke-width="1" rx="3" ry="3" />
<!-- Palm leaves stylized - overlapping arcs and lines -->
<g fill="none" stroke="#2E7D32" stroke-width="5" stroke-linecap="round" transform="translate(213,170)">
<path d="M0 0 q-20 -40 -10 -45" />
<path d="M0 0 q10 -45 20 -35" />
<path d="M0 0 q-15 -35 -25 -30" />
<path d="M0 0 q5 -35 15 -40" />
</g>
<!-- Tiny crab on sand by cactus foot for whimsy -->
<g transform="translate(120, 255)" fill="#EF5350" stroke="#B71C1C" stroke-width="1">
<ellipse cx="0" cy="0" rx="6" ry="4" />
<circle cx="-4" cy="-3" r="1.2" fill="#FFF" />
<circle cx="3" cy="-3" r="1.2" fill="#FFF" />
<line x1="-6" y1="0" x2="-10" y2="-4" />
<line x1="6" y1="0" x2="10" y2="-4" />
</g>
<!-- Gentle shadow below cactus and objects -->
<ellipse cx="150" cy="230" rx="40" ry="15" fill="rgba(0,0,0,0.2)" />
</svg>
Judge's Analysis
Player 2's submission is more detailed and creative, incorporating additional elements like props, a drink, and a flower on the cactus, enhancing the lounging theme.
While Player 1's image is clean and visually appealing, it is simpler and lacks the nuanced storytelling present in Player 2's design.
Overall, Player 2's composition better adheres to the prompt with added creativity and richness.
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
The total number of shape elements (rect, circle, ellipse, line, polygon, polyline, path) in the SVG.
The number of rectangle elements (rect) in the SVG.
The number of circle elements (circle) in the SVG.
The number of ellipse elements (ellipse) in the SVG.
The number of line elements (line) in the SVG.
The number of polygon elements (polygon) in the SVG.
The number of path elements (path) in the SVG.
The number of group elements (g) in the SVG.
Visual Effects Metrics
The number of gradient definitions (linearGradient, radialGradient) in the SVG.
The number of pattern definitions (pattern) in the SVG.
The number of filter definitions (filter) in the SVG.
The number of mask definitions (mask) in the SVG.
The number of clipping path definitions (clipPath) in the SVG.
The number of elements with opacity attributes in the SVG.
The number of elements with stroke attributes in the SVG.
Colors Metrics
The number of unique colors used in the SVG.
Interactivity Metrics
The number of animation elements (animate, animateMotion, animateTransform, set) in the SVG.
The number of elements with transform attributes in the SVG.
Complexity Metrics
The total number of path commands in all path elements (M, L, C, Q, etc.) in the SVG.
The maximum nesting level of group elements (g) in the SVG.
The number of elements defined within the defs element in the SVG.
The number of use elements (use) in the SVG.
Text Metrics
The number of text elements (text) in the SVG.
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.