Texture atlases for faster loading, and custom fonts across the whole game.
Atlas Packer & Fonts
Two performance-and-polish tools that live in the Asset Manager.
Atlas Packer
Every separate image a zone loads is a separate request and a separate texture bind. The Atlas Packer collects the images a zone actually uses — map object sprites and tilesets — and bakes them into packed atlas pages.
> It's automatic, not a manual pick-list. You don't select images. The packer computes atlas groups from what your project already references (tilesets and objects placed in zones). If it's empty, the message reads "Place objects in a zone and add tilesets, then refresh."
How to use it (Asset Manager → Atlas Packer):
1. Refresh to compute the current groups. 2. Adjust the settings bar if needed (defaults are sensible):
| Setting | Options / default | |---------|-------------------| | Max page | 512 / 1024 / 2048 / 4096 | | Padding | 0 / 1 / 2 / 4 / 8 px between sprites | | Extrude | 0 / 1 / 2 / 4 px edge bleed (kills seam lines) | | Trim | Crop transparent borders (origin preserved) — on | | Power-of-two | Round pages up to the next POT — off | | Allow rotation | Rotate sprites 90° for a tighter pack — off |
3. Build dirty (only stale groups), Rebuild all, or build/delete a single group. The groups table shows texture count, status (Ready / Stale / Not built), page count, fill %, and bytes saved.
- Usage is computed from real references: object definitions, tilesets, and the object layers in each zone's chunks.
- Each page is a content-addressed media row, so pages dedupe and cache like any other asset. Only raster media is atlased.
- Builds are dirty-tracked — repacking after a small change doesn't rebuild everything. The output manifest is deterministic, so unchanged inputs skip the rebuild entirely.
Font Manager
This is a font manager + bitmap-atlas generator, not a glyph-drawing editor. Use it to bring in fonts and point your game's text at them.
How to use it (Asset Manager → Fonts):
1. Upload fonts (TTF, OTF, WOFF, WOFF2 — multi-file; they're grouped by family) or Add Google Font from the catalogue. 2. In Theme Roles, assign a font family to each in-game text surface:
| Role | Where it shows | |------|----------------| | HUD Body | Panel text | | HUD Heading | Panel titles | | Monospace | Numbers, timers, tabular data | | Chat | Chat log and bubbles | | Dialogue | NPC dialogue windows | | Nameplate | Names over characters (also overridable per entity type in the UI & HUD editor) | | Damage Numbers | Floating combat text |
3. For in-world text (nameplates, damage numbers — the roles marked as Pixi surfaces), click Prepare on the font card to bake a bitmap font atlas for smooth rendering in the game world. The card then shows "game: bitmap (N glyphs)."
Baking covers a configurable character set (default: Basic Latin + Latin-1, auto-extended to include glyphs your authored text actually uses), so a display font doesn't cost a megabyte of download. Large scripts like CJK are intentionally not baked — those fall back to live canvas text at runtime. DOM HUD text uses the font directly via CSS, so it stays crisp at any zoom. Role assignments sync live to connected players.