Dungeon Dialogue Interface 16x16
by Nate, Wyrm & Wand, 2026
Version 1.0

WHAT IS IN THIS FOLDER
----------------------
icons/             60 source PNG tiles, IDs 001.png through 060.png, at 16x16
                   pixels with native RGBA mode and binary alpha. Roles and
                   categories are in manifest.json.

icons_x4/          Exact 64x64 nearest-neighbour 4x copies of every source tile.

sheet_16.png       128x128 pixels, 8 columns by 8 rows. IDs 001 through 060 run
                   left to right, top to bottom. The final four cells are
                   transparent.

sheet_x4.png       Exact nearest-neighbour 4x copy of sheet_16.png, 512x512 px.

nine_slice/        15 assembled texture examples named below. The production
                   folder also contains style_comparison.png for review only;
                   it is not included in the customer archive.
preview.png        Two dialogue-scene layouts assembled from Pack 3 pieces.
manifest.json      The complete 60-tile index, categories, roles and assemblies.
LICENSE.txt        Terms for using the assets.
README_in_zip.txt  This file.

CONTENTS BY CATEGORY
--------------------
Dialogue window, Obsidian Arch .................... 9 tiles
Dialogue window, Parchment Seal ................... 9 tiles
Speaker name plate ................................ 3 tiles
Portrait frame .................................... 9 tiles
Speech bubble .................................... 16 tiles
Choice list ....................................... 3 tiles
Animation ......................................... 5 tiles
Emote bubble ...................................... 6 tiles
Total ............................................ 60 tiles

FILTERING AND TILING
--------------------
Use nearest-neighbour or point filtering. Do not smooth these textures. Keep
corners and caps fixed. Tile repeatable edges and centres rather than stretching
them, so borders and pixel detail stay crisp.

WINDOW TEXTURES
---------------
`nine_slice/obsidian_arch_3x3.png` is 48x48 px. `nine_slice/obsidian_arch_6x4.png`
is 96x64 px. IDs 001, 003, 007 and 009 are fixed corners; 002 and 008 repeat
horizontally; 004 and 006 repeat vertically; 005 repeats in both directions.
Minimum size: 48x48 px. Godot NinePatchRect margins, Unity sprite borders and
GameMaker nine-slice margins: 4 px on all sides.

`nine_slice/parchment_seal_3x3.png` is 48x48 px. `nine_slice/parchment_seal_6x4.png`
is 96x64 px. IDs 010, 012, 016 and 018 are fixed corners; 011 and 017 repeat
horizontally; 013 and 015 repeat vertically; 014 repeats in both directions.
Each 013 and 015 tile has one wax tab at its local vertical midpoint on the
outer side only. A 3x3 window therefore has one tab per outer side, while a
6x4 window has two per outer side. This is the intended repeat behavior.
Minimum size: 48x48 px. Godot, Unity and GameMaker margins: 3 px on all sides.

NAME PLATES AND PORTRAIT FRAMES
-------------------------------
`nine_slice/name_plate_48.png` is the minimum 48x16 px strip: 019, 020, 021.
`nine_slice/name_plate_80.png` is an 80x16 px repeat example: 019, 020, 020,
020, 021. 019 and 021 are fixed caps; 020 repeats. Godot, Unity and GameMaker
margins are left 4 px, top 3 px, right 4 px and bottom 3 px.

Portrait-frame border IDs are 022, 023, 024, 025, 027, 028, 029 and 030. 022,
024, 028 and 030 are corners; 023 and 029 repeat horizontally; 025 and 027
repeat vertically. Interior portrait cells are procedural transparent canvas,
not tile files. 026 is an optional opaque inset backing and is not used in an
open portrait frame.

`nine_slice/portrait_48_example.png` is a 48x48 px outer frame with a 16x16 px
opening. `nine_slice/portrait_32_opening.png` is a 64x64 px outer frame with a
32x32 px opening. `nine_slice/portrait_48_opening.png` is an 80x80 px outer
frame with a 48x48 px opening. Frame borders are not scaled. Godot, Unity and
GameMaker margins are 3 px on all sides.

BUBBLES AND CALLOUTS
--------------------
IDs 031 through 039 form the standard bubble body. Corners 031, 033, 037 and
039 stay fixed. 032 and 038 repeat horizontally; 034 and 036 repeat vertically;
035 repeats in both directions. Minimum body size: 48x48 px. Godot, Unity and
GameMaker margins: 3 px on all sides.

The supplied assembled files use these exact maps:

- `nine_slice/bubble_down_left.png`: 48x64 px. Body at y=0; 054 at cell (0,3),
  attached to the bottom edge of 037.
- `nine_slice/bubble_down_right.png`: 48x64 px. Body at y=0; 055 at cell (2,3),
  attached to the bottom edge of 039.
- `nine_slice/bubble_up.png`: 48x64 px. 056 at cell (0,0); body begins at
  y=16 px, with 056 attached to the top edge of 031.
- `nine_slice/bubble_thought.png`: 80x80 px. The bubble begins at (32,0).
  Detached puff 057 begins at (16,48); detached puff 058 begins at (0,64).
  The puffs do not attach to the body.
- `nine_slice/shout_3x3.png`: 48x48 px. Assemble it from the supplied source
  roles only, clockwise about each tile centre, with no reflection:

  ```text
  059 rotate 0°     060 rotate 0°     059 rotate 90°
  060 rotate 270°   035 rotate 0°     060 rotate 90°
  059 rotate 270°   060 rotate 180°   059 rotate 180°
  ```

  059 is the Shout Burst Corner, 060 is the Shout Burst Edge, and 035 is the
  Speech Bubble Fill. Margins are 3 px on all sides.

CHOICES, ARROWS AND INDICATORS
------------------------------
`nine_slice/choice_list.png` is a 48x32 px two-row example. 040 is the normal
row, 041 is the highlighted row, and 042 is the selector. Rows repeat for width
and list length.

Continue arrow order is 043, then 044. Typing-indicator order is 045, then 046,
then 047.

ENGINE SETTINGS
---------------
Godot 4: Set Texture Filter to Nearest. For NinePatchRect, use the margins
listed above and tile the axes that repeat.

Unity: Import as Sprite (2D and UI), set Filter Mode to Point and Compression
to None. In Sprite Editor, set the border to the stated margins. Use a Tiled
Image for repeatable window pieces.

GameMaker: Import without interpolation. Set nine-slice borders to the stated
margins and tile the middle region where that option is available.

Any engine that reads PNG can use the pack with nearest-neighbour filtering.

HOW THESE WERE MADE
-------------------
All Pack 3 assets are drawn in code as 16x16 pixel tiles. Joinable families are
drawn as continuous masters in assembly coordinates and sliced into the supplied
roles. Final examples assemble those tiles with the documented repeat maps.

SUPPORT
-------
Questions or a broken file: leave a comment on the itch.io page for this pack.
