Game Art & Design Jul 13, 2026

Summer Steam Capsule Gradient Band Readability Pass Before October Next Fest - 2026 Art Workflow

2026 Game Art workflow—summer Steam capsule gradient band readability pass before October Next Fest; B1–B6 gates, summer_capsule_gradient_receipt_v1.json, ImageMagick banding detect, 616×353 squint test.

By GamineAI Team

Summer Steam Capsule Gradient Band Readability Pass Before October Next Fest - 2026 Art Workflow

Pixel-art hero for summer Steam capsule gradient band readability pass before October Next Fest art workflow 2026

Late July 2026: art regrades the October fest capsule for summer warmth—lifted mids, tighter vignette, sun-bleached sky gradient behind the logo. July signup receipt filed; October RC label evening pinned fest-demo-2026-10-rc1. Store upload goes live. August wishlist threads: "capsule looks cheap on phone." Engineering: gameplay looks fine—because in-game tonemapping hides 8-bit gradient steps the store JPEG amplifies.

July–August 2026 HDR regrades and sRGB export compress wide sky ramps into visible banding stripes on Steam's 1232×706 main capsule and 616×353 discovery thumbnails. Banding is a CTR failure mode that hits before Wednesday smoke fails—players never download a demo they scroll past.

This Game Art & Design workflow is the summer gradient band second pass—not February safe-zone Z (crop/composition), not palette lock worksheet (three swatch discipline), not winter HDR tone (false bloom downscale). It delivers 616×353 gradient band squint test, ImageMagick banding detect sketch, gates B1–B6, and summer_capsule_gradient_receipt_v1.json before summer freeze store upload.

Non-repetition note: February capsule Z owns 84% safe-zone overlays after winter master swaps. Palette lock owns three hex swatches. October safe zones five gates own gallery composition. This URL owns summer_capsule_gradient_receipt_v1 for HDR regrade gradient banding on capsule sky/ground ramps before October fest traffic.

Pair July signup trend, October RC label evening, cluster #1–#6, forward #8 jq March sprint weekly diff.

Why this matters now (July–August 2026 HDR regrade season)

  1. Summer capsule swaps — Teams upload fest variant B after signup without re-proofing gradient ramps—only logo position.
  2. HDR→sRGB crush — Wide 16-bit sky grades band when exported to Steam's JPEG pipeline; in-engine viewport looks smooth.
  3. Phone discovery CTR — Store grid shows ~616×353 effective read—banding reads as "mobile port" before title is parsed.
  4. Engineering blind spotContent-freeze manifest pins build_label but not marketing export profile.
  5. BUILD_RECEIPT gapoctober_rc_label_ok true does not imply summer_capsule_gradient_ok.

Direct answer: Export main capsule 1232×706; run 616×353 squint test on sky/ground gradient bands; measure banding with ImageMagick row-variance sketch; cross-check palette lock; file summer_capsule_gradient_receipt_v1.json with B1–B6 GREEN before summer freeze store metadata upload.

Who this workflow is for

Audience Outcome
Beginner artist 616×353 squint test in five minutes
Solo producer Block capsule upload without B receipt
Working dev Wire summer_capsule_gradient_ok on BUILD_RECEIPT
Team post-signup Second pass after July signup store art swap

Time: ~75 minutes first summer regrade capsule; ~25 minutes per variant once banding script exists.

Format ladder (October store art cluster)

Artifact Role
Palette lock worksheet Three swatches before capture
October safe zones Gallery composition gates
This workflow Summer gradient band B1–B6 after HDR regrade
February capsule Z cousin Winter crop safe-zone pass
October RC label evening Label + content-freeze manifest
14 screenshot tools Capture tooling listicle

Order: July signupRC label eveningthis gradient pass → summer content freeze → Wednesday metadata diff.

Beginner path — 616×353 gradient band squint test

Steam's discovery grid often presents your main capsule at roughly half linear resolution616×353 is half of 1232×706. Beginners run this before any ImageMagick script:

  1. Export capsule_main_1232x706_summer_v2.png from your art tool.
  2. Resize to 616×353 (bicubic—matches typical downscale).
  3. Zoom to 200% on a 1080p monitor at arm's length.
  4. Trace the sky or ground gradient band behind logo/title with your eyes—count visible steps.
  5. Pass: ≤3 obvious steps across the band at 200% zoom. Fail: zebra stripes or posterized blocks.

Copy checklist into release-evidence/marketing/summer-capsule-gradient-checklist-2026.md:

# October 2026 summer capsule gradient pass
build_label: fest-demo-2026-10-rc1
palette_lock: release-evidence/marketing/palette-lock-2026.md

[ ] B1 — palette lock swatches A/B/C still within ΔE tolerance after regrade
[ ] B2 — HDR master path + export ICC profile documented
[ ] B3 — 616×353 squint test: ≤3 steps on primary gradient band
[ ] B4 — ImageMagick banding metric below team threshold
[ ] B5 — 360px-wide phone mock: title readable over gradient
[ ] B6 — summer_capsule_gradient_receipt_v1.json filed
[ ] BUILD_RECEIPT summer_capsule_gradient_ok == true

Beginner mistake: Judging banding at 100% on a 4K monitor—Steam shoppers see half-res JPEG, not your PSD.

Gates B1–B6

Gate Name Pass criteria
B1 Palette crosswalk Swatches A/B/C from palette lock within ΔE2000 < 8 after regrade
B2 Master lineage summer_hdr_master_v2.png path + export profile (sRGB, quality 90–95) in receipt
B3 Half-res squint 616×353 resize passes ≤3-step rule on primary gradient band
B4 Banding metric ImageMagick row-variance score below team threshold (see script)
B5 Phone overlay 360px-wide mock: logo/title readable over gradient (contrast ≥4.5:1 on title bbox)
B6 Receipt filed summer_capsule_gradient_receipt_v1.json + BUILD_RECEIPT row

B3–B5 are upload blockers when RED. B1 YELLOW only when regrade intentionally shifts hero swatch—document palette_waiver in receipt.

Working dev path — ImageMagick banding detect sketch

Store script as release-evidence/marketing/scripts/detect_capsule_gradient_banding.sh:

#!/usr/bin/env bash
# Banding heuristic: high row-to-row variance in luminance along gradient axis
set -euo pipefail
INPUT="${1:?capsule png}"
THRESH="${2:-0.042}"

# Half-res like Steam grid
HALF="/tmp/capsule_616x353.png"
magick "$INPUT" -resize 616x353! "$HALF"

# Extract red channel as proxy; compute mean absolute row delta
SCORE=$(magick "$HALF" -channel R -separate +channel -scale 1x353! \
  -format "%[fx:mean]" info:)

# Simpler pass: count adjacent rows with delta > 3/255 in center 60% crop
DELTAS=$(magick "$HALF" -crop 60%x100%+20%+0 +repage \
  -colorspace Gray -depth 8 txt:- | awk '
    NR>1 && prev!="" {
      split($0,a,": "); split(a[2],rgb,",");
      g=rgb[2]; if (g-prev > 3 || prev-g > 3) n++
      prev=g
    }
    NR>1 { split($0,a,": "); split(a[2],rgb,","); prev=rgb[2] }
    END { print n+0 }')

if [ "${DELTAS:-999}" -gt 12 ]; then
  echo "FAIL: banding row spikes=$DELTAS (max 12)"
  exit 1
fi
echo "OK: banding row spikes=$DELTAS"

Interpretation: This is a heuristic, not perceptual science—calibrate DELTAS threshold on one known-good and one known-bad capsule from your art history. Log banding_row_spikes in receipt metrics.

Krita / Photoshop dither fix (when B4 fails)

Technique When to use
Add 0.5% noise on gradient layer only Sky bands after sRGB export
16-bit workflow end-to-end Re-export from HDR master, dither on flatten
Split gradient into 2-stop + soft light overlay Extreme sun-bleach regrades
Reduce saturation 5–8% Banding masked by oversaturated ramps

Re-run B3–B4 after fix—do not upload on "looks fine zoomed out."

Worked example — summer sky regrade (synthesized)

Starting state: capsule_main_1232x706_may_v1.png passed palette lock in May. July art lifts sky swatch A ~12% luminance for "summer warmth."

Step Action Result
1 ΔE sample swatch A on regrade 9.2 → B1 YELLOW
2 Producer waiver: intentional summer lift; update palette-lock row B1 GREEN with note
3 Export sRGB PNG quality 93 B2 GREEN
4 616×353 squint 6 steps visible → B3 RED
5 Add 0.6% noise on sky layer only; re-export B3 2 steps → GREEN
6 detect_capsule_gradient_banding.sh banding_row_spikes=9 → GREEN
7 360px mock white title on sky contrast 4.2 → B5 RED
8 Darken gradient 8% behind title bbox contrast 5.3 → GREEN
9 File summer_capsule_gradient_receipt_v1.json B6 GREEN

Total elapsed: ~90 minutes first time; ~30 minutes on summer_v3 tweak after script exists.

CI GitHub Actions sketch (optional B4 regression)

name: capsule-gradient-banding
on:
  pull_request:
    paths:
      - 'release-evidence/marketing/capsule_main_*.png'
jobs:
  banding:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: banding detect
        run: |
          chmod +x release-evidence/marketing/scripts/detect_capsule_gradient_banding.sh
          ./release-evidence/marketing/scripts/detect_capsule_gradient_banding.sh \
            release-evidence/marketing/capsule_main_1232x706_summer_v2.png

Fail PR when marketing exports change without re-running B gates—pairs Addressables hash lockfiles engineering cousin.

jq receipt merge (BUILD_RECEIPT wiring)

jq -e --slurpfile gr summer_capsule_gradient_receipt_v1.json '
  .summer_capsule_gradient_ok == $gr[0].summer_capsule_gradient_ok
  and .october_rc_label_ok == true
  and .october_fest_signup_ok == true
' BUILD_RECEIPT.json

Log banding_row_spikes and squint_step_count in receipt metricsThursday row review can diff summer_capsule_gradient_ok week over week.

B2 export profile table

Field Recommended Fail signal
Color space sRGB IEC61966-2.1 Display P3 export without conversion
Bit depth 8-bit PNG after dither Direct 16-bit upload without flatten
JPEG quality 92–95 if JPEG required Quality <85 on sky-heavy capsule
Sharpening None on export Unsharp mask on gradient layers

Document in receipt export_profile block—pairs October RC label content_freeze_manifest art path.

summer_capsule_gradient_receipt_v1.json (schema)

{
  "schema": "summer_capsule_gradient_receipt_v1",
  "iso_week": "2026-W29",
  "fest_name": "Steam Next Fest October 2026",
  "build_label": "fest-demo-2026-10-rc1",
  "gates": {
    "B1": "GREEN",
    "B2": "GREEN",
    "B3": "GREEN",
    "B4": "GREEN",
    "B5": "GREEN",
    "B6": "GREEN"
  },
  "evidence": {
    "palette_lock": "release-evidence/marketing/palette-lock-2026.md",
    "summer_hdr_master": "release-evidence/marketing/summer_hdr_master_v2.png",
    "capsule_main_export": "release-evidence/marketing/capsule_main_1232x706_summer_v2.png",
    "half_res_proof": "release-evidence/marketing/capsule_616x353_squint_proof.png",
    "banding_script_log": "release-evidence/marketing/banding_detect_log.txt"
  },
  "export_profile": {
    "color_space": "sRGB",
    "format": "PNG",
    "jpeg_quality": null
  },
  "metrics": {
    "banding_row_spikes": 8,
    "squint_step_count": 2,
    "title_contrast_ratio": 5.1
  },
  "october_rc_label_receipt": "release-evidence/03-builds/october-rc/2026-W28/october_rc_branch_label_receipt_v1.json",
  "summer_capsule_gradient_ok": true,
  "next_milestone": "summer content freeze store upload"
}

BUILD_RECEIPT root rows (same commit)

{
  "build_label": "fest-demo-2026-10-rc1",
  "october_rc_label_ok": true,
  "october_fest_signup_ok": true,
  "summer_capsule_gradient_ok": true,
  "summer_capsule_gradient_receipt": "release-evidence/marketing/summer_capsule_gradient_receipt_v1.json",
  "summer_content_freeze_ok": false
}

Set summer_content_freeze_ok after L5 content-freeze manifest—gradient pass is art gate, freeze is engineering gate.

verify_summer_capsule_gradient.sh (sketch)

#!/usr/bin/env bash
set -euo pipefail
RECEIPT="${1:-summer_capsule_gradient_receipt_v1.json}"
BUILD="${2:-BUILD_RECEIPT.json}"

jq -e '
  .summer_capsule_gradient_ok == true
  and (.gates | .B1, .B2, .B3, .B4, .B5, .B6 | . == "GREEN")
' "$RECEIPT"

jq -e --slurpfile su "$RECEIPT" '
  .summer_capsule_gradient_ok == $su[0].summer_capsule_gradient_ok
  and .october_rc_label_ok == true
' "$BUILD"

test -f "$(jq -r '.evidence.half_res_proof' "$RECEIPT")"
echo "OK: summer capsule gradient gates GREEN"

February Z vs summer B comparison (cousin art passes)

Check February Z (winter crop) Summer B (HDR regrade)
Primary failure Logo in outer 8% Gradient banding at half-res
Beginner test 84% overlay 616×353 squint
Receipt february_capsule_safe_zone_receipt_v1 summer_capsule_gradient_receipt_v1
Metric Overlay screenshot banding_row_spikes
Pairs tone pass Winter HDR Palette lock
Upload blocker Z2–Z4 B3–B5

Run both when February alumni ship October fest with summer regrade—Z for crop, B for ramps.

Proof table

Evidence Proves Fail signal
palette_lock crosswalk B1 color discipline Three unrelated games on one page
HDR master path B2 reproducible export "Final_final_v7.psd" only on one laptop
616×353 squint PNG B3 shopper view Banding only visible at 4K 100%
banding_detect_log B4 objective gate Script never run
360px phone mock B5 title over gradient White title on yellow band
Gradient receipt B6 team latch Verbal "art approved"

Scenarios A–G

ID Situation Move
A Standard summer regrade Full B1–B6 before upload
B No palette lock yet Run worksheet first—B1 blocker
C B4 fails, B3 passes Add dither; re-export; re-run metric
D Animated GIF capsule Pair GIF loop pass—B gates on static keyframe
E Solo dev, no ImageMagick B3 squint + manual log; document b4_manual_waiver
F Upload before receipt File retroactively; consider store revert if banding viral in Discord
G February Z alumni Run B even if Z passed—regrade changes ramps not crops

Producer upload workflow (75 minutes)

Time Action Gate
0:00 Confirm october_rc_label_ok + signup receipt Prereq
0:10 Palette ΔE sample on regrade B1
0:25 Export 1232×706 + document profile B2
0:35 616×353 squint + screenshot proof B3
0:50 Run banding script B4
1:00 360px phone mock B5
1:15 Write receipt JSON B6
1:20 Producer sign-off → Steam upload

Block upload when vacation handoff lists art owner offline without delegate.

Partner / publisher diligence zip (post-pass)

When co-dev partners or publishers request store art proof before October fest marketing spend, attach a pointer-first zip—not raw PSDs:

october-2026-summer-capsule-gradient-proof.zip
├── summer_capsule_gradient_receipt_v1.json
├── capsule_616x353_squint_proof.png
├── banding_detect_log.txt
├── palette-lock-2026.md (excerpt)
└── README.txt  → "B1–B6 GREEN 2026-07-13; build_label fest-demo-2026-10-rc1"

Email subject: <Game> — October 2026 summer capsule gradient receipt (B1–B6)

Body one-liner:

Gradient band pass filed against fest-demo-2026-10-rc1; half-res squint + banding script GREEN. RC label receipt path: october_rc_branch_label_receipt_v1.json. Next: summer content freeze per RC label L5.

Partners care that marketing exports match engineering label—same discipline as Q3 diligence packets.

Engine / DCC notes by toolchain

Tool Banding risk Mitigation
Blender compositor Wide ramp in 16-bit PNG Dither on composite; trim sheet swatch match
DaVinci Resolve HDR grade → sRGB crush Use winter tone cousin downscale discipline
Photoshop Gradient tool 8-bit Noise layer 0.5%; smart object from 16-bit master
Krita Linear export Convert to sRGB before flatten
Unity URP screenshot Tonemapped viewport ≠ store Export from marketing PSD, not raw capture

Micro-studio time budget

Phase Solo artist Artist + producer
B1 palette check 15 min 10 min
B2 export 20 min 15 min
B3 squint 10 min 10 min
B4 script 25 min 15 min
B5 phone mock 15 min 15 min
B6 receipt 15 min 10 min
Total ~1.75 h ~1.25 h

Cheaper than fest-week "why does our capsule look bad on phone" threads—common July–August pattern.

Common mistakes

Mistake Fix
Judge at full res only B3 616×353 mandatory
Skip palette after regrade B1 crosswalk
Sharpen gradient export B2 profile—no unsharp on sky
Trust in-engine viewport Store JPEG ≠ gameplay tonemap
Upload before RC label october_rc_label_ok prereq on BUILD_RECEIPT
Conflate with safe-zone Z Z = crop; B = ramps—both may be needed

Counterarguments (honest limits)

"Steam recompresses anyway."
True—which amplifies banding; fix at source export.

"Our capsule is illustration, not gradient."
Vignette and fog still band—run B4 on largest soft ramp region.

"Same as palette lock."
Palette owns which colors; this pass owns smooth transitions between them.

"ImageMagick heuristic is fake science."
Agreed—pair with B3 squint; script catches regressions in CI, not taste.

Outbound references

Related GamineAI reads

Key takeaways

  1. July–August 2026 HDR regrades push gradient banding on store capsules before gameplay looks wrong.
  2. Beginners run 616×353 squint test—half linear resolution of 1232×706 main capsule.
  3. Gates B1–B6 tie palette crosswalk, export profile, squint, metric, phone mock, and receipt.
  4. summer_capsule_gradient_receipt_v1.json records evidence before summer freeze upload.
  5. summer_capsule_gradient_ok on BUILD_RECEIPT latches art discipline—orthogonal to october_rc_label_ok.
  6. Pair palette lock for swatches; this pass for ramps.
  7. February capsule Z cousin—run both when crop and regrade change.
  8. ImageMagick banding_row_spikes is a calibrated heuristic—not a substitute for B3 squint.
  9. Forward #8 jq March sprint weekly diff when post-fest engineering overlaps October prep.
  10. Post-July signup: schedule this pass before CTR-sensitive store swaps.
  11. No invented CTR percentages—qualitative banding failure pattern only.
  12. Dither/noise fixes target gradient layers only—not full capsule sharpen.
  13. RC label evening prereq: label truth before art export paths file.

FAQ

Is 616×353 the exact Steam grid size?

It is half of main capsule 1232×706—a practical squint proxy for discovery downscale, not an official Valve pixel spec.

Can we skip B4 if B3 passes?

Solo studios may waive B4 with b4_manual_waiver—teams with CI should keep the script for regression.

How does this differ from February safe-zone Z?

Z tests crop/composition overlays; B tests gradient banding on HDR regrades—complementary passes.

Does this replace palette lock?

No—B1 crosswalks palette lock; run worksheet first if swatches never locked.

When should we run this vs RC label evening?

RC label evening first (label + freeze manifest); this pass before store capsule upload on summer variant.

What if we only change the header 460×215?

Run B3–B4 on header export too—sky bands appear in small caps when vignette is heavy.

Does banding affect wishlist CTR?

Qualitative store threads link muddy gradients to "low effort" reads—fix before fest traffic, not during.

Can we run this before July signup?

Yes—B gates are independent of signup; July signup trend forward #7 assumes post-signup store swap timing.

RED / YELLOW / GREEN routing (B gates)

Signal Route
B1 RED Re-run palette lock or document waiver
B3 RED Dither/re-export; do not upload
B4 RED Fix export profile; re-run script
B5 RED Move title or darken gradient behind logo
B2 YELLOW ICC profile ambiguous—document in receipt
All GREEN File receipt; upload; declare freeze with engineering

Closing

Summer capsule gradient banding is a silent CTR tax—engineers see smooth gameplay while shoppers see posterized skies at 616×353. File summer_capsule_gradient_receipt_v1.json, run squint + metric gates, and crosswalk palette lock after every HDR regrade. Prevention beats fest-week Discord screenshots—pair July signup and RC label evening so art paths sit on the same build_label as engineering freeze.