Wiki · Devlog · ASCII Portraits

ASCII Portraits

CONTRABAND's character portraits are four-line ASCII art patterns, not illustrations. This was a budget constraint that became an aesthetic choice. Here's why it works.

The constraint

I cannot draw. More specifically, I cannot draw well enough to produce character art that would look professional in a commercial game. Commissioning illustrated portraits was budget-impossible for an indie solo project — at $50-200 per character and 20+ speaking characters, even a cheap art pass would cost $1,000+.

The obvious solution is to use generic portraits or stock art. That looked bad in prototypes. Characters felt off-brand when their visuals didn't match the game's retro-terminal aesthetic. I needed character identity without image files. I chose ASCII.

The aesthetic

Every character in CONTRABAND has a four-line ASCII portrait rendered in the game's gold accent color. Vex's is built from angular characters and slashes, giving her a sharp geometric feel. The Oracle's uses curved characters like parentheses and tildes, suggesting fluidity. The Weaver Child's uses dots and dashes — minimal, suggesting youth. Each portrait is approximately 40 characters of text and takes less than a second to design.

The result is character identity that feels hand-crafted and fits the game's broader aesthetic of text-driven narrative. Players describe portraits as "distinctive" and "memorable" more often than they describe professionally-illustrated portraits in comparable games. I believe this is because ASCII requires the player to participate in imagining the character. You are given the outline; your mind fills in the details. This is more engaging than being given a complete illustration.

The Easter egg

Vex's portrait subtly shifts between encounters. An extra tilde here, a different dot arrangement there. Players who pay attention notice after 4-5 encounters. The variations correspond to her seventeen timelines — each variation is one of her alternate-timeline selves briefly visible.

By Chapter 4, her portrait flickers between versions mid-conversation. This is a direct visualization of her multiplicity. No illustration could convey this as effectively because illustrated portraits are expected to be static. ASCII is expected to be text, which is expected to be readable, which makes variations immediately legible.

The practical benefits

When ASCII wouldn't work

ASCII portraits work for CONTRABAND because the game's broader aesthetic is text-and-terminal. A fantasy RPG with painterly illustrations would feel broken if its portraits were ASCII. The style match matters.

ASCII also struggles with emotional range. Illustrated portraits can convey sadness, anger, joy through subtle facial features. ASCII can only convey "different" — this portrait looks different from that one. For a game where emotional expression matters, this is a limitation. For CONTRABAND, where characters are mostly stoic or mysterious, it's a feature.

How I designed them

Each portrait started with a one-sentence character essence: "Vex is calm, angular, timeline-aware." I then sketched the portrait in a text editor using characters that felt matched to the essence. Angular for sharpness, curves for fluidity, dots for minimalism. Twenty characters tend to take 30-60 minutes each. The full cast of 12+ speaking characters took a weekend.

I iterated based on playtester feedback. Initial portraits were too abstract; players couldn't tell characters apart. I added distinguishing features (Oracle's parentheses-eyes, Vex's asterisk-cheekbone) that created memorable silhouettes. By the final pass, players could identify portraits without reading character names.

What I learned about constraints

Creative constraints often produce better results than creative freedom. Given infinite budget and skill, I might have commissioned illustrated portraits that looked generic. Forced into ASCII, I produced portraits that feel specific to this game and memorable in a way generic illustrations would not be. The constraint shaped the style, and the style shaped the game's identity.

This is a pattern I have seen in other indie games. Minecraft's blocky graphics were a rendering optimization that became an aesthetic. Undertale's pixelated sprites were a skill limitation that became iconic. Constraints that are consistent and embraced produce aesthetic identity more reliably than unlimited resources.