---
title: Make a consistent icon set and item catalog
display: 'Make a consistent *icon set* and item catalog'
nav_title: Icon set and item catalog
summary:
  - "Eight ability icons for Cinderthrone's two rival factions, then eight inventory weapons with tiers and five chromas of one halberd, each set from one approved style anchor."
  - "Approve the anchor at full size and at 32 px, then generate every other icon or item with it attached and only one line changed; tiers and chromas are edits of an approved cell."
  - "Check the set at 64 px, 32 px, in grey and on the slot color before you accept it: the weak icon only shows there, and it is redone alone."
description: Produce a matching set of ability icons and a growing item catalog with tiers and chromas by approving one style anchor at full and small size, then generating every other cell from it, one job per line.
section: playbooks
order: 15
type: playbook
topic: Games
level: Scale
roles: [artist, developer]
time: { read: 20, do: 50, wait: 10 }
needs: ["Any plan with credits", "A list of the abilities or items you need (for a catalog, in a spreadsheet or CSV)", "Python with Pillow for the size checks (optional)"]
last_verified: 2026-10-16
models_checked: ["GPT Image 2.5 Sunburst", "GPT Image 2.5 Flare", "Nano Banana 2.1"]
hero: playbooks/game-icon-set/hero-cinderthrone-ability-icons.webp
related: [edit-one-thing-campaign, game-ui-kit, remove-and-replace-backgrounds, batches-loops-and-logic, run-workflows-from-code-and-agents]
run_in: [model_openai-gpt-image-2-5-sunburst, model_openai-gpt-image-2-5-flare]
pdf: true
# the use case made, on scenario.com/explorations, and the platform workflows that run it
made_with:
  - { slug: pixel-vfx-forge, title: "Pixel VFX Forge" }
run_with:
  - { id: wflow_oJRwKqWfHEjowxN4X9WyT99s, name: "Icon Generator" }
  - { id: wflow_icon-set-forge, name: "Icon Set Forge" }
  - { id: wflow_ALisLRauggVTGvHNKLqB6X4X, name: "Collection of 3D Icons" }
thumb: playbooks/game-icon-set/thumb.webp
video: tutorials/game-icon-set.mp4
chapters:
  - { at: 0, title: "The icon set to make", image: "/media/images/playbooks/game-icon-set/ch-01-the-icon-set-to-make.webp" }
  - { at: 16, title: "One icon first: the anchor", image: "/media/images/playbooks/game-icon-set/ch-02-one-icon-first-the-anchor.webp" }
  - { at: 32.5, title: "One bold subject, plain background", image: "/media/images/playbooks/game-icon-set/ch-03-one-bold-subject-plain-background.webp" }
  - { at: 55, title: "Attach the anchor", image: "/media/images/playbooks/game-icon-set/ch-04-attach-the-anchor.webp" }
  - { at: 65, title: "Change one line, nothing else", image: "/media/images/playbooks/game-icon-set/ch-05-change-one-line-nothing-else.webp" }
  - { at: 85, title: "64 px, 32 px and cooldown grey", image: "/media/images/playbooks/game-icon-set/ch-06-64-px-32-px-and-cooldown-grey.webp" }
  - { at: 121, title: "A list, one template, one anchor", image: "/media/images/playbooks/game-icon-set/ch-07-a-list-one-template-one-anchor.webp" }
  - { at: 151.5, title: "Tiers and chromas are edits", image: "/media/images/playbooks/game-icon-set/ch-08-tiers-and-chromas-are-edits.webp" }
  - { at: 165, title: "Run it as an App: Icon Set Forge", image: "/media/images/playbooks/game-icon-set/ch-09-run-it-as-an-app-icon-set-forge.webp" }
  - { at: 175, title: "Recap", image: "/media/images/playbooks/game-icon-set/ch-10-recap.webp" }
steps:
  - title: "One icon first: the anchor"
    text: "Every other icon copies the style anchor, so it's the one to get right. Create › Images › GPT Image 2.5 Sunburst, Image Count 2, Dimensions 1:1, Quality high, Background opaque, because the game draws the frame on top."
  - title: "One bold subject, plain background"
    text: "Ask for one bold subject seen whole on a plain dark background, and say it must read at 32 pixels. The first takes painted the halberd over a burning city and became a smear at 32 pixels, so the retake dropped the scenery."
    prompt: |-
      Ability icon for a fantasy battle arena game: Sunbrand, the Ember Warden's halberd strike. One large halberd head of molten glass, seen whole, angled diagonally from lower left to upper right, its edge trailing a short crescent of fire. The halberd head fills most of the square and reads as one bold silhouette at 32 pixels. Plain dark background: deep charcoal with a soft warm glow behind the blade and a vignette toward the corners; no scenery, no buildings, no banners. Strong value contrast between the blade and the background. Square, full bleed, no frame, no border, no text, no letters. Style: painterly champion splash art at the level of the top arena games: confident brushwork, crisp edge control, strong diagonal composition, gold and teal rim light, atmospheric depth, rich armor and cloth detail. No text.
  - title: "Attach the anchor"
    text: "For the other seven, switch to GPT Image 2.5 Flare, Image Count 1, same settings. Reference Images › Select from Library › the approved anchor."
  - title: "Change one line, nothing else"
    text: "The template stays the same; only the ability line and the glow color change, gold for Sunforged, teal for Tidebound. \"Do not copy its object\" stops it cloning the halberd. This is the template filled in for the Coral Trident."
    prompt: |-
      The reference image is the approved style anchor of this ability icon set: match its painterly brushwork, edge control, plain dark background with a soft glow behind the subject, vignette, value contrast, gold and teal rim light, and how much of the square the subject fills. Do not copy its object.

      Ability icon for a fantasy battle arena game: Coral Trident, a trident of pale coral and light thrusting diagonally upward through sea spray. One bold silhouette that reads at 32 pixels, glow in bioluminescent teal. Square, full bleed, no frame, no border, no scenery, no text, no letters.
  - title: "64 px, 32 px and cooldown grey"
    text: "Lay the set out the way players see it: at 64 pixels, at 32 and in grey, the way an ability looks on cooldown. When one icon fails small, rewrite only its line and run only that job again."
  - title: "A list, one template, one anchor"
    text: "For a catalog that grows for months, keep the item list in a file and run one job per row with the same template and one approved longsword as the anchor. Sunburst won the anchor shoot-out on transparent backgrounds: Flare reversed the angle and Nano Banana painted a background."
  - title: "Tiers and chromas are edits"
    text: "Images, Reference Images: the approved common longsword. Keep the same object and silhouette and change only the materials and glow; this is the template filled in for the rare tier."
    prompt: |-
      Upgrade the game icon in the reference image to its rare tier. Keep exactly the same object, silhouette, three-quarter angle, diagonal placement, painterly rendering, top-left light and fill of the square. Change only materials and glow: polished silver steel instead of iron, small inset blue sapphires, a faint cool blue glow along the edges. Transparent background, no frame, no cast shadow, no text.
agent_steps:
  - title: "Connect the Scenario MCP"
    text: "Connect your agent and sign in once at [mcp.scenario.com](https://mcp.scenario.com). Then tell it which Scenario team and project to use, so every file lands there."
  - title: "Give the agent the files"
    text: "For the ability bar, the list of abilities with one line each and its glow color (gold for Sunforged, teal for Tidebound). For a catalog, items.csv with one row per item and the template saved as template.txt. A local agent reads both from your folder."
  - title: "Brief the agent: the anchor"
    text: "Every other icon copies the anchor, so it is the one to get right. The first takes painted the halberd over a burning city and became a smear at 32 pixels; this prompt dropped the scenery."
    prompt: |-
      Make the style anchor of the ability bar with GPT Image 2.5 Sunburst (model_openai-gpt-image-2-5-sunburst): two images, square (1:1), quality "high", background "opaque" (the game draws the frame on top). Quote the cost with a dry run first and wait for my go.

      Prompt, word for word:
      Ability icon for a fantasy battle arena game: Sunbrand, the Ember Warden's halberd strike. One large halberd head of molten glass, seen whole, angled diagonally from lower left to upper right, its edge trailing a short crescent of fire. The halberd head fills most of the square and reads as one bold silhouette at 32 pixels. Plain dark background: deep charcoal with a soft warm glow behind the blade and a vignette toward the corners; no scenery, no buildings, no banners. Strong value contrast between the blade and the background. Square, full bleed, no frame, no border, no text, no letters. Style: painterly champion splash art at the level of the top arena games: confident brushwork, crisp edge control, strong diagonal composition, gold and teal rim light, atmospheric depth, rich armor and cloth detail. No text.

      Show me both takes at full size, at 64 pixels and at 32 pixels.
  - title: "Brief the agent: the other seven"
    prompt: |-
      Use the approved anchor for the other seven abilities with GPT Image 2.5 Flare (model_openai-gpt-image-2-5-flare): referenceImages set to [the anchor's asset ID], one image each, background "opaque", quality "high". Keep the template below word for word; change only the ability line and the glow color, nothing else. Start all seven with wait: false and collect them with one jobs_wait. Quote the total first and wait for my go.

      The template filled in for the Coral Trident, word for word:
      The reference image is the approved style anchor of this ability icon set: match its painterly brushwork, edge control, plain dark background with a soft glow behind the subject, vignette, value contrast, gold and teal rim light, and how much of the square the subject fills. Do not copy its object.

      Ability icon for a fantasy battle arena game: Coral Trident, a trident of pale coral and light thrusting diagonally upward through sea spray. One bold silhouette that reads at 32 pixels, glow in bioluminescent teal. Square, full bleed, no frame, no border, no scenery, no text, no letters.
  - title: "Check the bar at 64, 32 and in grey"
    text: "Accept when brushwork, glow and value contrast match across the bar, each subject is one bold shape that fills most of the square, and each icon reads at 32 pixels and in grey, the way it looks on cooldown. Reject scenery, a second subject, a cropped shape, an icon that melts into the background in grey, or two icons with one silhouette at 32 pixels."
    prompt: |-
      Lay the eight icons out in a row at 64 pixels, at 32 pixels and in greyscale, and show me the sheet. Tell me which icons fail and why. For a failing icon, rewrite only its ability line and rerun only that job.
  - title: "A catalog with tiers"
    text: "For a catalog that grows for months, one template and one approved longsword anchor, run on GPT Image 2.5 Sunburst for every cell: on transparent cells, Flare reversed the diagonal and Nano Banana 2.1 painted a background."
    prompt: |-
      Make the catalog anchor with GPT Image 2.5 Sunburst (model_openai-gpt-image-2-5-sunburst), 1024 x 1024, background "transparent". Prompt, word for word:
      Game inventory icon of a forged iron longsword with a leather-wrapped grip, a plain crossguard and a round sun-disc pommel, laid diagonally from lower left to upper right. Single object, centered, three-quarter view, filling about 80 percent of the square. Painterly fantasy game item art: confident brushwork, crisp edge control, gold and teal rim light, rich material detail, warm key light from the top left. Transparent background, no frame, no cast shadow, no text.

      When I approve it, read items.csv and run one job per row with the approved anchor in referenceImages, 1024 x 1024, quality "medium", background "transparent", one image, with wait: false, then one jobs_wait. The prompt is template.txt with {item} replaced by the row's item:
      Game inventory icon of {item}. Match the reference icon exactly in style: same painterly fantasy rendering, brushwork, edge control, gold and teal rim light, warm top-left key light, palette saturation, three-quarter view, the same diagonal placement from lower left to upper right and the same fill of the square (about 80 percent). Draw only the new object, not the sword. Transparent background, no frame, no cast shadow, no text.

      For the rare tier of the longsword, use the approved longsword as the only reference and this prompt, word for word:
      Upgrade the game icon in the reference image to its rare tier. Keep exactly the same object, silhouette, three-quarter angle, diagonal placement, painterly rendering, top-left light and fill of the square. Change only materials and glow: polished silver steel instead of iron, small inset blue sapphires, a faint cool blue glow along the edges. Transparent background, no frame, no cast shadow, no text.

      Quote one row first and wait for my go before the batch.
  - title: "File the set and report"
    prompt: |-
      Check that every catalog cell has clean transparency with no haze, reads at 32 pixels on the slot color, and that each tier overlays its base cell with only the materials and glow changed. Then create one collection for the ability bar and one for the catalog, add the kept icons, and write a receipt per row: item id, job ID, asset ID and cost. Report the models used, which cells you redid and the total cost spent.
updated: 2026-10-16
canonical: https://learn.scenario.com/playbooks/game-icon-set
---

Last updated: 2026-10-16

# Make a consistent icon set and item catalog

> Produce a matching set of ability icons and a growing item catalog with tiers and chromas by approving one style anchor at full and small size, then generating every other cell from it, one job per line.

In short:

- Eight ability icons for Cinderthrone's two rival factions, then eight inventory weapons with tiers and five chromas of one halberd, each set from one approved style anchor.
- Approve the anchor at full size and at 32 px, then generate every other icon or item with it attached and only one line changed; tiers and chromas are edits of an approved cell.
- Check the set at 64 px, 32 px, in grey and on the slot color before you accept it: the weak icon only shows there, and it is redone alone.


Icons for Cinderthrone, a fantasy battle arena game in painterly splash-art style, in two parts. Part 1 makes eight ability icons for the action bar: four for the fire-and-gold Sunforged faction, four for the sea-born Tidebound, with no odd one out in brushwork, light or how much of the square the subject fills. Part 2 turns a list file into an inventory catalog that grows for months: eight weapons with common, rare and epic tiers, and five chromas (color variants) of a cosmetic halberd. Both start from one approved "style anchor".

:::note As of October 2026
The models, settings and screens in this article are the ones Scenario offered in October 2026. New models and updates arrive often, so check the app for newer options before you choose.
:::

![Eight square ability icons in two rows: a molten halberd, a bursting stained-glass sun, a fire-ringed shield and a war horn in gold and orange; a coral trident, a pearl throne rising from a whirlpool, a pearl on a wave and a sunken crown in teal](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/f854eac9b9da2b1e67ac6237cdda68ced329c3b207df184261b2d4eed4b86025.webp "Eight icons, one style anchor. Sunforged on top, Tidebound below.")

## The brief

| Field | Part 1: ability icons | Part 2: item catalog with tiers |
|---|---|---|
| Goal | 8 ability icons for an arena game's action bar, 4 per faction | 8 weapons with common, rare and epic tiers, plus 5 chromas of one cosmetic halberd |
| Format | 1024x1024 masters, opaque square, full bleed; the frame comes from the game UI; shown at 64 and 32 px | 1024x1024 PNG: transparent for the weapons, plain light grey for the halberd |
| Fixed | Painterly brushwork, plain dark background with a soft glow behind the subject, vignette, gold and teal rim light, one bold subject filling most of the square | Weapons: painterly style, rim light, top-left key light, diagonal placement, fill. Halberd: shape, framing, light, background |
| May vary | The subject; the glow color (warm gold for Sunforged, teal for Tidebound) | The weapon in the slot; materials and glow per tier; colors per chroma |
| Accept when | Side by side, no icon stands out in style or size; each reads at 32 px and in the grey cooldown state | Every cell reads as the same set at full size and at 32 px; tiers and chromas overlay their base cell |

The factions and champions are the same as in the faction reskin of [Seasonal and market variants of one approved shot](https://learn.scenario.com/playbooks/edit-one-thing-campaign.md#part-3-a-faction-reskin).

## Approach

**Part 1, ability icons:**

:::flow
Style anchor | GPT Image 2.5 Sunburst, 2 takes | image
Approve | 1024 px, 32 px and grey |
Other icons | GPT Image 2.5 Flare, anchor attached | image
Size test | 64 px, 32 px, cooldown grey |
Retake | The odd one out, alone | image
:::

**Part 2, item catalog:**

:::flow
List file | One line per item in a CSV | text
Style anchor | Shoot-out, one approved cell at high | image
Template run | One slot, anchor attached, one job each | image
Tiers and chromas | Edit the approved cell, keep-list fixed | image
Small-size check | Normalize fill, view at 64 and 32 px | image
Fix one cell | Rewrite one line, rerun one job | image
:::

Write the style once, generate one icon, and approve it as the **style anchor**. Every other icon gets the anchor as a reference: the reference gives the style, the text gives the subject ("Do not copy its object"). See [Give references a role](https://learn.scenario.com/browse).

Ability icons are opaque squares: the game draws the frame, the cooldown sweep and the key binding on top. Inventory icons are different: they need real transparency, set with **Background** at generation time. That case is Part 2; see also [Remove and replace backgrounds](https://learn.scenario.com/images/remove-and-replace-backgrounds.md).

A catalog adds two rules, because weapon 41 has to match weapon 1:

- **Keep the list as data** ([Keep sources as data](https://learn.scenario.com/browse)). People edit the list, never the prompts.
- **One template, one slot** ([Batch from a template](https://learn.scenario.com/browse)). Only the item description changes:

```text
Game inventory icon of {item}. Match the reference icon exactly in style:
same painterly fantasy rendering, brushwork, edge control, gold and teal rim
light, warm top-left key light, palette saturation, three-quarter view, the
same diagonal placement from lower left to upper right and the same fill of
the square (about 80 percent). Draw only the new object, not the sword.
Transparent background, no frame, no cast shadow, no text.
```

Models, as of October 2026:

- **Ability anchor:** GPT Image 2.5 Sunburst, ranked first for this task.
- **The seven other ability icons:** GPT Image 2.5 Flare, same family, up to 10 references. At `high` it cost the same as Sunburst here; it is cheaper at `medium`. See [Control cost](https://learn.scenario.com/browse).
- **Catalog:** GPT Image 2.5 Sunburst for every cell. On transparent cells, GPT Image 2.5 Flare reversed the diagonal and dropped the sun pommel on the anchor, and baked a smoky haze into the alpha on the batch test. Nano Banana 2.1 painted an opaque dark background instead of transparency.

![Three longswords on a checkerboard: the first with a sun pommel on clean transparency, the second pointing the other way, the third on a painted dark background](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/3fc76f7dba284881329f5641bc128e952e32c707271034024929c5a6f88daaec.webp "Anchor shoot-out at high, shown on a checkerboard: Sunburst (approved), Flare (diagonal reversed, plain pommel), Nano Banana 2.1 (no transparency).")

## Steps

### Part 1: Ability icons

:::steps
1. **Generate the anchor.** Open **Create**, choose **Images**, pick **GPT Image 2.5 Sunburst**. Under **Settings**, set **Image Count** to 2, **Dimensions** to 1:1 (1024x1024), **Quality** to `high` and **Background** to `opaque`. Use the prompt below and click **Generate**. The anchor is the champion Vael's signature strike, the icon players see most.

2. **Approve the anchor at full size and at 32 px** ([Lock a style anchor](https://learn.scenario.com/browse)), and once in grey. Every later icon inherits it: fix composition and contrast now. The first two takes failed here (see Check the result); the retake below was approved.

3. **Generate the other icons from the anchor** ([Batch from a template](https://learn.scenario.com/browse)). Switch to **GPT Image 2.5 Flare**, **Image Count** 1, same settings, anchor under **Reference Images**, and change only the ability line and the glow color (template below).

4. **Lay the set out the way players see it:** at 64 px, at 32 px, and once in grey at 70 percent brightness, which is how an ability on cooldown looks.

5. **Retake the odd one out alone.** Rewrite its ability line, run that one job, and check it in the same three views.
:::

The approved anchor prompt (the first try did not have the "seen whole" and "no scenery" clauses):

```text
Ability icon for a fantasy battle arena game: Sunbrand, the Ember Warden's
halberd strike. One large halberd head of molten glass, seen whole, angled
diagonally from lower left to upper right, its edge trailing a short crescent
of fire. The halberd head fills most of the square and reads as one bold
silhouette at 32 pixels. Plain dark background: deep charcoal with a soft warm
glow behind the blade and a vignette toward the corners; no scenery, no
buildings, no banners. Strong value contrast between the blade and the
background. Square, full bleed, no frame, no border, no text, no letters.
Style: painterly champion splash art at the level of the top arena games:
confident brushwork, crisp edge control, strong diagonal composition, gold
and teal rim light, atmospheric depth, rich armor and cloth detail. No text.
```

The template for the seven others:

```text
The reference image is the approved style anchor of this ability icon set:
match its painterly brushwork, edge control, plain dark background with a
soft glow behind the subject, vignette, value contrast, gold and teal rim
light, and how much of the square the subject fills. Do not copy its object.

Ability icon for a fantasy battle arena game: <ABILITY>. One bold silhouette
that reads at 32 pixels, glow in <COLOR>. Square, full bleed, no frame, no
border, no scenery, no text, no letters.
```

The seven abilities in this run:

- Cathedral Fall, a round stained-glass sun window bursting outward into falling shards (warm gold);
- Ember Ward, a round bronze shield engraved with a sun, ringed by a dome of floating embers (warm orange);
- Dawnbell, a curved bronze war horn blasting a cone of golden light from its bell (warm gold);
- Coral Trident, a trident of pale coral and light thrusting diagonally upward through sea spray (bioluminescent teal);
- Whirlpool Throne, a spiraling whirlpool seen from above, its center glowing (teal);
- Pearl Tide, a large glowing pearl lifted on the crest of a curling wave (teal);
- Drowned Crown, a verdigris bronze crown sinking through dark water, trailing bubbles (teal).

**With the Scenario MCP:** run `model_openai-gpt-image-2-5-flare` once per ability with `referenceImages: [anchor_id]`, `background: "opaque"`, `quality: "high"` and `wait: false`, then a single `jobs_wait` for all of them.

![The eight icons at 64 px, at 32 px and in grey at 70 percent brightness, enlarged three times](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/a0da237c077933323f3d83821130bd65f74f6ce9dfea9efeaac158ff72b1d7ec.webp "Size test, final set: 64 px, 32 px, and the grey cooldown view.")

### Part 2: Item catalog with tiers

![Eight painterly weapons in leather inventory slots above five color versions of one halberd on grey](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/46d11891b58377d0f4c968a38a6f7a8d739f440f0babc2f67f9f8dc5b22e9892.webp "One list, one template, one job per cell.")

:::steps
1. **Write the list.** One row per item in `items.csv`: an id and a short description with shape, material and one distinctive detail, such as "a bearded war axe with a forged iron head, a leather-wrapped ash haft and one round sun-stamped rivet".

2. **Make the style anchor** ([Lock a style anchor](https://learn.scenario.com/browse)). Open **Create**, choose **Images**. Write the full style for the first item. Set **Dimensions** to 1:1 (1024x1024), **Quality** to `high` and **Background** to `transparent`.

3. **Run the anchor on two or three models** ([Run a same-input shoot-out](https://learn.scenario.com/browse)). Approve one cell; here, the Sunburst longsword.

4. **Test the batch settings on one item** ([Pilot the hardest case](https://learn.scenario.com/browse)). Fill the template with the axe, add the anchor under **Reference Images**, set **Quality** to `medium` and run it on two models; compare style, alpha and fill.

5. **Run the rest, one job per row,** with the anchor attached. Several items in one prompt blend.

6. **Normalize the fill in code** ([Do the exact part in code](https://learn.scenario.com/browse)). The prompt asked for 80 percent of the square; cells came back at 95 to 98 percent, and the warhammer touched the edge. Trim each cell to its alpha bounding box and pad it back to 80 percent.

7. **Check at full size, then at 64 and 32 px** ([Check by measurement](https://learn.scenario.com/browse)) on the game's slot color.

8. **Fix one cell alone** ([Repair at the cheapest stage](https://learn.scenario.com/browse)). Rewrite that row and rerun that job only.

9. **Make the tiers from approved cells** ([Write a keep-list](https://learn.scenario.com/browse)). Attach the common cell as the only reference, so it holds the silhouette, and run the tier template once per item and tier.

10. **Make the chromas the same way.** Approve one master at `high` with **Background** set to `opaque`, then run the chroma template once per color with the master attached.
:::

The anchor prompt as run:

```text
Game inventory icon of a forged iron longsword with a leather-wrapped grip, a
plain crossguard and a round sun-disc pommel, laid diagonally from lower left
to upper right. Single object, centered, three-quarter view, filling about 80
percent of the square. Painterly fantasy game item art: confident brushwork,
crisp edge control, gold and teal rim light, rich material detail, warm key
light from the top left. Transparent background, no frame, no cast shadow, no
text.
```

On the axe test, Sunburst returned clean alpha; Flare's axe carried a faint smoky haze across the transparent area, which shows as a grey veil on any slot color. The rest ran on Sunburst.

![Two axes on a checkerboard: the left with clean transparency, the right with a faint smoky haze around the head](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/00bf477dddc26ce725a5077547fe3b0caa753fcb40c49d3b427a5ef16993558f.webp "Batch test at medium: Sunburst (kept) and Flare (haze in the alpha, rejected).")

**With the Scenario MCP:** an agent read `items.csv`, called `model_run` on `model_openai-gpt-image-2-5-sunburst` once per row with `wait: false`, then one `jobs_wait`.

#### The catalog at full and small size

![Eight painterly weapons in leather inventory slots: longsword, axe, bow, mace, spear, warhammer, dagger and crossbow](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/5cad5c2da849d1aa0a49241e665988c5a8829c3c0a7c75117e1447222dd363ca.webp "Full size, fill normalized to 80 percent. The bow is the redone cell.")

![The eight weapons at 64 px and 32 px, enlarged three times](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/8610e48de1a41dc7665166807006d959b5144b3d5341ef46444e87150e98cba7.webp "Top: 64 px. Bottom: 32 px, a small inventory slot. Enlarged without smoothing.")

#### The cell that failed

At 32 px the first bow was a thin dark line on the dark leather slot, nearly invisible. Only its row changed:

```text
Before: a recurve bow of dark ash wood with horn tips, a braided leather grip
        and a taut string
After:  a thick recurve bow of pale golden ash wood with bright ivory horn
        tips, a wide red leather grip and a taut white string, simple bold
        shapes
```

![Two bows, each at full size and at 32 px in a leather slot: a dark wooden bow that almost disappears small, then a pale golden bow with a red grip that still shows](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/836009a4492ec5375482dc9c61b458bb8f265c0569f17c836f87d303b8b55ebd.webp "Left: rejected, dark on dark. Right: one job later.")

The fixed bow is still the thinnest cell, as a bow is by nature, but it now reads at 32 px. The fix cost one job; rerunning the set would have cost eight and changed seven approved cells.

#### Tiers

A second template; only the tier clause changes:

```text
Upgrade the game icon in the reference image to its {tier} tier. Keep exactly
the same object, silhouette, three-quarter angle, diagonal placement,
painterly rendering, top-left light and fill of the square. Change only
materials and glow: {tier clause}. Transparent background, no frame, no cast
shadow, no text.

rare: polished silver steel instead of iron, small inset blue sapphires, a
      faint cool blue glow along the edges
epic: Sunforged gold with fine engraved sun filigree instead of iron, inset
      ember-orange crystals, a soft molten-gold aura around the object
```

![Longsword, axe, mace and dagger in three rows: iron common, silver rare with blue gems, gold epic with an orange aura](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/63189cbaf88c5979957ef873d82802e609b1592f58266af88a576b162903c6b0.webp "Rows: common, rare, epic; one job per cell.")

#### Chromas

The master is Vael's halberd from Cinderthrone's splash art, drawn alone as a cosmetic shot at `high` with Vael's art as the only reference. Each chroma is one edit of the master:

```text
Recolor the halberd in the reference image to the {name} chroma. Keep exactly
the same halberd, shape, proportions, angle, framing, cord and ribbons, light,
background and shadow. Change only the colors: {colors}. No text.
```

![One halberd five times on grey, same pose: molten orange, aquamarine, violet obsidian, emerald and pearl white](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/070a2ef3abf6a97fa8a298ece512b31cb6f7c49de17ce72d012ba6c4fb267e2e.webp "Sunforged is the master; Tideglass, Obsidian, Verdant and Dawnpearl are edits of it.")

## Check the result

### Check the ability icons

:::check
**Accept when:** brushwork, glow and value contrast match across the bar; each subject is one bold shape that fills most of the square; each icon reads at 32 px and in grey.
**Reject when:** an icon carries scenery or a second subject, the subject is cropped so its shape is lost, it melts into the background in grey, or two icons share one silhouette at 32 px.
:::

The anchor needed a retake. The first two takes were strong paintings at 1024 px: a burning halberd sweeping across a ruined city with sun banners. At 32 px they became an orange swoosh, and the halberd was gone. The retake asked for the halberd head "seen whole" on a plain background; it reads at 32 px and in grey.

:::compare
![A molten halberd sweeping through a burning city with banners, shown large and at 32 px](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/d8dd39b7bf278c1b3bdee97791ce8810eff6d2e38e73f30ac67ba158af3f3180.webp "First try: a good painting, an orange swoosh at 32 px. Rejected.")
![A molten halberd head seen whole on a plain dark background, shown large and at 32 px](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/ab22bf0e69cbb2513a1a274e7b5bcb7942c456def208efb3ff4760d961ff16a5.webp "Retake: one bold shape at 32 px. Approved as the anchor.")
:::

Six of the seven icons from the anchor were accepted on the first run. Drowned Crown was the odd one out: at 1024 px a tilted crown in a column of bubbles; at 32 px and in grey, the crown and the bubbles merged into one speckled shape. Its ability line was rewritten and that job alone re-run:

```text
Before: Drowned Crown, a verdigris bronze crown sinking through dark water,
        trailing bubbles
After:  Drowned Crown, one large upright verdigris bronze crown with bright
        gold edges and tall points, centered and seen whole, sinking through
        dark water, with only a few bubbles rising above it. The crown is the
        brightest shape in the square, with strong light and dark contrast on
        its points.
```

:::compare
![A tilted verdigris crown in a column of bubbles, shown large, at 32 px and in grey](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/965a45101c83e13253357696fc87d4b1b7327a3edee1b6ddd98e68d4ba01ec2e.webp "First take: crown and bubbles merge at 32 px. Rejected.")
![An upright crown with bright gold points, shown large, at 32 px and in grey](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/d449ead7d7920db0f62b9b473d1d0877a5950b09b49f6fe73d7d1d3e4984be17.webp "Retake: the points read at 32 px and in grey. Kept.")
:::

A value-spread measure in code scored both crowns the same; looking at the three views caught the difference.

The size test then showed two weaker icons. Each was fixed by rewriting its line and running that one job again:

- **Whirlpool Throne and Pearl Tide** were both teal swirls at 32 px, kept apart only by the pearl. The new line puts a tall throne in the whirlpool, an upright shape no other icon has. Its first retake came out coral and gold, the Sunforged colors, and was rejected; the second named the colors to use and the ones to leave out.
- **Ember Ward** was the faintest Sunforged icon in grey: its thin ring of embers disappeared. The new line asks for the shield face-on, with a thick, bright band of fire at its rim.

```text
Whirlpool Throne, one tall throne of pearl-white shell and verdigris bronze
with a high pointed back, seen whole from the front, rising out of the glowing
eye of a small bright teal whirlpool at its base. The throne is the brightest
shape in the square and its tall back reads as one clear upright silhouette.
The whole icon is cool: teal, sea green and pearl white, with only thin gold
edges, no orange and no warm coral.

Ember Ward, one large round bronze shield seen whole and face-on, centered,
its engraved sun emblem glowing bright gold, ringed close to its rim by a
thick, bright band of fire. The shield's bright rim and sun are the lightest
shapes in the square, with strong light and dark contrast against the dark
background.
```

![Three takes of the Whirlpool Throne icon, each shown large, at 32 px and in grey. Left, a teal spiral seen from above. Middle, a tall coral and gold throne on a small whirlpool. Right, a pearl-white and verdigris throne rising from a bright teal whirlpool](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/c53aa96be2de18db0c32d4c9058e273e5fcb3ae79bc154dbc69cfcbe1540e775.webp "Whirlpool Throne: the first run (a spiral like Pearl Tide), the first retake (the right shape in the wrong faction's colors, rejected), the second retake (kept).")

### Check the catalog

:::check
**Accept when:** every cell shares the anchor's rendering, rim light and diagonal; fills match after normalizing; each item reads at 32 px on the slot color; tier and chroma cells overlay their base cell, with only the named materials or colors changed.
**Reject when:** an item is drawn in the anchor's shape, a cell has a painted background or a haze instead of clean transparency, an item vanishes at 32 px, a tier changes the silhouette, or a chroma moves the item in the frame.
:::

Measured on this run:

- **Tier silhouettes.** Against the common cell (opaque core only), rare tiers overlapped at 0.93 to 0.98. Epic tiers scored 0.72 to 0.83, and every pixel of the common silhouette was still covered: the difference is the aura rim around the object.
- **No epic misses this time.** Wood and leather parts stayed wood and leather; the dagger's bone grip stayed bone.
- **Chroma edges.** 94 to 95 percent of the master's edges lie within 4 px in each chroma. Dawnpearl scored lowest: its pale blade loses contrast on grey, and the shape did not move.

![The Sunforged master, the Dawnpearl chroma and their edges overlaid](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/aa130a45a200fc0bb96eb26beea7d24abce2875f5064ed7aefd623614959a3dc.webp "Master against Dawnpearl. White lines match; magenta marks master edges lost on the pale blade.")

Looking at the 32 px strip caught the bow; the alpha statistics did not flag it, since its alpha was clean.

:::quiz Check yourself
? The first full set at 64 px, 32 px and in grey. Which icon do you retake before shipping?
![Eight ability icons shown at 64 px, at 32 px and in grey, enlarged three times](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/bef1146dc694dbc5ec8c9dc2b1bd92b229c5464f951fbdb9bb8863510efe926d.webp "Take A")
- [ ] The halberd on the far left: it is the anchor, so it should be redone at a higher quality setting
- [x] The crown on the far right: at 32 px and in grey its crown and bubbles merge into one speckled shape
- [ ] The whirlpool: a spiral is too simple for an ability icon
> The crown is the only icon whose subject is lost at small size and on cooldown. Rewrite its line (one upright crown, bright edges, few bubbles) and rerun that job alone.

? The anchor looks great at 1024 px but becomes a color smear at 32 px. What do you do?
- [ ] Approve it: icons are judged at full size, and players can zoom in
- [x] Retake the anchor with one subject seen whole and no scenery, and approve it only after the 32 px check
- [ ] Keep it and fix the small size later with sharpening
> Every other icon inherits the anchor's composition. A busy anchor makes a busy set, so the 32 px check comes before approval.

? Two takes of the bow, each shown at full size and at 32 px in the inventory slot. Which one goes into the catalog?
![Two bow icons, each shown at full size and at 32 px in a dark leather inventory slot](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/6a0861eb9327305241838a5ef63cbf69a38bc658faf9b242485c0dc8b5bb329b.webp "Left: Take A. Right: Take B")
- [x] Take A: at 32 px its pale wood and red grip still read against the slot
- [ ] Take B: at full size its dark wood matches the iron and leather of the other weapons best
- [ ] Either one: both have clean transparency and the same fill
> At 32 px the dark bow vanishes into the dark slot. Only its row was rewritten (pale wood, red grip, bold shapes) and that one job rerun.

? The epic mace comes back with its leather wrist strap turned gold. The other epic cells are fine. What do you do?
- [x] Name the part in the keep line ("the leather wrist strap stays leather") and rerun that cell only
- [ ] Rerun the whole epic row so every cell gets the same treatment
- [ ] Accept it: the epic tier is allowed to change materials
> The tier template changes only the named materials and glow. A part that should stay is fixed in the keep line, one cell at a time, so approved cells do not change.
:::

## Make it repeatable

- **Keep the anchor and the template together** in a collection, the template in its description. A new ability or item is one line.
- **Batch workflow for ability icons.** In the **Node Editor**: an **Image** input (the anchor), a **Text** input with one ability per line, **Split Text** to turn it into a list, a **Loop** over an **Image Generator** on GPT Image 2.5 Flare, and an **Approval** node at the end.
- **Publish it as an App** so designers request icons by typing a list. See [Batches, loops and logic](https://learn.scenario.com/workflows/batches-loops-and-logic.md).
- **Platform Apps to compare** (**Workflows**, **Apps**): **Icon Set Forge**, **Icon Generator** and **Collection of 3D Icons**. Try one on your anchor before building your own.

The catalog list runs three ways.

- **As a workflow,** in the **Node Editor** ([Package it as a workflow or skill](https://learn.scenario.com/browse)):
  - a **Text** node with the list and an **Image** node with the anchor;
  - **Split Text** on new lines, one item per line;
  - **Slice Items** in Default mode with 2 items while you test, removed for the full run;
  - a **Loop** holding a **Prompt Builder** with the template and an **Image Generator** on GPT Image 2.5 Sunburst, the anchor in **Reference Images**;
  - an **Approval** node before any later step, such as an upscale. See [Batches, loops and logic](https://learn.scenario.com/workflows/batches-loops-and-logic.md).
- **Parallel runs:** set **Concurrent Runs** on the Loop above 1. The documented limit is 10 concurrent workflow jobs per project ([API errors and limits](https://learn.scenario.com/browse#t-hc-api)).
- **Through the API,** loop over the CSV and keep a receipt per row ([Keep a cost receipt](https://learn.scenario.com/browse)):

```python
import csv, os, requests

BASE = "https://api.cloud.scenario.com/v1"
AUTH = (os.environ["SCENARIO_API_KEY"], os.environ["SCENARIO_API_SECRET"])
MODEL = "model_openai-gpt-image-2-5-sunburst"
ANCHOR = "asset_YOUR_APPROVED_ANCHOR"
TEMPLATE = open("template.txt").read()

jobs = {}
for row in csv.DictReader(open("items.csv")):
    body = {"prompt": TEMPLATE.replace("{item}", row["item"]),
            "referenceImages": [ANCHOR], "width": 1024, "height": 1024,
            "quality": "medium", "background": "transparent", "numOutputs": 1}
    r = requests.post(f"{BASE}/generate/custom/{MODEL}", json=body, auth=AUTH)
    r.raise_for_status()
    jobs[row["id"]] = r.json()["job"]["jobId"]
# Then poll GET /jobs/{jobId} for each, and write id, jobId,
# metadata.assetIds and billing.cuCost to receipts.csv.
```

Polling and downloads work as in the [API quickstart](https://learn.scenario.com/browse#t-hc-api). The documented limit is 100 requests per minute; on a 429 error, wait and retry.

- **To compare, try a public App.** The Asset Evolution App returns rare, epic and legendary versions of one image in one run. It was run here through the Scenario MCP: find it with `workflows_list`, then `workflow_run` on `wflow_asset-evolution`, with the longsword anchor and an empty prompt.

![Four longswords in a row on white: plain iron, blue rare, violet epic and a flaming gold legendary](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/2cff4921d1ddb17b3833a2b0f72476affb5e10b85eaa19c996678555d303891b.webp "Asset Evolution App on the anchor: one 3840x2160 sheet, about 40 seconds, opaque white background, first sword redrawn.")

The App suits exploring tier looks: its legendary flame is a good direction for a fourth tier. To ship, the per-cell edit wins: each tier is its own transparent file in the slot's placement.

## Runs and time

**Part 1, ability icons:**

| Step | Model | Runs | Kept | Wait |
|---|---|---|---|---|
| Style anchor, first try | GPT Image 2.5 Sunburst, 2 takes | 1 | 0 (rejected) | about 65 s |
| Style anchor, retake | GPT Image 2.5 Sunburst, 2 takes | 1 | 1 | about 55 s |
| Seven icons from the anchor | GPT Image 2.5 Flare, `high` | 7 | 6 | about 25 s each, in parallel |
| Drowned Crown retake | GPT Image 2.5 Flare, `high` | 1 | 1 | about 30 s |
| Whirlpool Throne retakes | GPT Image 2.5 Flare, `high` | 2 | 1 | about 25 s each |
| Ember Ward retake | GPT Image 2.5 Flare, `high` | 1 | 1 | about 25 s |
| Size and cooldown test | local script | 0 | n/a | seconds |

About 4 minutes of waiting in all. Every icon costs the same, so the set grows in cost with the ability count; `medium` quality on Flare is the lever for a long list.

**Part 2, item catalog:**

| Step | Model | Runs | Kept | Wait |
|---|---|---|---|---|
| Anchor shoot-out at `high` | Sunburst, Flare, Nano Banana 2.1 | 3 | 1 | 20 to 40 s |
| Batch test on the axe | Sunburst and Flare, `medium` | 2 | 1 | 15 to 30 s |
| Six more items | Sunburst, `medium` | 6 | 5 | about 25 s each |
| Bow redone alone | Sunburst, `medium` | 1 | 1 | about 25 s |
| Rare and epic tiers, 4 items | Sunburst, `medium` | 8 | 8 | about 25 s each (one took about 90 s) |
| Halberd master at `high` | Sunburst, opaque | 1 | 1 | about 55 s |
| Four chromas | Sunburst, `medium` | 4 | 4 | about 25 s each |
| Asset Evolution App (comparison) | App on Sunburst | 1 | 0 | about 40 s |

About 5 minutes of waiting, jobs in each row in parallel. A `high` run costs about three times a `medium` cell: keep `high` for the anchor and the master. Tiers triple the cell count.

The price shows on the **Generate** button before you run; see [Control cost](https://learn.scenario.com/browse).

## Variations

- **Inventory icons with transparency:** the method of [Part 2](#part-2-item-catalog-with-tiers), with **Background** set to `transparent` and a fill check in code.
- **More tiers:** add a legendary clause. Keep the aura small, or the 32 px check fails first on the strongest tier.
- **Currency and resource icons:** a family (copper, silver, gold) from one material word; the subject line stays identical.
- **Factions and seasons:** a set restyled for a faction or an event is a reskin of the approved icons; see the [faction reskin](https://learn.scenario.com/playbooks/edit-one-thing-campaign.md#part-3-a-faction-reskin), where the same Sunforged items become Tidebound, and [one season across a kit](https://learn.scenario.com/playbooks/edit-one-thing-campaign.md#part-2-one-season-across-a-kit).
- **Pixel-art icons:** generate at 1024, then **Pixelate** with a fixed palette and grid size. See [Vectors, pixel art and layers](https://learn.scenario.com/images/vectors-pixel-art-and-layers.md).
- **Course badges:** the badge frame goes in the anchor, the subject in the slot. Add the course name in code; see [Typeset text, never generate it](https://learn.scenario.com/browse).
- **Fashion and products:** the chroma template fits colorways of sneakers, headphones or furniture; see [Product packshots](https://learn.scenario.com/playbooks/product-packshots.md) for the master.
- **App and web icons outside games:** replace "ability icon for a fantasy battle arena game" with your context.

## If it breaks

- **The icon becomes a smear or an item vanishes at 32 px.** Ask for one subject "seen whole" on a plain background, with "no scenery". For one catalog row, ask in that row only for fewer, bigger shapes and one color that contrasts with the slot.
- **One icon or cell drifts from the anchor** (different brushwork, a brighter background). Check that every job has the anchor attached and the template word for word, and re-run with the style sentence first in the prompt.
- **The model copies the anchor's object** (an axe with a sword's crossguard). Keep "Do not copy its object" or "Draw only the new object, not the sword" in the template and describe the new subject in more detail.
- **An icon disappears in the grey cooldown view.** Ask for one bright edge on the subject and strong light and dark contrast; color alone does not survive grey.
- **Two icons look alike at small size.** Change the silhouette in the ability line, not the color only.
- **Fills differ from cell to cell.** Normalize in code from the alpha bounding box; do not spend reruns on it.
- **A painted background or a haze appears behind the item.** The model painted it. View the cell on a checkerboard, set **Background** to `transparent`, or switch models.
- **An epic tier changes a part that should stay.** Name the part in the keep line ("the leather wrist strap stays leather") and rerun that cell only.
- **A chroma shifts the item.** Keep "same framing" in the keep line and check the edge overlay.

Source: https://learn.scenario.com/playbooks/game-icon-set
