@sprite-foundry/fantasy-heroes-48 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/LICENSE +21 -0
  3. package/README.md +150 -0
  4. package/assets/barbarian/albedo/back.png +0 -0
  5. package/assets/barbarian/albedo/back_left.png +0 -0
  6. package/assets/barbarian/albedo/back_right.png +0 -0
  7. package/assets/barbarian/albedo/front.png +0 -0
  8. package/assets/barbarian/albedo/front_left.png +0 -0
  9. package/assets/barbarian/albedo/front_right.png +0 -0
  10. package/assets/barbarian/albedo/left.png +0 -0
  11. package/assets/barbarian/albedo/right.png +0 -0
  12. package/assets/barbarian/depth/back.png +0 -0
  13. package/assets/barbarian/depth/back_left.png +0 -0
  14. package/assets/barbarian/depth/back_right.png +0 -0
  15. package/assets/barbarian/depth/front.png +0 -0
  16. package/assets/barbarian/depth/front_left.png +0 -0
  17. package/assets/barbarian/depth/front_right.png +0 -0
  18. package/assets/barbarian/depth/left.png +0 -0
  19. package/assets/barbarian/depth/right.png +0 -0
  20. package/assets/barbarian/manifest.json +13 -0
  21. package/assets/barbarian/normal/back.png +0 -0
  22. package/assets/barbarian/normal/back_left.png +0 -0
  23. package/assets/barbarian/normal/back_right.png +0 -0
  24. package/assets/barbarian/normal/front.png +0 -0
  25. package/assets/barbarian/normal/front_left.png +0 -0
  26. package/assets/barbarian/normal/front_right.png +0 -0
  27. package/assets/barbarian/normal/left.png +0 -0
  28. package/assets/barbarian/normal/right.png +0 -0
  29. package/assets/barbarian/preview/contact_sheet.png +0 -0
  30. package/assets/cleric/albedo/back.png +0 -0
  31. package/assets/cleric/albedo/back_left.png +0 -0
  32. package/assets/cleric/albedo/back_right.png +0 -0
  33. package/assets/cleric/albedo/front.png +0 -0
  34. package/assets/cleric/albedo/front_left.png +0 -0
  35. package/assets/cleric/albedo/front_right.png +0 -0
  36. package/assets/cleric/albedo/left.png +0 -0
  37. package/assets/cleric/albedo/right.png +0 -0
  38. package/assets/cleric/depth/back.png +0 -0
  39. package/assets/cleric/depth/back_left.png +0 -0
  40. package/assets/cleric/depth/back_right.png +0 -0
  41. package/assets/cleric/depth/front.png +0 -0
  42. package/assets/cleric/depth/front_left.png +0 -0
  43. package/assets/cleric/depth/front_right.png +0 -0
  44. package/assets/cleric/depth/left.png +0 -0
  45. package/assets/cleric/depth/right.png +0 -0
  46. package/assets/cleric/manifest.json +13 -0
  47. package/assets/cleric/normal/back.png +0 -0
  48. package/assets/cleric/normal/back_left.png +0 -0
  49. package/assets/cleric/normal/back_right.png +0 -0
  50. package/assets/cleric/normal/front.png +0 -0
  51. package/assets/cleric/normal/front_left.png +0 -0
  52. package/assets/cleric/normal/front_right.png +0 -0
  53. package/assets/cleric/normal/left.png +0 -0
  54. package/assets/cleric/normal/right.png +0 -0
  55. package/assets/cleric/preview/contact_sheet.png +0 -0
  56. package/assets/fighter/albedo/back.png +0 -0
  57. package/assets/fighter/albedo/back_left.png +0 -0
  58. package/assets/fighter/albedo/back_right.png +0 -0
  59. package/assets/fighter/albedo/front.png +0 -0
  60. package/assets/fighter/albedo/front_left.png +0 -0
  61. package/assets/fighter/albedo/front_right.png +0 -0
  62. package/assets/fighter/albedo/left.png +0 -0
  63. package/assets/fighter/albedo/right.png +0 -0
  64. package/assets/fighter/depth/back.png +0 -0
  65. package/assets/fighter/depth/back_left.png +0 -0
  66. package/assets/fighter/depth/back_right.png +0 -0
  67. package/assets/fighter/depth/front.png +0 -0
  68. package/assets/fighter/depth/front_left.png +0 -0
  69. package/assets/fighter/depth/front_right.png +0 -0
  70. package/assets/fighter/depth/left.png +0 -0
  71. package/assets/fighter/depth/right.png +0 -0
  72. package/assets/fighter/manifest.json +13 -0
  73. package/assets/fighter/normal/back.png +0 -0
  74. package/assets/fighter/normal/back_left.png +0 -0
  75. package/assets/fighter/normal/back_right.png +0 -0
  76. package/assets/fighter/normal/front.png +0 -0
  77. package/assets/fighter/normal/front_left.png +0 -0
  78. package/assets/fighter/normal/front_right.png +0 -0
  79. package/assets/fighter/normal/left.png +0 -0
  80. package/assets/fighter/normal/right.png +0 -0
  81. package/assets/fighter/preview/contact_sheet.png +0 -0
  82. package/assets/mage/albedo/back.png +0 -0
  83. package/assets/mage/albedo/back_left.png +0 -0
  84. package/assets/mage/albedo/back_right.png +0 -0
  85. package/assets/mage/albedo/front.png +0 -0
  86. package/assets/mage/albedo/front_left.png +0 -0
  87. package/assets/mage/albedo/front_right.png +0 -0
  88. package/assets/mage/albedo/left.png +0 -0
  89. package/assets/mage/albedo/right.png +0 -0
  90. package/assets/mage/depth/back.png +0 -0
  91. package/assets/mage/depth/back_left.png +0 -0
  92. package/assets/mage/depth/back_right.png +0 -0
  93. package/assets/mage/depth/front.png +0 -0
  94. package/assets/mage/depth/front_left.png +0 -0
  95. package/assets/mage/depth/front_right.png +0 -0
  96. package/assets/mage/depth/left.png +0 -0
  97. package/assets/mage/depth/right.png +0 -0
  98. package/assets/mage/manifest.json +13 -0
  99. package/assets/mage/normal/back.png +0 -0
  100. package/assets/mage/normal/back_left.png +0 -0
  101. package/assets/mage/normal/back_right.png +0 -0
  102. package/assets/mage/normal/front.png +0 -0
  103. package/assets/mage/normal/front_left.png +0 -0
  104. package/assets/mage/normal/front_right.png +0 -0
  105. package/assets/mage/normal/left.png +0 -0
  106. package/assets/mage/normal/right.png +0 -0
  107. package/assets/mage/preview/contact_sheet.png +0 -0
  108. package/assets/monk/albedo/back.png +0 -0
  109. package/assets/monk/albedo/back_left.png +0 -0
  110. package/assets/monk/albedo/back_right.png +0 -0
  111. package/assets/monk/albedo/front.png +0 -0
  112. package/assets/monk/albedo/front_left.png +0 -0
  113. package/assets/monk/albedo/front_right.png +0 -0
  114. package/assets/monk/albedo/left.png +0 -0
  115. package/assets/monk/albedo/right.png +0 -0
  116. package/assets/monk/depth/back.png +0 -0
  117. package/assets/monk/depth/back_left.png +0 -0
  118. package/assets/monk/depth/back_right.png +0 -0
  119. package/assets/monk/depth/front.png +0 -0
  120. package/assets/monk/depth/front_left.png +0 -0
  121. package/assets/monk/depth/front_right.png +0 -0
  122. package/assets/monk/depth/left.png +0 -0
  123. package/assets/monk/depth/right.png +0 -0
  124. package/assets/monk/manifest.json +13 -0
  125. package/assets/monk/normal/back.png +0 -0
  126. package/assets/monk/normal/back_left.png +0 -0
  127. package/assets/monk/normal/back_right.png +0 -0
  128. package/assets/monk/normal/front.png +0 -0
  129. package/assets/monk/normal/front_left.png +0 -0
  130. package/assets/monk/normal/front_right.png +0 -0
  131. package/assets/monk/normal/left.png +0 -0
  132. package/assets/monk/normal/right.png +0 -0
  133. package/assets/monk/preview/contact_sheet.png +0 -0
  134. package/assets/paladin/albedo/back.png +0 -0
  135. package/assets/paladin/albedo/back_left.png +0 -0
  136. package/assets/paladin/albedo/back_right.png +0 -0
  137. package/assets/paladin/albedo/front.png +0 -0
  138. package/assets/paladin/albedo/front_left.png +0 -0
  139. package/assets/paladin/albedo/front_right.png +0 -0
  140. package/assets/paladin/albedo/left.png +0 -0
  141. package/assets/paladin/albedo/right.png +0 -0
  142. package/assets/paladin/depth/back.png +0 -0
  143. package/assets/paladin/depth/back_left.png +0 -0
  144. package/assets/paladin/depth/back_right.png +0 -0
  145. package/assets/paladin/depth/front.png +0 -0
  146. package/assets/paladin/depth/front_left.png +0 -0
  147. package/assets/paladin/depth/front_right.png +0 -0
  148. package/assets/paladin/depth/left.png +0 -0
  149. package/assets/paladin/depth/right.png +0 -0
  150. package/assets/paladin/manifest.json +13 -0
  151. package/assets/paladin/normal/back.png +0 -0
  152. package/assets/paladin/normal/back_left.png +0 -0
  153. package/assets/paladin/normal/back_right.png +0 -0
  154. package/assets/paladin/normal/front.png +0 -0
  155. package/assets/paladin/normal/front_left.png +0 -0
  156. package/assets/paladin/normal/front_right.png +0 -0
  157. package/assets/paladin/normal/left.png +0 -0
  158. package/assets/paladin/normal/right.png +0 -0
  159. package/assets/paladin/preview/contact_sheet.png +0 -0
  160. package/assets/ranger/albedo/back.png +0 -0
  161. package/assets/ranger/albedo/back_left.png +0 -0
  162. package/assets/ranger/albedo/back_right.png +0 -0
  163. package/assets/ranger/albedo/front.png +0 -0
  164. package/assets/ranger/albedo/front_left.png +0 -0
  165. package/assets/ranger/albedo/front_right.png +0 -0
  166. package/assets/ranger/albedo/left.png +0 -0
  167. package/assets/ranger/albedo/right.png +0 -0
  168. package/assets/ranger/depth/back.png +0 -0
  169. package/assets/ranger/depth/back_left.png +0 -0
  170. package/assets/ranger/depth/back_right.png +0 -0
  171. package/assets/ranger/depth/front.png +0 -0
  172. package/assets/ranger/depth/front_left.png +0 -0
  173. package/assets/ranger/depth/front_right.png +0 -0
  174. package/assets/ranger/depth/left.png +0 -0
  175. package/assets/ranger/depth/right.png +0 -0
  176. package/assets/ranger/manifest.json +13 -0
  177. package/assets/ranger/normal/back.png +0 -0
  178. package/assets/ranger/normal/back_left.png +0 -0
  179. package/assets/ranger/normal/back_right.png +0 -0
  180. package/assets/ranger/normal/front.png +0 -0
  181. package/assets/ranger/normal/front_left.png +0 -0
  182. package/assets/ranger/normal/front_right.png +0 -0
  183. package/assets/ranger/normal/left.png +0 -0
  184. package/assets/ranger/normal/right.png +0 -0
  185. package/assets/ranger/preview/contact_sheet.png +0 -0
  186. package/assets/rogue/albedo/back.png +0 -0
  187. package/assets/rogue/albedo/back_left.png +0 -0
  188. package/assets/rogue/albedo/back_right.png +0 -0
  189. package/assets/rogue/albedo/front.png +0 -0
  190. package/assets/rogue/albedo/front_left.png +0 -0
  191. package/assets/rogue/albedo/front_right.png +0 -0
  192. package/assets/rogue/albedo/left.png +0 -0
  193. package/assets/rogue/albedo/right.png +0 -0
  194. package/assets/rogue/depth/back.png +0 -0
  195. package/assets/rogue/depth/back_left.png +0 -0
  196. package/assets/rogue/depth/back_right.png +0 -0
  197. package/assets/rogue/depth/front.png +0 -0
  198. package/assets/rogue/depth/front_left.png +0 -0
  199. package/assets/rogue/depth/front_right.png +0 -0
  200. package/assets/rogue/depth/left.png +0 -0
  201. package/assets/rogue/depth/right.png +0 -0
  202. package/assets/rogue/manifest.json +13 -0
  203. package/assets/rogue/normal/back.png +0 -0
  204. package/assets/rogue/normal/back_left.png +0 -0
  205. package/assets/rogue/normal/back_right.png +0 -0
  206. package/assets/rogue/normal/front.png +0 -0
  207. package/assets/rogue/normal/front_left.png +0 -0
  208. package/assets/rogue/normal/front_right.png +0 -0
  209. package/assets/rogue/normal/left.png +0 -0
  210. package/assets/rogue/normal/right.png +0 -0
  211. package/assets/rogue/preview/contact_sheet.png +0 -0
  212. package/pack.json +18 -0
  213. package/package.json +44 -0
  214. package/previews/banner.png +0 -0
  215. package/previews/lineup.png +0 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,18 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.0.0] — Unreleased
9
+
10
+ ### Added
11
+
12
+ - 8 hero archetypes: Fighter, Ranger, Mage, Rogue, Cleric, Barbarian, Paladin, Monk
13
+ - 8 directions per variant (front, front_left, left, back_left, back, back_right, right, front_right)
14
+ - 3 layers per direction: albedo, normal map, depth map
15
+ - 192 total sprite assets (8 variants × 8 directions × 3 layers)
16
+ - Pack-level index (`pack.json`) and per-variant manifests
17
+ - Contact sheet previews per variant
18
+ - Asset verification script (`npm run verify`)
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 MCP Tool Shop
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,150 @@
1
+ <p align="center">
2
+ <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
+ </p>
4
+
5
+ <p align="center">
6
+ <img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/fantasy-heroes-sprite-pack/readme.png" width="400" alt="Fantasy Heroes" />
7
+ </p>
8
+
9
+ <p align="center">
10
+ <a href="https://github.com/mcp-tool-shop-org/fantasy-heroes-sprite-pack/actions"><img src="https://github.com/mcp-tool-shop-org/fantasy-heroes-sprite-pack/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
11
+ <a href="https://www.npmjs.com/package/@sprite-foundry/fantasy-heroes-48"><img src="https://img.shields.io/npm/v/@sprite-foundry/fantasy-heroes-48" alt="npm version" /></a>
12
+ <a href="https://github.com/mcp-tool-shop-org/fantasy-heroes-sprite-pack/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT License" /></a>
13
+ <a href="https://mcp-tool-shop-org.github.io/fantasy-heroes-sprite-pack/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page" /></a>
14
+ </p>
15
+
16
+ A 48px, 8-direction pixel-art hero party pack with albedo, normal, and depth maps for engine-agnostic game use.
17
+
18
+ ![Fantasy Heroes Banner](previews/banner.png)
19
+
20
+ ## What's Included
21
+
22
+ 8 hero archetypes forming a complete adventuring party:
23
+
24
+ ![Variant Lineup](previews/lineup.png)
25
+
26
+ | Variant | Role | Silhouette |
27
+ |---------|------|------------|
28
+ | Fighter | Frontline all-rounder | Sword + shield, balanced armored frame |
29
+ | Ranger | Ranged striker | Bow, cloak, lighter silhouette |
30
+ | Mage | Caster | Staff, robe, high magical silhouette |
31
+ | Rogue | Flanker | Hood, light armor, daggers, low agile posture |
32
+ | Cleric | Healer/support | Flanged mace, buckler with sun emblem, vestments |
33
+ | Barbarian | Heavy damage | Huge weapon, broad upper body, fur/leather mass |
34
+ | Paladin | Elite tank | Full plate, kite shield, warhammer, cape |
35
+ | Monk | Fast specialist | Unarmored, wraps, bo staff, disciplined silhouette |
36
+
37
+ Each variant ships with three map layers:
38
+
39
+ - **Albedo** — base color sprites (transparent PNG)
40
+ - **Normal** — normal maps for dynamic lighting
41
+ - **Depth** — depth maps for parallax and elevation effects
42
+
43
+ ## Install
44
+
45
+ ```bash
46
+ npm install @sprite-foundry/fantasy-heroes-48
47
+ ```
48
+
49
+ ## Folder Structure
50
+
51
+ ```
52
+ assets/
53
+ fighter/
54
+ albedo/ 8 directional PNGs (front, front_left, left, back_left, back, back_right, right, front_right)
55
+ normal/ 8 matching normal maps
56
+ depth/ 8 matching depth maps
57
+ preview/ contact sheet
58
+ manifest.json
59
+ ranger/
60
+ mage/
61
+ rogue/
62
+ cleric/
63
+ barbarian/
64
+ paladin/
65
+ monk/
66
+ pack.json pack-level index
67
+ previews/ banner and lineup sheets
68
+ ```
69
+
70
+ ## Manifest Format
71
+
72
+ Each variant has a `manifest.json`:
73
+
74
+ ```json
75
+ {
76
+ "slug": "fighter",
77
+ "name": "Fighter",
78
+ "version": "1.0.0",
79
+ "tileSize": 48,
80
+ "directions": ["front", "front_left", "left", "back_left", "back", "back_right", "right", "front_right"],
81
+ "layers": {
82
+ "albedo": "albedo/{direction}.png",
83
+ "normal": "normal/{direction}.png",
84
+ "depth": "depth/{direction}.png"
85
+ },
86
+ "preview": "preview/contact_sheet.png"
87
+ }
88
+ ```
89
+
90
+ The pack-level `pack.json` indexes all variants with paths to each manifest.
91
+
92
+ ## Engine Compatibility
93
+
94
+ These are plain PNG files with JSON metadata. They work with any engine or framework that can load images:
95
+
96
+ - Phaser
97
+ - PixiJS
98
+ - Godot
99
+ - RPG Maker
100
+ - Unity (2D)
101
+ - Custom engines
102
+
103
+ No engine-specific format or runtime dependency.
104
+
105
+ ## Specs
106
+
107
+ - **Tile size:** 48 x 48 px
108
+ - **Directions:** 8 (front, front_left, left, back_left, back, back_right, right, front_right)
109
+ - **Format:** transparent PNG
110
+ - **Maps:** albedo + normal + depth
111
+ - **Animation:** static poses (v1)
112
+ - **Perspective:** top-down
113
+
114
+ ## Extending the Pack
115
+
116
+ Want to generate additional hero variants that match this pack's art style and export contract?
117
+
118
+ This pack was produced with [Sprite Foundry](https://github.com/mcp-tool-shop-org/sprite-foundry), an open-source ComfyUI + SDXL pixel-art generation pipeline. The foundry repo contains everything you need:
119
+
120
+ - **Generation pipeline** — `pipeline/foundry_gen.py` drives ComfyUI with per-subject configs
121
+ - **Subject configs** — `pipeline/chars/hero_*.json` define the exact prompts, seeds, silhouette rules, and reject conditions for every variant in this pack
122
+ - **Batch manifest** — `pipeline/manifests/fantasy_heroes_03.json` maps all 8 configs to the export structure
123
+ - **Export CLI** — `foundry export <run_id>` produces deterministic packs with checksums
124
+ - **ControlNet tuning** — humanoid depth strength 0.60, end% 0.85 (documented in the manifest)
125
+
126
+ To add a new variant:
127
+
128
+ 1. Create a subject config in `pipeline/chars/` following the existing hero configs
129
+ 2. Register: `python -m foundry.cli subject-add <id> --name "Name"`
130
+ 3. Generate: `python -m pipeline.foundry_gen --config pipeline/chars/<config>.json`
131
+ 4. Review, accept, produce maps, accept finish, export
132
+ 5. Copy the exported pack into the matching `assets/<slug>/` directory
133
+
134
+ The [Sprite Foundry README](https://github.com/mcp-tool-shop-org/sprite-foundry#readme) has the full pipeline walkthrough.
135
+
136
+ ## Security
137
+
138
+ This package contains **only static PNG images and JSON metadata**. There is no executable code, no install hooks, no network access, and no telemetry. Assets are read-only by design.
139
+
140
+ See [SECURITY.md](SECURITY.md) for the full security policy.
141
+
142
+ ## License
143
+
144
+ MIT — use in commercial and non-commercial projects.
145
+
146
+ ## Credits
147
+
148
+ Generated with [Sprite Foundry](https://github.com/mcp-tool-shop-org/sprite-foundry) using ComfyUI + SDXL pixel-art pipeline.
149
+
150
+ Built by <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,13 @@
1
+ {
2
+ "slug": "barbarian",
3
+ "name": "Barbarian",
4
+ "version": "1.0.0",
5
+ "tileSize": 48,
6
+ "directions": ["front", "front_left", "left", "back_left", "back", "back_right", "right", "front_right"],
7
+ "layers": {
8
+ "albedo": "albedo/{direction}.png",
9
+ "normal": "normal/{direction}.png",
10
+ "depth": "depth/{direction}.png"
11
+ },
12
+ "preview": "preview/contact_sheet.png"
13
+ }
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,13 @@
1
+ {
2
+ "slug": "cleric",
3
+ "name": "Cleric",
4
+ "version": "1.0.0",
5
+ "tileSize": 48,
6
+ "directions": ["front", "front_left", "left", "back_left", "back", "back_right", "right", "front_right"],
7
+ "layers": {
8
+ "albedo": "albedo/{direction}.png",
9
+ "normal": "normal/{direction}.png",
10
+ "depth": "depth/{direction}.png"
11
+ },
12
+ "preview": "preview/contact_sheet.png"
13
+ }
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,13 @@
1
+ {
2
+ "slug": "fighter",
3
+ "name": "Fighter",
4
+ "version": "1.0.0",
5
+ "tileSize": 48,
6
+ "directions": ["front", "front_left", "left", "back_left", "back", "back_right", "right", "front_right"],
7
+ "layers": {
8
+ "albedo": "albedo/{direction}.png",
9
+ "normal": "normal/{direction}.png",
10
+ "depth": "depth/{direction}.png"
11
+ },
12
+ "preview": "preview/contact_sheet.png"
13
+ }
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,13 @@
1
+ {
2
+ "slug": "mage",
3
+ "name": "Mage",
4
+ "version": "1.0.0",
5
+ "tileSize": 48,
6
+ "directions": ["front", "front_left", "left", "back_left", "back", "back_right", "right", "front_right"],
7
+ "layers": {
8
+ "albedo": "albedo/{direction}.png",
9
+ "normal": "normal/{direction}.png",
10
+ "depth": "depth/{direction}.png"
11
+ },
12
+ "preview": "preview/contact_sheet.png"
13
+ }
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,13 @@
1
+ {
2
+ "slug": "monk",
3
+ "name": "Monk",
4
+ "version": "1.0.0",
5
+ "tileSize": 48,
6
+ "directions": ["front", "front_left", "left", "back_left", "back", "back_right", "right", "front_right"],
7
+ "layers": {
8
+ "albedo": "albedo/{direction}.png",
9
+ "normal": "normal/{direction}.png",
10
+ "depth": "depth/{direction}.png"
11
+ },
12
+ "preview": "preview/contact_sheet.png"
13
+ }
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,13 @@
1
+ {
2
+ "slug": "paladin",
3
+ "name": "Paladin",
4
+ "version": "1.0.0",
5
+ "tileSize": 48,
6
+ "directions": ["front", "front_left", "left", "back_left", "back", "back_right", "right", "front_right"],
7
+ "layers": {
8
+ "albedo": "albedo/{direction}.png",
9
+ "normal": "normal/{direction}.png",
10
+ "depth": "depth/{direction}.png"
11
+ },
12
+ "preview": "preview/contact_sheet.png"
13
+ }
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,13 @@
1
+ {
2
+ "slug": "ranger",
3
+ "name": "Ranger",
4
+ "version": "1.0.0",
5
+ "tileSize": 48,
6
+ "directions": ["front", "front_left", "left", "back_left", "back", "back_right", "right", "front_right"],
7
+ "layers": {
8
+ "albedo": "albedo/{direction}.png",
9
+ "normal": "normal/{direction}.png",
10
+ "depth": "depth/{direction}.png"
11
+ },
12
+ "preview": "preview/contact_sheet.png"
13
+ }
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,13 @@
1
+ {
2
+ "slug": "rogue",
3
+ "name": "Rogue",
4
+ "version": "1.0.0",
5
+ "tileSize": 48,
6
+ "directions": ["front", "front_left", "left", "back_left", "back", "back_right", "right", "front_right"],
7
+ "layers": {
8
+ "albedo": "albedo/{direction}.png",
9
+ "normal": "normal/{direction}.png",
10
+ "depth": "depth/{direction}.png"
11
+ },
12
+ "preview": "preview/contact_sheet.png"
13
+ }
Binary file
Binary file
Binary file
Binary file
package/pack.json ADDED
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "Fantasy Heroes",
3
+ "slug": "fantasy-heroes-03",
4
+ "version": "1.0.0",
5
+ "tileSize": 48,
6
+ "directions": ["front", "front_left", "left", "back_left", "back", "back_right", "right", "front_right"],
7
+ "layers": ["albedo", "normal", "depth"],
8
+ "variants": [
9
+ { "slug": "fighter", "name": "Fighter", "role": "frontline all-rounder", "path": "assets/fighter/manifest.json" },
10
+ { "slug": "ranger", "name": "Ranger", "role": "ranged striker", "path": "assets/ranger/manifest.json" },
11
+ { "slug": "mage", "name": "Mage", "role": "caster", "path": "assets/mage/manifest.json" },
12
+ { "slug": "rogue", "name": "Rogue", "role": "flanker", "path": "assets/rogue/manifest.json" },
13
+ { "slug": "cleric", "name": "Cleric", "role": "healer/support", "path": "assets/cleric/manifest.json" },
14
+ { "slug": "barbarian", "name": "Barbarian", "role": "heavy damage", "path": "assets/barbarian/manifest.json" },
15
+ { "slug": "paladin", "name": "Paladin", "role": "elite tank", "path": "assets/paladin/manifest.json" },
16
+ { "slug": "monk", "name": "Monk", "role": "fast specialist", "path": "assets/monk/manifest.json" }
17
+ ]
18
+ }
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@sprite-foundry/fantasy-heroes-48",
3
+ "version": "1.0.0",
4
+ "description": "Fantasy Heroes — Pack 03 | 8 hero archetypes × 8 directions × 3 layers | 48px pixel-art sprite pack",
5
+ "author": "mcp-tool-shop",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/mcp-tool-shop-org/fantasy-heroes-sprite-pack"
10
+ },
11
+ "homepage": "https://mcp-tool-shop-org.github.io/fantasy-heroes-sprite-pack/",
12
+ "keywords": [
13
+ "sprites",
14
+ "pixel-art",
15
+ "fantasy",
16
+ "heroes",
17
+ "party",
18
+ "game-assets",
19
+ "48px",
20
+ "normal-maps",
21
+ "depth-maps",
22
+ "8-direction",
23
+ "rpg",
24
+ "dungeon-crawler",
25
+ "tactics"
26
+ ],
27
+ "scripts": {
28
+ "verify": "node -e \"const fs=require('fs');const p=require('./pack.json');let ok=true;for(const v of p.variants){const m=JSON.parse(fs.readFileSync(v.path,'utf8'));for(const d of m.directions){for(const[l,pat]of Object.entries(m.layers)){const f=v.path.replace('manifest.json','')+pat.replace('{direction}',d);if(!fs.existsSync(f)){console.error('MISSING:',f);ok=false}}}}if(ok){console.log('All assets verified')}else{process.exit(1)}\""
29
+ },
30
+ "files": [
31
+ "assets/",
32
+ "previews/",
33
+ "pack.json",
34
+ "CHANGELOG.md",
35
+ "LICENSE",
36
+ "README.md"
37
+ ],
38
+ "engines": {
39
+ "node": ">=14.0.0"
40
+ },
41
+ "publishConfig": {
42
+ "access": "public"
43
+ }
44
+ }
Binary file
Binary file