2,048 characters. 18,432 expressions. One art style. Transparent PNG, drop in and ship.

Updated — the fourth expression is now a warm, closed-mouth smile. Same files, same names, same sizes. Already own the pack? Re-download it free.

New — the Enemy Expansion. The people of this world, and now what they fight: 64 monsters in the same nine-expression format, beasts to giants. Sold separately.

Enemy Expansion — 64 monsters across 4 packs, 576 portraits

Most portrait packs give you twelve faces and leave you stuck the moment your game needs a thirteenth. This one is built for the opposite problem: a game with a lot of people in it.

Sixteen fantasy races. Four social tiers per race. Sixteen roles per tier. Both genders. Every single one drawn in the same gritty 32-bit pixel style, on the same canvas, with the same nine expressions — so the beggar in your opening scene and the dragonborn general in your final act look like they come from the same world. Because they do.

Eight races cycling through the same nine expressions in the same art style.

Play the demo — then build on it

Grumblewick is a small town built entirely from this pack, playable in your browser at the top of this page. Sixteen townsfolk, sixteen conversations, and a portrait that changes expression on the line where the mood changes — which is the whole reason the sheets carry nine cells instead of one. Walk with WASD, press E to talk.

It is a starting point, not just a showcase. The complete source ships with the pack — the town, the cast, and the code that slices a 3 × 3 sheet and drives it from a script — so you can see exactly how these portraits get wired into a real game, swap in your own characters, and keep going.

A conversation from the demo: an ogre quartermaster and a human recruit trading lines, each portrait labelled with its file path and mood.

Works in your engine

PortraitDialogue is the dialogue box the demo runs on, packaged separately and ported to three engines. The same design in each: typewriter text with punctuation beats, press to skip a line you have already read, and a portrait that swaps on mood.

The same line of dialogue rendered by all three templates: web, Godot and Unity.

  • Web — two files, no dependencies, no build step. Every colour is a CSS custom property.
  • Godot 4 — one GDScript that builds its own UI. No plugin to enable.
  • Unity 6 — one MonoBehaviour, no prefab to wire up. Built-in UI only.

The Godot and Unity versions read moods straight off a 3 × 3 sheet, so you can point them at a pack file and never cut one up. All three ship the same four sample conversations, so you can put them side by side and check the port is honest.

One stop, every portrait your game needs

You will not have to go shopping again mid-project. That is the entire point.

  • 16 races — orc, human, elf, dwarf, goblin, undead, halfling, lizardfolk, tiefling, dragonborn, drow, gnoll, minotaur, ogre, gnome, ratfolk
  • 4 social tiers per race — Commonfolk, Court & Crown, Warband, Heroes
  • 16 roles per tier — the blacksmith, the spymaster, the field surgeon, the necromancer, the court fool, the layabout
  • Both genders, drawn as counterparts: same role, same station, same palette
  • 9 expressions per character — neutral, shocked, love, happy, sleeping, angry, sad, crying, confused

That is 2,048 distinct characters, each with nine faces. Enough to cast a sprawling RPG, a kingdom management sim, a roguelike with a hundred recruitable units, or a visual novel where nobody has to share a face.

One elf shieldbearer cycling through all nine of his expressions.

Consistent enough to swap without thinking

Every file is named identically across every race and tier:

<race>/<gender>/<race>_<tier>_<NN>_<role>_<gender>.png

Role numbers are stable. 01 is the same role in every race of that tier. Swap an orc blacksmith for an elf blacksmith by changing one path segment — no code changes, no re-cropping, no re-tuning your dialogue box.

The same blacksmith role drawn for all sixteen races, labelled orc through ratfolk.

Every sheet, same format

  • 1024 × 1024 PNG, true transparent background
  • 3 × 3 grid of nine expressions of the same character — each cell 341 × 341
  • Row 1: neutral · shocked · love
  • Row 2: happy · sleeping · angry
  • Row 3: sad · crying · confused
  • Slice cell (row, col) at x = col * 341, y = row * 341

Built for dialogue systems. The expressions are the point — you can run a whole conversation off one sheet without loading another file.

One 1024 x 1024 sheet cut into its nine expression cells.

What's in the download

Four archives, one per social tier, so you can grab only what you need:

  • Commonfolk — 512 sheets. Field hands, miners, smiths, tanners, butchers, fishers, potters, weavers, cooks, brewers, woodcutters, herders, beggars, urchins, elders, layabouts.
  • Court & Crown — 512 sheets. Sovereigns, heirs, high priests, oracles, spymasters, treasurers, chancellors, generals, court mages, heralds, executioners, wardens, scribes, ambassadors, fools, bodyguards.
  • Warband — 512 sheets. Spears, shieldbearers, berserkers, archers, crossbows, riders, scouts, engineers, standards, drummers, sergeants, veterans, recruits, surgeons, quartermasters, sellswords.
  • Heroes — 512 sheets. Barbarians, bards, clerics, druids, fighters, monks, paladins, rangers, rogues, sorcerers, warlocks, wizards, artificers, blood hunters, necromancers, beastmasters.

Also included: the Grumblewick demo with full source, and PortraitDialogue as a standalone drop-in for web, Godot and Unity.

The same race drawn at all four social tiers: commonfolk, court, warband, heroes.

Try it free

The free sample is the complete Human Commonfolk pack — 32 full sheets, all 16 roles, both genders, 288 expressions. Same files, same naming, same quality as the paid archives. Drop it into your project and see whether it fits before you spend anything.

License — OutOfTokensStudio Asset License v1.0

You can: use these in unlimited commercial and non-commercial projects — no revenue cap, no royalties. Modify, recolor, re-cut and remix freely. No attribution required; credit is welcome, never necessary.

You can't: resell or redistribute the art files themselves — as a pack, as individual files, or bundled into another asset pack or template. Your game built with them is entirely yours.

The full license ships inside the download as LICENSE.txt.

Made by OutOfTokensStudio. If you ship something with these in it, I would genuinely love to see it.

Purchase

Get this asset pack and 1 more for $6.78 USD
View bundle
Buy Now
On Sale!
15% Off
$4.99 $4.24 USD or more

In order to download this asset pack you must purchase it at or above the minimum price of $4.24 USD. You will get access to the following files:

fantasy-portrait-mega-pack-free-sample.zip 38 MB
Version 4
fantasy-portrait-mega-pack-heroes.zip 621 MB
Version 4
fantasy-portrait-mega-pack-commonfolk.zip 604 MB
Version 4
fantasy-portrait-mega-pack-court-and-crown.zip 594 MB
Version 4
fantasy-portrait-mega-pack-warband.zip 616 MB
Version 4

Development log

Leave a comment

Log in with itch.io to leave a comment.