Fantasy Portrait Mega Pack - 2,048 Characters, 16 Races, 9 Expressions Each
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.
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.

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.

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.

- 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.

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.

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.

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.

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.
| Updated | 7 days ago |
| Status | Released |
| Category | Assets |
| Author | Out of Tokens Studio |
| Genre | Role Playing |
| Made with | Phaser |
| Tags | 2D, assets, Characters, Fantasy, game-assets, Pixel Art, portraits, Sprites, sprite-sheet |
| Average session | A few minutes |
| Languages | English |
| Inputs | Keyboard, Mouse |
| AI Disclosure | AI Assisted |
Purchase
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:
Development log
- Enemy Expansion - 64 monsters, same nine expressions20 days ago
- Update: the fourth expression is now a smile35 days ago







Leave a comment
Log in with itch.io to leave a comment.