sunholo-data avatar

asset-manager

Generate and manage game image assets using AI. Use when user asks to create sprites, textures, back

by sunholo-data|Open Source

Asset Manager

Generate, organize, and manage visual assets for Stapledon's Voyage using AI image generation. Ensures consistent styling, proper 3D texture formatting, and automatic manifest updates.

Quick Start

Most common usage:

# Generate 3D interior textures (via voyage ai CLI directly)
bin/voyage ai -generate-image -prompt "Seamless tileable metallic spaceship floor texture..."

# Generate UI/portrait assets
.claude/skills/asset-manager/scripts/generate_asset.sh portrait "captain" "human ship captain, weathered"

# Check what assets exist
.claude/skills/asset-manager/scripts/status.sh

# Update manifest after adding assets
.claude/skills/asset-manager/scripts/update_manifest.sh

When to Use This Skill

Invoke this skill when:

  • User asks to "create a texture", "generate an image", or "make game art"
  • User wants new textures for 3D interiors (floor, wall, ceiling)
  • User wants backgrounds, portraits, or UI elements
  • User asks about art style or asset specifications
  • User wants to organize or catalog existing assets

Asset Types

3D Interior Textures (for Tetra3D room rendering)

The game uses first-person 3D interiors rendered with Tetra3D. Textures must be seamless and tileable.

TypeDimensionsLocationFormatNotes
Floor Texture512x512+assets/textures/interior/PNGTop-down, seamless tile
Wall Texture512x512+assets/textures/interior/PNGVertical orientation, seamless
Ceiling Texture512x512+assets/textures/interior/PNGTop-down with lights
Console Texture256x256+assets/textures/interior/PNGEquipment surfaces

Tested Prompts for Interior Textures:

# Floor texture
bin/voyage ai -generate-image -prompt "Seamless tileable metallic spaceship floor texture, industrial grating with subtle blue LED strip lights embedded between panels, sci-fi starship interior deck plating, dark gunmetal gray steel with cyan glow accents in the seams, top-down orthographic view for 3D texture mapping, 512x512 seamless repeating tile, no perspective distortion"

# Wall texture
bin/voyage ai -generate-image -prompt "Seamless tileable spaceship interior wall panel texture, sci-fi bulkhead with recessed panel sections and subtle orange warning stripe, dark gray brushed metal with rivets and access hatches, vertical orientation for wall mapping, industrial starship corridor aesthetic, 512x512 seamless repeating tile"

# Ceiling texture
bin/voyage ai -generate-image -prompt "Seamless tileable spaceship ceiling texture, dark industrial ceiling panels with recessed fluorescent light strips glowing white, exposed conduits and pipes, ventilation grilles, sci-fi starship bridge overhead, very dark charcoal gray metal with bright white light panels, top-down view for ceiling mapping, 512x512 seamless repeating tile"

Testing textures:

go run ./cmd/demo-engine-interior \
  -floor assets/textures/interior/bridge_floor.png \
  -wall assets/textures/interior/bridge_wall.png \
  -ceiling assets/textures/interior/bridge_ceiling.png

3D Planet Textures (for Tetra3D sphere rendering)

TypeDimensionsLocationFormatNotes
Planet Texture2048x1024+assets/planets/JPGEquirectangular (2:1 ratio)
Ring Texture1024x64+assets/planets/PNG with alphaFor Saturn-like rings

Important: Planet textures MUST use equirectangular projection (2:1 aspect ratio) to wrap correctly on spheres.

2D Sprites (for UI, maps)

TypeDimensionsLocationFormat
Star Sprite16x16 pxassets/sprites/stars/PNG, glow effect
UI ElementVariesassets/sprites/ui/PNG, transparent
Portrait128x128 pxassets/sprites/portraits/PNG
Background1920x1080+assets/data/starmap/background/JPG/PNG

Sprite Sheet Layouts for Animation:

  • Horizontal (4x1): 4 frames in a row - ideal for walk cycles
  • Grid (2x2): 4 frames in 2x2 - ideal for directional poses

Available Scripts

scripts/generate_asset.sh <type> <name> <prompt> [--dry-run]

Generate a 2D asset using AI with proper styling. Uses voyage ai CLI.

# Generate portrait
.claude/skills/asset-manager/scripts/generate_asset.sh portrait captain "human ship captain, weathered, wise"

# Generate star sprite
.claude/skills/asset-manager/scripts/generate_asset.sh star blue "bright blue O-type star"

# Generate background
.claude/skills/asset-manager/scripts/generate_asset.sh background nebula "purple nebula with stars"

Direct AI Generation (for 3D textures)

For 3D textures, use voyage ai directly with detailed prompts:

bin/voyage ai -generate-image -prompt "Your detailed prompt here"
# Output: assets/generated/response_XXXXX.png

Then organize:

mkdir -p assets/textures/interior
cp assets/generated/response_XXXXX.png assets/textures/interior/floor.png

scripts/status.sh

Display current asset inventory and identify gaps.

scripts/download_planet_textures.sh [resolution]

Download proper equirectangular planet textures for 3D sphere rendering.

# Download 2K textures (default, good for game use)
.claude/skills/asset-manager/scripts/download_planet_textures.sh

# Download 4K textures (high quality)
.claude/skills/asset-manager/scripts/download_planet_textures.sh 4k

Downloads from Solar System Scope (CC BY 4.0).

Workflow for 3D Interior Textures

1. Generate Texture

bin/voyage ai -generate-image -prompt "Seamless tileable [surface type] texture, [details], sci-fi starship interior, [color palette], [orientation] view for 3D texture mapping, 512x512 seamless repeating tile"

Key prompt elements:

  • "Seamless tileable" - ensures edges match
  • "512x512" or "1024x1024" - specify resolution
  • "top-down view" (floors/ceilings) or "vertical orientation" (walls)
  • "no perspective distortion" - flat texture mapping
  • Color accents - cyan LEDs, orange warning stripes for visual interest

2. Review Generated Image

Check assets/generated/response_XXXXX.png:

  • Is it seamless? Check edges
  • Right orientation for the surface?
  • Consistent with game aesthetic?

3. Organize

mkdir -p assets/textures/interior
cp assets/generated/response_XXXXX.png assets/textures/interior/bridge_floor.png

4. Test In-Game

go run ./cmd/demo-engine-interior \
  -floor assets/textures/interior/bridge_floor.png \
  -screenshot 30 -output out/test.png

Real-World Reference Sources

Planets & Moons

Galaxy & Nebula Backgrounds

Star References

  • Use spectral class colors (O=blue, B=blue-white, A=white, F=yellow-white, G=yellow, K=orange, M=red)

Sprite ID Allocation

RangeTypeExample
200-299Stars200=blue, 201=white, 202=yellow...
300-399UIReserved
400-499PlanetsReserved
500-599ShipsReserved
600-699PortraitsReserved

Planet Type Guidelines

TypeBase ColorFeaturesExample
RockyGray/brownCraters, mountainsMercury, Moon
TerrestrialBlue/green/tanContinents, cloudsEarth
Gas GiantOrange/tan bandsCloud bands, stormsJupiter
Ice GiantCyan/blueSubtle bandsUranus, Neptune
Ocean WorldDeep blueCloud patternsHypothetical
Lava WorldBlack + orange cracksMagma riversHypothetical

Deck Scene Backgrounds (with Window Compositing)

The game composites dynamic space views through deck windows. Each deck requires:

  1. background.png - Deck interior (1344x768)
  2. window_mask_large.png - Mask identifying window regions (white=window)

Workflow: AI Segmentation

# 1. Generate deck scene (widescreen 1344x768)
bin/voyage ai -generate-image -aspect 16:9 -prompt \
  "Spaceship <DECK_TYPE> interior, large windows showing sky/space, sci-fi aesthetic"

# 2. Generate mask using AI segmentation (recommended)
bin/generate-window-mask-ai \
  -deck <observation|bridge|generic> \
  -overlay \
  assets/generated/response_XXX.png

# 3. Copy to final location
cp assets/generated/response_XXX.png assets/decks/<DECK>/background.png
cp assets/generated/response_XXX_mask.png assets/decks/<DECK>/window_mask_large.png

# 4. Test
go run ./cmd/game

One-Command Pipeline

For fully automated generation + masking:

.claude/skills/asset-manager/scripts/generate_transparent_scene.sh \
  --deck observation \
  myobservation "large panoramic dome with views of space"

AI Segmentation Benefits

  • No threshold tuning - AI detects windows semantically
  • Accurate boundaries - Polygon-based masks follow actual shapes
  • Deck-aware prompts - Optimized for observation, bridge, or generic decks

Deck Asset Structure

assets/decks/<DECK>/
├── background.png           # 1344x768 deck scene
├── window_mask_large.png    # Window mask (white=window, black=interior)
└── manifest.json           # Asset metadata

Notes

  • Generated images go to assets/generated/ first for review
  • 3D interior textures should be 512x512 or 1024x1024 for good detail
  • Planet textures (3D): Must be equirectangular (2:1 ratio) for proper UV mapping
  • Deck backgrounds: Must be 1344x768 (16:9 widescreen)
  • Always test new assets in-game before committing
  • Real-world reference data should cite sources (NASA, ESO are CC-compatible)
asset-manager - AI Agent Skill for Claude Code & Cursor | Agent Skills