---
name: roblox-game-pack
description: Create Roblox storefront art with Made from one gameplay screenshot or character render. Covers experience icons (512x512), thumbnails (1920x1080), badge images (512x512, circle-safe), and a vertical social promo (1080x1920). Use when a Roblox developer asks for game icons, thumbnails, badges, Ads Manager creatives, or promo art. Optionally hands the files to Roblox Studio's MCP server or the Open Cloud Assets API for upload.
---

# Roblox Game Pack

Use Made MCP at `https://mcp.made.app/mcp`. The same workflow runs in the browser at https://www.made.app/tools/roblox-game-pack, where the person can review a plan, pay once, and download exact files as a ZIP. Packs made through MCP appear in that page's history too.

Prefer Made's native pack tools: `roblox_game_pack`, `roblox_game_pack_status`, `roblox_game_pack_resume`, and `roblox_game_pack_retry`. They take the plan below, build the exact prompts server-side, and price the whole pack in one quote. If they are not available on the connected server, follow the manual path with `generate_image` and `job_status` (see "Manual path"). Either way, upload the reference with `upload_media` or `media_upload` + `media_confirm`. Connect Made if these tools are unavailable. Do not substitute a different image model without saying so.

## Gather inputs

1. **One reference image (required).** A real gameplay screenshot or a render of the main character. JPG, PNG, or WebP. Upload it with `upload_media` (widget) or `media_upload` + `media_confirm`. Use the confirmed `media_…` ID in `medias: [{ "value": "<id>", "role": "image" }]`. If the person is working in Roblox Studio and has Studio's MCP server connected, you can capture a frame with its `screen_capture` tool during a playtest and upload that.
2. **Game name (optional).** Only rendered where a direction asks for a title.
3. **About the game (optional, one or two sentences).** Genre, core loop, and what makes it fun.

Ask only for what is missing. Do not invent gameplay the person did not describe.

## Plan the pack

The default pack is nine images. Offer it and let the person add, remove, or rewrite items (at most 12):

| Asset | Count | aspect_ratio | resolution | Final file |
|---|---|---|---|---|
| Icon | 2 (Hero icon, Action icon) | `1:1` | `1K` | 512 × 512 PNG |
| Thumbnail | 4 (Title card, Core gameplay, Epic moment, Friends together) | `16:9` | `2K` | 1920 × 1080 JPG, under 3 MB |
| Badge | 2 (Welcome badge, First win badge) | `1:1` | `1K` | 512 × 512 PNG |
| Promo | 1 (Vertical promo) | `9:16` | `2K` | 1080 × 1920 JPG |

Roblox rules behind these choices, from create.roblox.com:
- **Icons** must be square and at least 512 × 512. They are shown as small as 150 × 150, so use one bold subject and no text.
- **Thumbnails** are 16:9, ideally 1920 × 1080. Other ratios get stretched. An experience can have up to 10. Thumbnail personalization (Home-page testing) needs 2–5 active thumbnails, each 1920 × 1080 and under 3 MB. Roblox overlays metadata at the bottom, so keep that strip clear.
- **Badges** use a 512 × 512 template. Roblox trims them to a circle, so everything important sits inside a centered circle.
- **Ads Manager** shows sponsored experiences as 16:9 thumbnails and accepts up to 10 per campaign, so thumbnails double as ad creatives.

## Generate with the native tools

1. Call `roblox_game_pack` with `action: "quote"`, `image` (the `media_…` ID, or a completed `job_…` image), and optional `gameName` and `about`. Omit `assets` for the default nine, or pass `assets: [{ asset, title, direction }]` (1–12; `asset` is `icon`, `thumbnail`, `badge`, or `promo`). Quoting is free.
2. Present the total in credits and the asset list: `costCents` counts credits one for one, so 90 is "90 credits", never a money amount. Skip this only if the person already approved a budget that covers it.
3. Call `roblox_game_pack` again with `action: "generate"`, the returned `plan` unchanged (its `id`, `image`, `gameName`, `about`, and `assets` with their IDs), and `maxCostCents` set to the approved quote. Keep the IDs: changing them can start a second paid pack.
4. Poll `roblox_game_pack_status` with the `batchId` until every asset has succeeded or failed. Each asset reports its `target` file (for example `thumbnail-title-card-1920x1080.jpg`) and a fresh `outputUrl`.
5. After a lost response, check `roblox_game_pack_status` with the same ID and call `roblox_game_pack_resume` if assets are missing. For a failed asset, quote with `roblox_game_pack_retry`, then retry with the returned `requestId` and `maxCostCents`. Stop after one failed retry unless more were authorized. Failed images are refunded.
6. Give the person the `workspaceUrl`. It downloads every asset at the exact Roblox size and as a ZIP. If you deliver files yourself, resize them first (see "Deliver exact files").

## Manual path: prompt for each image

Use this only when the native tools are unavailable.

Build one prompt per image from these lines, in order, and send each image as its own `generate_image` call. Never make a grid or contact sheet and slice it.

```
Create ONE finished piece of storefront art for a Roblox experience, based on the reference image (a gameplay screenshot or character render from the game).
Keep the game's world, characters, blocky avatar proportions, color palette, materials, and lighting recognizable, so the art truthfully represents what players will find in the game.
This is a single image: not a collage, grid, contact sheet, split screen, device mockup, or sequence of panels.
Show no game interface of any kind: no hotbar, toolbar, buttons, health bar, chat, leaderboard, menus, or cursor.
<ASSET RULES>
<NAMING>
Do not include the Roblox logo, other companies' brands or characters, prices, ratings, player counts, or watermarks. Keep it suitable for all ages: no gore, blood, or realistic weapons.
Asset: <Icon|Thumbnail|Badge|Promo> — <title>.
Direction: <direction>
About the game: <about, if given>
```

Asset rules:
- **Icon:** This is a Roblox experience icon: a square 1:1 composition that must still read clearly when shown at 150 × 150 pixels. Use one bold focal subject, large and centered, filling most of the frame, with a crisp silhouette, saturated colors, strong contrast, and a simple background. Do not render any text, letters, numbers, or logos.
- **Thumbnail:** This is a Roblox experience thumbnail: a full-bleed 16:9 scene that looks like a real moment from this game. Keep the key action in the upper two thirds and keep the bottom sixth free of important details, because Roblox overlays player counts and ratings there. Use a fresh camera angle and composition instead of copying the reference framing.
- **Badge:** This is a Roblox badge image. Roblox crops it to a circle, so place a single centered emblem entirely inside a centered circle that spans about 80% of the width, with nothing important near the corners. Use a plain, simple background. Do not render any text, letters, or numbers.
- **Promo:** This is a vertical 9:16 social promo image for TikTok, Reels, and Shorts. Keep the top and bottom 15% free of key details because app controls cover them. Make it feel like a poster for the game while staying truthful to the reference.

Naming: if a game name was given **and** the direction asks for a title or the game name, use `Render the game name exactly as "<name>", spelled letter for letter, and add no other words.` Otherwise use `Do not render any title, words, letters, or numbers anywhere in the image.`

Default directions:
- Hero icon: The main character in a confident close-up, facing the viewer, with the game's signature object or setting behind them.
- Action icon: The most exciting moment of the game as one punchy close-up: the character mid-action with motion and energy.
- Title card: A wide hero shot of the world with the main character front and center. If a game name is provided, show it as a bold, readable 3D title in the upper area.
- Core gameplay: The core gameplay loop in action from a third-person camera, exactly as a player would experience it.
- Epic moment: The most dramatic moment of the game: a big challenge, obstacle, boss, or reward, with a dynamic camera angle and lighting.
- Friends together: Three to five blocky avatars playing together in the game world, reacting with excitement to what is happening.
- Welcome badge: A welcoming emblem for joining the game: the game's signature object on a glossy round medal.
- First win badge: A trophy-like emblem that celebrates a first victory, using the game's colors and signature object.
- Vertical promo: A poster-style vertical shot of the main character in the game world, with a strong sense of adventure.

## Manual path: quote and generate

Call `generate_image` with `model: "nano_banana_2"`, `count: 1`, the asset's `aspect_ratio` and `resolution`, the reference in `medias`, and `get_cost: true` for each planned image. Sum the costs and present the total in credits before generating, unless the person already approved a budget that covers it. A full default pack is about 90 credits.

Then generate each image with the same arguments, a stable `request_id` per image (for example `roblox-<pack>-<asset>-<n>`), and `max_cost_cents` set to that image's quote. Keep each `request_id` when retrying after a timeout so a retry never charges twice. Poll `job_status` until each job finishes. Report failures separately; failed jobs are refunded. Stop after one failed retry unless the person authorizes more.

## Deliver exact files

The model returns images close to the target ratio (for example 2752 × 1536 for 16:9 at 2K), not exact Roblox sizes. Before handing files over or uploading them, center-crop to the exact ratio and resize:

- Icons and badges: 512 × 512 PNG.
- Thumbnails: 1920 × 1080 JPG. Lower the quality until the file is under 3 MB (quality 85–92 is usually well under).
- Promo: 1080 × 1920 JPG.

With a shell available, `sips` (macOS), ImageMagick, or `sharp` all work, for example `magick in.png -resize 1920x1080^ -gravity center -extent 1920x1080 -quality 90 thumbnail.jpg`. Otherwise, send the person to https://www.made.app/tools/roblox-game-pack, which exports the exact files and a ZIP.

Name files `<asset>-<title>-<width>x<height>.<ext>`, for example `thumbnail-title-card-1920x1080.jpg`.

## Optional: upload to Roblox

Only upload when the person asks you to, and confirm the target experience or group first.

- **Roblox Studio MCP (built into Studio).** If connected, use its image upload tools (`upload_image` / `store_image`) to turn each file into an asset ID, then use `execute_luau` or `insert_asset` to wire in-game images (for example a `Decal` or `ImageLabel`). Experience icons, thumbnails, and badges are set in Creator Hub, not in the place file, so give the person the files and the Creator Hub step for those.
- **Open Cloud Assets API.** `POST https://apis.roblox.com/assets/v1/assets` as `multipart/form-data` with a `request` JSON field (`assetType: "Decal"`, `displayName`, `description`, `creationContext.creator.userId` or `.groupId`) and a `fileContent` file (`image/png` or `image/jpeg`). Authenticate with the person's API key in `x-api-key` (Assets permission, Read and Write) or OAuth scopes `asset:read asset:write`. The response is `{ "path": "operations/<id>" }`. Poll `GET https://apis.roblox.com/assets/v1/operations/<id>` until `done` is true, then read `response.assetId` and `moderationResult`. Never print or store the person's API key.

## Review before claiming success

Every Roblox upload is moderated, and thumbnails should show what players will find in the experience. Before calling the pack done, check each image for: extra or misspelled text, fake interface elements, other brands or characters, and badges with content outside the circle. Regenerate only the images that fail, within the approved budget. Say clearly that these are AI-generated edits of the person's screenshot.
