Character design for 2D games: silhouette-first methodology, character- to-tile size ratio, expressions in low resolution (eye / mouth pixel placement), anatomy shortcuts in pixel art, faction/role visual language (silhouette + palette identifying class), walk cycle conveying weight and attitude. USE WHEN: designing a new character, fixing unreadable / cluttered characters, distinguishing factions visually, assessing animation weight.
Scanned 9/8/2026
Install to Claude Code
npx -y skills add claude-dev-suite/claude-dev-suite --skill character-design --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Character Design?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/claude-dev-suite-character-design)More formats (shields.io, HTML) on the badges page.
---
name: gamedev-2d-art-character-design
description: |
Character design for 2D games: silhouette-first methodology, character-
to-tile size ratio, expressions in low resolution (eye / mouth pixel
placement), anatomy shortcuts in pixel art, faction/role visual
language (silhouette + palette identifying class), walk cycle
conveying weight and attitude.
USE WHEN: designing a new character, fixing unreadable / cluttered
characters, distinguishing factions visually, assessing animation
weight.
allowed-tools: Read, Grep, Glob
---
# 2D Character Design
Character design in pixel art = silhouette + palette + a few decisive
pixels. At small resolutions, every pixel matters.
## Silhouette first
Black-out the character and judge readability. If the silhouette tells
the story, the rest is detail.
### Silhouette test
1. Fill character sprite with pure black on transparent bg.
2. Place at intended in-game scale (no zoom).
3. Question: can I tell what / who this is in 0.5 seconds?
If no, the silhouette is wrong. No amount of detail will fix it.
### Silhouette principles
- **Distinctive shape**: avoid generic blob. Add a hat, weapon, cape,
long ears — something readable.
- **Asymmetric details**: weapon on one side, satchel on other →
different left/right silhouette → readable orientation.
- **Negative space**: gap between arms and torso, between legs.
Adds shape variation. Avoid solid blocks.
- **Limb articulation**: separated limbs vs blob body show animation
potential.
### Comparison: bad vs good
Generic humanoid blob → unreadable.
Silhouette with: tall hat + cape + sword pointing right → instantly
"warrior".
## Character-to-tile size ratio
Match character size to gameplay needs:
```
Game style Char width × height (px) Tile size
Top-down RPG (Stardew) 16 × 32 16 px
Top-down adventure 16 × 24 16 px
Platformer (Celeste) 8 × 11 8 px
Platformer (Cuphead) 96 × 128 - (no tilemap)
Action 2D (HK) ~80 × 100 varies
Tactical RPG iso 24 × 32 24 px
JRPG overworld 16 × 16 16 px
```
Width matters for **collider** more than visuals — make collider snug
to the in-game body, not the entire sprite (cape, hair shouldn't
collide).
Height matters for **camera framing** — short character = lots of
visible scenery; tall character = framed close.
## Expressions in low resolution
At 16×16 sprite, you have ~3 pixels for an eye, 1-2 for a mouth.
Limited expressiveness.
### Eye placement
- **Single pixel** = small character / cute.
- **2 pixels horizontal** = wider feel, looking forward.
- **2 pixels stacked** = anime-style emphasis.
- **3 pixels with one as pupil** = expressive but largest.
### Mouth placement
- **Single dark pixel** = "neutral / unimportant".
- **Curved 2-3 px line** = smile / frown.
- **Open mouth** = 1-2 px gap with darker interior.
### Expression frames
Even if main animation is shared, emotional expressions can be authored
as **face-only frames** (just eyes + mouth) and overlaid on the body.
Saves art cost. Used in many JRPGs.
States to author: neutral, happy, angry, surprised, sad, hurt, thinking
(7 covers most needs).
## Anatomy shortcuts in pixel art
At 32×32, full anatomical accuracy is impossible. Use shortcuts:
### Head as sphere
Round shape with hair / hat detail. Skip ears, neck, hairline. The
silhouette tells you "head".
### Body as triangle / trapezoid
Wider shoulders / hips, narrower waist (or vice versa). Avoid square
torso (looks blocky).
### Limbs as rectangles with joints
Upper arm + forearm + hand can be 3 pixels each. Joints not visible
when in idle pose, articulate during animation.
### Hair as silhouette accent
Hair is usually a blob attached to head shape. Avoid pixel-by-pixel
strands in low-res — looks noisy. Use 1-2 darker shade values for
internal hair shading.
### Hands
At 16×16, hands are 2-3 pixels — basically "abstract paws". Detailed
hands only at 32×32+. For wielding: anchor weapon to a fixed shoulder/
hand pixel; hand detail is implied.
## Faction / role visual language
Players read characters quickly when factions have **consistent visual
codes**:
### Class color coding
- Knight = blue / silver.
- Rogue = green / dark.
- Mage = purple / red.
- Healer = white / gold.
- Beast / monster = brown / red.
(Adjust to your game; the principle is consistency, not specific colors.)
### Silhouette family
Same faction shares **silhouette traits**: all knights have helmets,
all mages have cloaks, all rogues have hoods. Player learns the
language in seconds.
### Threat encoding
Bigger sprite = bigger threat. Spikes / horns / claws on enemies =
"dangerous". Friendly NPCs are smaller, rounder, less detail. Players
parse this without conscious thought.
### Gendered design (be careful)
Stylized 2D often uses cliché shorthand: long hair = female, beard =
male, etc. This works for readability but limits design space. Modern
indies often subvert deliberately. Choose based on game tone.
## Walk cycle conveys weight + attitude
The walk cycle is where character "feels". Different characters walk
differently:
- **Heavy character**: slow cadence, large vertical bob, weight on
forward foot longer, low arm swing.
- **Light/agile character**: fast cadence, small bob, springy step,
high arm swing.
- **Sneaky / cautious**: slow + low + arms close to body.
- **Confident / strut**: shoulders high, arms swing wide, longer
stride, bobble in head.
Sample 8-frame walk for "heavy hero":
```
F1: contact, weight forward, 1px bob down
F2: full down position (lowest), recoil
F3: passing position, body lifting
F4: up position (highest), light moment
F5-F8: mirror of F1-F4 (other foot)
```
For light hero, compress to 6 frames, reduce vertical bob, faster
cadence.
## Player vs NPC distinction
In a busy crowd scene, the player MUST stand out:
- **Reserved color** for player (no NPC uses cyan, player uses cyan).
- **Higher contrast** between hero and bg vs NPC and bg.
- **Distinctive silhouette** (hero has cape; NPCs don't).
- **Outline difference** (hero's outline is full, NPCs are subtle).
Stardew Valley uses palette differentiation; Celeste uses size +
distinctive hair.
## Common bugs
- **Generic silhouette**: character forgettable. Add at least one
distinctive shape element.
- **Symmetric silhouette**: hard to tell direction. Add asymmetric
detail.
- **Pillow-shaded face**: round shading without form. Pick light
direction.
- **Expressions read as random pixels**: too small for chosen detail.
Either add height or simplify expression to 2-3 distinct pixels.
- **All NPCs look like player**: faction code missing or muted.
- **Walk cycle bobbles wrong**: contact frame is also up-position. Fix
to alternate down → up.
- **Hands move arbitrarily**: anchor hand to fixed offset from shoulder.
## See also
- [pixel-art-fundamentals/SKILL.md](../pixel-art-fundamentals/SKILL.md)
- [animation-frames/SKILL.md](../animation-frames/SKILL.md) — walk cycles
- [palettes/SKILL.md](../palettes/SKILL.md) — palette swap for variants
- [environment-design/SKILL.md](../environment-design/SKILL.md) — character vs bg readability
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!