Skip to content

Research: two pixel art asset sets for a platformer (Celeste scale and Metal Slug scale) - #158

Closed
SandroMaglione wants to merge 9 commits into
mainfrom
claude/project-thread-y1kdi5
Closed

SandroMaglione wants to merge 9 commits into
mainfrom
claude/project-thread-y1kdi5

Conversation

@SandroMaglione

@SandroMaglione SandroMaglione commented Nov 1, 2026 •

Copy link
Copy Markdown
Member

Requested by Sandro · project thread

Two original asset sets for a platformer, made with the ritmo-pixel-art skill, the art direction, effects, and platformer research (#157, #156, #151), and ritmo-tools (pixel lint, pixel render, fx check/look/render). Repo-only: everything lives in packages/core/genres/, which is not published. Each set is drawn by its own deterministic make.py (Python + Pillow).

Set one: Celeste scale (PLATFORMER-ASSETS.md, platformer-assets/)

  • 320×180 screen, 8×8 tiles, 16×16 player frames (8×12 hitbox).
  • 28 colours from Endesga 32, at most 16 per asset; moon light from the upper left; outlines by plane.
  • The player is the only red; the scarf is gold while a dash is ready and blue once spent.
  • Four looping backdrop planes, a foreground, a 47-tile blob autotile with a mask map, one-way plank, spikes, decorations.
  • Player idle, run, jump, fall, dash, wall slide, land; fruit, spring, checkpoint; dash, dust, collect effects; a mockup.

Set two: Metal Slug scale (PLATFORMER-ASSETS-DETAILED.md, platformer-assets-detailed/)

  • 384×216 screen (16:9, whole-number scaling), 16×16 tiles, 48×48 player frames (about 40 px tall, 12×34 hitbox).
  • 60 colours of AAP-64 with 5–6 steps per material, at most 32 per asset; sun from the upper right; selective outlines.
  • A jungle over industrial ruins: four backdrop planes, palm foreground, the same 47-tile autotile with materials, steel catwalk, spikes.
  • The player is posed as a puppet (fixed limb lengths): idle 6, run 8 with arm swing, jump 3, fall 2, dash 3, wall slide 2, land 2. A backpack cell shows the dash.
  • Cog collectible, spring, checkpoint beacon, a beetle enemy, effects, a mockup, and side-by-side comparisons with set one.

Tool gaps found

  • pixel sheet cannot cut a regular grid (--frame 16x16); frames that touch merge.
  • pixel render always writes PNG, SVG and preview, and doubles the suffix in its default name.
  • pixel lint has no accept list for deliberate single pixels, no notion of a composed scene, and one colour limit for every asset.
  • Nothing for tiles (loop, seam, autotile checks) and nothing checking a sheet's frames against each other (feet on one row).
  • No scene-level contrast check, no palette swap, no contact sheet for sprite animations; fx takes palette names while sprite sources take hex, and flags near-duplicates in the source palette with no palette-wide accept.

Weak spots

  • Set one: the player is stiff, the terrain interior flat, the mountains plain.
  • Set two: hands cover the face in some poses, the head stays upright in the dash, the terrain blocks repeat visibly, the canopy reads as piles of balls, the spring reads as a drum.
  • Nothing has been checked on a phone or in a running game.

🤖 Generated with Claude Code

https://claude.ai/code/session_01HendNaZcTpUubQBWodQy33

A test of the pixel-art skill and the art-direction research on a
Celeste-like platformer: 320x180, 8 px tiles, one Endesga 32 subset.
The planes recede toward the haze and loop horizontally, and the terrain
is a 47-tile blob autotile drawn per pixel from its neighbours, so one
function decides every edge, rim, and corner.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HendNaZcTpUubQBWodQy33
The fruit, spring, and checkpoint are sprite sources rendered by
`ritmo-tools pixel render`; dash, dust, and collect are fx drafts
checked and rendered by `ritmo-tools fx`, with the player as stand-in,
so these use the tools' own paths rather than the generator.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HendNaZcTpUubQBWodQy33
The player is drawn as fill parts with one generated outline, so every
frame keeps the same outline weight; the mockup stacks every plane as
the game would, so the whole look can be judged at once.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HendNaZcTpUubQBWodQy33
Keeps each choice (grid, palette, light, outlines, read order) tied to
the research it came from, and names what still looks weak.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HendNaZcTpUubQBWodQy33
@SandroMaglione SandroMaglione self-assigned this Nov 1, 2026
…om code

A second asset set at a larger scale (384x216, 16 px tiles, a 48 px
player frame), to show what Metal Slug's density of detail changes
against the first set's 8 px grid. The palette is 60 colors of AAP-64,
whose long ramps give each material five or six steps. The terrain is
the same per-pixel blob autotile as set one, with a facing of cut
blocks over dark earth, so one function still decides every edge.
make.py also draws the player, props, and mockup; those land next.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HendNaZcTpUubQBWodQy33
The first set's player was stiff because each frame was typed by hand.
Here limbs are capsules posed by joint angles, so lengths hold from
frame to frame and each animation is its key poses: an 8-frame run
with arm swing, a jump distinct from the fall, a flat dash, a wall
slide, and a squash on landing. The ponytail lags a frame for
secondary motion, and the backpack's cell shows whether a dash is ready.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HendNaZcTpUubQBWodQy33
The cog, spring, beacon, and scrap beetle are drawn in make.py with the
player's outline rule; dash, dust, and collect are fx drafts checked and
rendered by ritmo-tools fx against the new player as stand-in.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HendNaZcTpUubQBWodQy33
Every plane stacked as the game would, plus set one's player and room
beside this set's at the same zoom, so the change in scale is seen, not
described.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HendNaZcTpUubQBWodQy33
…ate it

Ties each choice (grid, palette, light, sel-out, detail budget) to the
Metal Slug reference and the research, says what changed with scale
against set one, and names what still looks weak.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HendNaZcTpUubQBWodQy33
@SandroMaglione SandroMaglione changed the title Research: a minimal pixel art asset set for a Celeste-like platformer Research: two pixel art asset sets for a platformer (Celeste scale and Metal Slug scale) Nov 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants