The one canonical avatar and sprite-animation authoring surface.
Avatar & Sprite Editor
ED5 has one canonical avatar model, backed by shared sprite assets, and it's reused everywhere a character appears — playable characters, mobs, and NPCs. Build a sprite once and it works across the whole game; there's no parallel per-entity system to keep in sync.
> What this editor actually is. The Avatar & Sprite Editor is a tool for taking a sprite sheet and telling the engine how to read it — which rows and frames make up "walk," how many directions it has, how fast it plays, and so on. Its list of "animations" (idle, walk, attack…) is sometimes called "layers," but these are animation slots, not body/face/hair paperdoll layers. (Equipment appearance is composited at runtime from each equipped item's own sprite — you don't stack body parts here.)
Where you'll find it
The same editor is embedded wherever a character needs a look:
| Where | Context |
|---|---|
| Characters | The "Avatar" tab on a character template |
| Mobs | A mob's appearance/avatar section |
| NPCs | NPC appearance |
| Pets & Mounts | Their Visuals / Animations tabs |
| Items → Visuals | Weapon/armor equipped sprites — browse the gallery, or create/edit the sprite asset right from the item |
| Items → Chest | Chest items get an animated sprite (opened/closed states) |
| Events | An event actor's sprite |
| Asset Manager → Animations | The standalone place to author reusable sprite assets |
Improvements to the pipeline (new animation types, better import) benefit every entity at once.
The two panels
The editor has a Sprite Sheet panel (the source art) and an Animations panel (how to read it), a live preview, plus Scale and Recolor.
1. Set the sprite sheet
- Main Sprite Sheet — pick a sheet from the media library (or upload/generate one on the spot). Every animation reads from this sheet unless you override it.
- Save to Sprites / Load saved sprite — save your configured sheet as a reusable sprite asset (stored in the shared library), or load one you saved earlier. Saving uploads the sheet to storage first, so big sheets don't hit upload limits.
- Finding a saved sprite — open Load saved sprite and type to filter by name, tag or id. Every row shows a thumbnail of the sprite's idle frame, and the row you're on gets a larger preview with its frame size and animation count, so you can tell
bandit 4_1frombandit 5_1before you load it. ↑/↓ move, Enter picks, Esc closes. Picking only selects — press Load to replace what's in the editor. A very large packed sheet shows "Large packed sheet — no preview" instead of a thumbnail, because rendering it would stall the editor. - Per-animation override — any single animation can use a separate sheet instead of the main one.
2. Import a sheet and map its animations
The Import Sheet button opens a mapper that understands three common sheet formats:
| Mode | For | Key options |
|---|---|---|
| 50×50 Sheet | PVGames / RPG-Tools universal sheets | Sheet type (auto / character / creature); an animation checklist (with All / None) covering ~70 named slots — Walk, Run, Idle, Interact, Cast, weapon-stance attacks (1-H, 2-H, dual-wield, bow, unarmed, polearm, pistol, rifle), death poses, and more. Frame size is derived from the sheet automatically. |
| RPG Maker | RPG Maker character sheets | Layout (single 3×4 or full 12×8) and, for the full sheet, a Character Index grid. Generates idle + walk in the four cardinal directions. |
| Legacy PVG | Folders of per-animation strips | A folder picker; optionally composite a combined mastersheet (character or monster). |
A full 12×8 RPG Maker sheet holds eight characters — four across, two down, each a 3×4 walk block. Character Index picks which one, numbered left-to-right then top-to-bottom (0–3 on the top row, 4–7 on the bottom). The same index is honoured everywhere that sheet is used: the character itself, the map event preview in the zone editor, and the event's sprite in-game. Sheets whose filename starts with $ hold a single character and ignore the index.
Each animation in the checklist shows its frame range, per-facing frame count, and badges like offset or requires editing so you know which ones may need a tweak after import. Import cuts each selected animation into an optimized per-animation sheet automatically.
Importing several characters at once
Opening Import Sheet from the Sprite Assets list (not from inside a sprite you're editing) adds an "Or import several characters at once" file picker to the 50×50 mode and to RPG Maker mode.
Bulk-importing a folder of RPG Maker characters
In RPG Maker mode the same picker becomes "Or bulk import a folder of character sheets" — point it at a whole character folder and every sheet is imported in one go, one sprite asset per character.
You do not have to sort the folder first. Each file is read on its own and sliced according to RPG Maker's own naming rule:
| File | Read as | Assets produced |
|---|---|---|
Actor1.png | Packed sheet, 12×8 | Up to eight, named Actor1_1 … Actor1_8 |
$Boat.png | Single character, 3×4 | One, named Boat |
!$Chest.png | Single character (the ! is a draw flag, not a layout one) | One, named Chest |
The $ always wins over the pixel size. This matters more than it sounds: a 576×384 sheet divides evenly into both a 12×8 packed grid and a 3×4 single, so the dimensions alone cannot tell them apart. The prefix is the author's explicit statement and is trusted first. Only when there is no prefix does the importer fall back to whichever grid the image actually fits, preferring the packed reading.
Empty character slots are skipped. Packed sheets routinely ship with two or three of their eight slots blank; importing those would bury the real characters under empty assets. Any slot that is fully transparent is left out, and the toast tells you how many were skipped.
One bad file does not stop the run. A sheet whose size fits neither grid — a logo or a portrait that wandered into the folder — is reported by name at the end while everything else still imports.
#### Gotchas
- Names must not already exist. Eight characters from
Actor1.pngbecomeActor1_1throughActor1_8; importing the same file twice creates a second set rather than replacing the first. - The sheet is shared, not cut. All eight characters reference the same uploaded image with different offsets, so re-importing one character does not duplicate the sheet — but deleting the underlying media breaks all eight.
- Frame size comes from the sheet. A packed sheet's frame is width ÷ 12 by height ÷ 8; a single is width ÷ 3 by height ÷ 4. Sheets with padding or margins are not supported — trim them first.
- Only idle and walk are generated, in the four cardinal directions, because that is all an RPG Maker character sheet contains. Add further animations in the sprite editor afterwards. Pick any number of universal sheets and each one is imported as its own sprite asset, named after its file, using the animation checklist you've set.
- The single-sheet picker is ignored while a batch is queued — the queued files win.
- A bad sheet doesn't sink the batch. Anything that isn't a square sheet divisible by 50 (a 21×21 creature sheet, an arbitrary PNG) is skipped and named in the summary; every other sheet still imports.
- Sheets are cut one at a time on purpose. A 10000×10000 sheet costs roughly 380 MB of memory just to decode, so cutting two at once risks crashing the browser tab. The animations within each sheet are cut and uploaded in parallel, which is where the speed comes from.
- Re-importing is cheap. Cuts already made from a sheet are detected and reused rather than re-cut and re-uploaded.
3. Fine-tune each animation
Add slots with + Add Animation (categorized: Movement, Combat, Weapon Attacks, Actions, Social, Mounted, Chest) and remove them with the ✕. Select one to open its detail editor:
| Control | What it does |
|---|---|
| Frame size (Cell Width / Height) | The size of one frame; changing it recomputes the grid |
| Frame Layout Mode | Row/Col grid, or a linear strip of frames |
| Frame Count | Frames per direction (or per row) |
| Directions | How many direction rows the sheet has |
| Start Row / Start Column (or Start Frame #) | Where this animation begins in the sheet |
| Frame Duration (ms) | Time per frame; the editor shows the resulting FPS and warns if it's jittery |
| Playback Speed × | A multiplier on top of the frame duration |
| Looping | Loop, or play once |
| Breathing Effect | A subtle idle "breathing" scale for static sprites, with an intensity slider |
Two power tools handle awkward sheets:
- Direction Mapping — when a sheet's direction rows aren't in the engine's default order (common with imported "riding" blocks), point each of the eight facings (N, NE, E, …) at the correct row. Live thumbnails show what each facing will render.
- Cell Selection — click cells on the sheet in playback order to define an animation frame-by-frame when the grid isn't uniform.
4. Scale and recolor
- In-World Scale — a size multiplier for how big the sprite renders in game (slider + number field).
- Recolor (when the sprite-recolor feature is enabled) — a non-destructive recipe baked into the sheet at decode time; your source art is never modified and Reset restores it instantly. Choose a preset (Red/Blue/Green Team, Gold Trim, Frost, Shadow, Undead) or dial Hue, Saturation, and Lightness. Presets may add advanced palette operations; those are preserved and shown as a badge even though the sliders only edit the basic hue/sat/light shift.
5. Preview
The preview canvas plays the selected animation. Controls: pick an animation, Play/Pause, speed (0.5× / 1× / 2× / 4×), and step through direction rows to check every facing. A frame-strip grid shows the raw frames the editor is reading.
When a sheet doesn't have an animation
Not every pack paints every animation slot, and the engine handles the gaps predictably:
- Characters, mobs and NPCs fall back to idle. When the game asks for an animation the sheet doesn't have — or one that was imported as an empty region of the sheet — the engine tries close alternatives first (run → walk, loot/interact → use-item) and settles on idle. A character never turns invisible because a pose is missing.
- Worn armour borrows the closest pose it has. Armour, helmets, boots, capes — anything worn rather than held — never vanishes because a pose is missing. If the sheet has no art for the animation the body is playing, the engine wears the nearest pose it does paint, preferring the wearer's own weapon stance, then the plain rows, then another stance's. A pack cut with only
1h-idleand1h-walktherefore stays on screen while the character runs, swings, and puts their weapon away. - Held items hide instead of guessing. A weapon or shield with no art for the current animation is hidden for that animation and reappears on the next one its sheet does draw. That is deliberate, and it's the same rule that makes a sheathed weapon disappear out of combat — borrowing a walk pose here would leave a weapon floating beside a running character. A single blank frame inside an otherwise-drawn animation holds the last visible frame instead, so brief gaps don't flicker.
Automating recolors with AI
The avatar-recolor-set AI action recolors a whole family at once (mobs, character templates, pets, mounts) using a preset or an explicit hue/saturation/lightness recipe — handy for turning one mob into team-colored variants.
> Current limitations to know: animations can't be drag-reordered (they stay in the order added), there's no manual anchor/offset field (anchoring is automatic), and the cell-picker / frame-strip are disabled for very large "packed" sheets to keep the editor responsive.