magicciv/tools/standin-sprites/icon_rules.json
autocommit f88e9b072e feat(sprites): OSS standin coverage p2-23..27 (536 PNGs) + xi-v11 charter
- 536 game-icons.net CC-BY-3.0 standins fill every renderer slot (units/buildings/wonders/city-tiers), id-keyed flat layout
- LICENSES.md (536 ledgered rows, SHA256), STANDINS.md, sprite-license-audit passes
- build_standins.py rewritten data-driven off manifest + icon_rules.json (replaces mapping.json)
- juggernaut-xi-v11 added to approved model list (charter + 2 instruction modules), operator decision
- objectives p2-23..27 + p2-22: partial (standin coverage; final art deferred)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 04:40:14 -07:00

420 lines
No EOL
16 KiB
JSON

{
"_comment": "Keyword -> game-icons.net icon resolution for OSS stand-in sprites, Age of Dwarves Game 1. The build script (build_standins.py) reads the game's manifest subscription (public/games/age-of-dwarves/manifest.json -> subscribes.units / .buildings), resolves each subscribed id to the literal sprite path(s) declared in public/resources/<cat>/<id>.json, and picks a thematically-plausible CC-BY-3.0 silhouette per id from the tables below. All icons are CC-BY-3.0 from github.com/game-icons/icons. Re-run tools/standin-sprites/build_standins.py after editing. Resolution order per id: explicit `overrides` first, then first matching substring in `keywords` (longest key wins), then the category `default`.",
"source": {
"repo": "game-icons/icons",
"raw_base": "https://raw.githubusercontent.com/game-icons/icons/master",
"page_base": "https://game-icons.net/1x1",
"license": "cc-by-3.0",
"authors": {
"lorc": "Lorc",
"delapouite": "Delapouite",
"sbed": "Sbed",
"skoll": "Skoll",
"heavenly-dog": "HeavenlyDog",
"carl-olsen": "Carl Olsen",
"faithtoken": "Faithtoken",
"quoting": "Quoting",
"cathelineau": "Cathelineau",
"willdabeast": "Willdabeast",
"darkzaitzev": "DarkZaitzev",
"john-colburn": "John Colburn",
"guard13007": "Guard13007",
"kier-heyl": "Kier Heyl",
"aussiesim": "Aussiesim",
"caro-asercion": "Caro Asercion",
"spencerdub": "Spencerdub",
"john-redman": "John Redman"
}
},
"render": {
"units": {
"size": 56,
"style": "glyph_shadow",
"glyph": "#F4ECD2",
"dir": "units"
},
"wild": {
"size": 56,
"style": "glyph_shadow",
"glyph": "#E6DECB",
"dir": "units"
},
"cities": {
"size": 56,
"style": "glyph_shadow",
"glyph": "#EFE6CC",
"dir": "cities"
},
"buildings": {
"size": 64,
"style": "plate_stone",
"glyph": "#ECDCB4",
"dir": "buildings"
},
"wonders": {
"size": 96,
"style": "plate_gold",
"glyph": "#FCEFC6",
"dir": "buildings"
}
},
"cities": {
"city_q1": "delapouite/hut",
"city_q2": "delapouite/huts-village",
"city_q3": "delapouite/village",
"city_q4": "delapouite/hill-fort",
"city_q5": "delapouite/castle"
},
"units": {
"default": "delapouite/dwarf-face",
"overrides": {
"archer": "delapouite/archer",
"berserker": "delapouite/barbarian",
"dwarf_berserker": "delapouite/barbarian",
"cavalry": "delapouite/cavalry",
"pikeman": "lorc/barbed-spear",
"pike_guard": "lorc/barbed-spear",
"runesmith": "lorc/rune-stone",
"rune_scribe": "lorc/rune-stone",
"rune_spear": "lorc/rune-stone",
"spearmen": "lorc/spears",
"dwarf_spearman": "lorc/spears",
"warrior": "lorc/broadsword",
"dwarf_warrior": "lorc/broadsword",
"worker": "delapouite/miner",
"dwarf_woodcutter": "lorc/wood-axe",
"dwarf_master_woodcutter": "lorc/wood-axe",
"ancient_hydra": "lorc/hydra",
"basilisk_wild": "lorc/snake-totem",
"dire_bear": "delapouite/bear-head",
"dire_wolf": "lorc/wolf-head",
"drake_wild": "lorc/sea-dragon",
"elder_wyrm": "lorc/dragon-spiral",
"feral_spider": "lorc/hanging-spider",
"fire_imp": "lorc/imp",
"frostfang_alpha": "skoll/fangs",
"garden_snail": "lorc/snail",
"lava_elemental": "sbed/lava",
"shambling_dead": "delapouite/half-body-crawling",
"stone_sentinel": "delapouite/rock-golem",
"wild_wyvern": "lorc/wyvern",
"wolf_pack": "lorc/wolf-howl",
"goretooth": "skoll/fangs",
"doomsoul": "lorc/spectre",
"soulbolt": "lorc/energy-arrow",
"forge_titan": "delapouite/mighty-force",
"mountain_king": "delapouite/throne-king",
"dwarf_founder": "delapouite/caravan",
"founder": "delapouite/caravan",
"dwarf_tribe": "delapouite/family-house",
"dwarf_wanderer": "lorc/walking-boot",
"beacon_bearer": "lorc/light-bulb",
"loremaster": "lorc/book-cover",
"sage": "delapouite/teacher",
"saga_singer": "lorc/lyre",
"bard": "lorc/lyre",
"guildmaster": "lorc/key",
"merchant": "delapouite/two-coins",
"caravan_master": "delapouite/caravan",
"cartographer": "lorc/treasure-map",
"resonance_telegrapher": "skoll/sound-waves",
"steam_messenger": "lorc/envelope",
"hold_courier": "lorc/envelope",
"foot_runner": "lorc/run",
"tunnel_runner": "lorc/run",
"dwarf_silent_runner": "lorc/run",
"hold_network_warden": "lorc/radar-dish"
},
"keywords": {
"submarine": "delapouite/submarine-missile",
"destroyer": "delapouite/cargo-ship",
"dreadnought": "cathelineau/battleship",
"fortress_ship": "cathelineau/battleship",
"cruiser": "delapouite/cargo-ship",
"frigate": "delapouite/sailboat",
"corvette": "delapouite/sailboat",
"galley": "delapouite/galley",
"barge": "delapouite/cargo-ship",
"warship": "cathelineau/battleship",
"carrier": "cathelineau/battleship",
"zeppelin": "skoll/zeppelin",
"sky_fortress": "skoll/zeppelin",
"bomber": "lorc/bombing-run",
"iron_hawk": "quoting/biplane",
"gyrocopter": "quoting/biplane",
"flak": "lorc/cannon-ball",
"rocket": "lorc/missile-swarm",
"rail_cannon": "lorc/cannon",
"cannon": "lorc/cannon",
"bombard": "lorc/cannon",
"howitzer": "lorc/cannon",
"artillery": "lorc/cannon",
"mortar": "delapouite/mortar-shells",
"field_gun": "lorc/cannon",
"machine_gun": "skoll/machine-gun",
"gatling": "skoll/machine-gun",
"rifleman": "skoll/winchester-rifle",
"rifle": "skoll/winchester-rifle",
"marksman": "skoll/winchester-rifle",
"hand_cannon": "lorc/blunderbuss",
"cannoneer": "lorc/blunderbuss",
"thunderer": "lorc/blunderbuss",
"trooper": "delapouite/person",
"commando": "delapouite/person",
"trench": "delapouite/person",
"emp": "lorc/electric",
"engineer": "lorc/auto-repair",
"sapper": "lorc/dig-dug",
"powder_sapper": "lorc/unstable-projectile",
"smith": "lorc/anvil",
"prospector": "delapouite/miner",
"scout": "delapouite/look-at",
"deep_scout": "delapouite/look-at",
"deep_eye": "lorc/eyeball",
"deep_guard": "willdabeast/round-shield",
"boar_scout": "caro-asercion/boar",
"ram_rider": "darkzaitzev/ram",
"tusker": "delapouite/elephant",
"war_ram": "darkzaitzev/ram",
"arbalest": "carl-olsen/crossbow",
"crossbow": "carl-olsen/crossbow",
"ballista": "skoll/ballista",
"bolt_thrower": "skoll/ballista",
"bolt": "skoll/ballista",
"catapult": "heavenly-dog/catapult",
"trebuchet": "delapouite/trebuchet",
"quarrel": "carl-olsen/crossbow",
"axeman": "lorc/battle-axe",
"halberd": "lorc/halberd",
"hammerguard": "lorc/flat-hammer",
"hammer": "lorc/flat-hammer",
"graven_warrior": "delapouite/stone-bust",
"golem": "delapouite/rock-golem",
"colossus": "delapouite/rock-golem",
"sentinel": "delapouite/guards",
"sentry": "delapouite/guards",
"bulwark": "willdabeast/round-shield",
"shield": "willdabeast/round-shield",
"defender": "willdabeast/round-shield",
"guard": "delapouite/guards",
"warden": "delapouite/guards",
"vanguard": "delapouite/sword-brandish",
"champion": "delapouite/sword-brandish",
"plated": "lorc/mail-shirt",
"riveted": "lorc/mail-shirt",
"anvil_guard": "lorc/anvil",
"anti_charge": "lorc/spears",
"anti_tank": "skoll/winchester-rifle",
"tank": "cathelineau/great-war-tank",
"strider": "delapouite/mecha-head",
"walker": "delapouite/mecha-head",
"steam_walker": "delapouite/mecha-head",
"strike_walker": "delapouite/mecha-head",
"steam_golem": "delapouite/mecha-head",
"stormbolt": "lorc/lightning-bow",
"storm": "lorc/lightning-trio",
"thunder": "lorc/lightning-trio",
"medic": "sbed/medical-pack",
"surgeon": "sbed/medical-pack",
"priest": "lorc/prayer",
"raider": "skoll/raise-skeleton",
"ancestral_walker": "delapouite/stone-bust",
"iron_strider": "delapouite/mecha-head",
"adamantine": "lorc/cut-diamond",
"mithril": "lorc/cut-diamond",
"ironwarden": "delapouite/guards",
"iron": "delapouite/metal-bar",
"spear": "lorc/spears",
"war": "lorc/crossed-swords",
"field": "lorc/cannon"
}
},
"buildings": {
"default": "delapouite/house",
"wonder_default": "delapouite/greek-temple",
"overrides": {
"ale_hall": "lorc/beer-stein",
"brewery": "lorc/beer-stein",
"barracks": "delapouite/barracks",
"bathhouse": "delapouite/bathtub",
"colosseum": "sbed/arena",
"grand_amphitheater": "sbed/arena",
"forge": "lorc/anvil",
"smithy": "lorc/anvil",
"iron_forge": "lorc/anvil",
"steam_forge": "lorc/anvil",
"war_foundry": "lorc/anvil",
"library": "delapouite/bookshelf",
"great_library": "delapouite/bookshelf",
"great_library_of_nature": "delapouite/bookshelf",
"scriptorium": "lorc/scroll-unfurled",
"marketplace": "delapouite/shop",
"market": "delapouite/shop",
"bazaar": "delapouite/shop",
"mercantile_exchange": "delapouite/two-coins",
"copper_mint": "delapouite/two-coins",
"monument": "delapouite/obelisk",
"war_monument": "delapouite/obelisk",
"monument_of_ages": "delapouite/obelisk",
"temple": "delapouite/greek-temple",
"temple_of_the_ancestor": "delapouite/greek-temple",
"walls": "delapouite/stone-wall",
"watchtower": "delapouite/watchtower",
"castle": "delapouite/castle",
"citadel": "delapouite/medieval-gate",
"grand_citadel": "delapouite/medieval-gate",
"command_citadel": "delapouite/medieval-gate",
"sky_citadel": "delapouite/medieval-gate",
"granary": "delapouite/grain-bundle",
"great_granary": "delapouite/grain-bundle",
"storehouse": "delapouite/barrel",
"depot": "delapouite/barrel",
"stable": "delapouite/stable",
"harbor": "delapouite/harbor-dock",
"deep_harbor": "delapouite/harbor-dock",
"grand_harbor": "delapouite/harbor-dock",
"lighthouse": "delapouite/lighthouse",
"ancient_lighthouse": "delapouite/lighthouse",
"observatory": "delapouite/observatory",
"deep_observatory": "delapouite/observatory",
"grand_observatory": "delapouite/observatory",
"university": "delapouite/graduate-cap",
"academy_of_sciences": "delapouite/graduate-cap",
"courthouse": "lorc/justice-star",
"hospital": "sbed/health-normal",
"clinic": "sbed/health-normal",
"infirmary": "sbed/health-normal",
"aqueduct": "delapouite/aqueduct",
"underground_aqueduct": "delapouite/aqueduct",
"watermill": "caro-asercion/water-mill",
"mill": "delapouite/windmill",
"well_of_ages": "delapouite/well",
"ancient_well": "delapouite/well",
"deep_cistern": "delapouite/well",
"lumber_camp": "delapouite/wood-pile",
"hunting_lodge": "caro-asercion/deer-head",
"ranger_post": "caro-asercion/deer-head",
"marksman_lodge": "skoll/winchester-rifle",
"tannery": "delapouite/animal-hide",
"taxidermist": "delapouite/animal-hide",
"fishery": "lorc/fishing-net",
"barber": "lorc/scissors",
"festival_grounds": "delapouite/party-popper",
"boar_pen": "caro-asercion/boar"
},
"keywords": {
"forge": "lorc/anvil",
"foundry": "lorc/anvil",
"smith": "lorc/anvil",
"tempering": "lorc/anvil",
"anvil": "lorc/anvil",
"furnace": "lorc/heat-haze",
"refinery": "lorc/heat-haze",
"smelter": "lorc/heat-haze",
"mint": "delapouite/two-coins",
"armoury": "lorc/armor-vest",
"armory": "lorc/armor-vest",
"armour": "lorc/armor-vest",
"arsenal": "lorc/armor-vest",
"gun_works": "skoll/machine-gun",
"powder_works": "lorc/powder",
"powder": "lorc/powder",
"rifle_range": "skoll/winchester-rifle",
"bolt_range": "carl-olsen/crossbow",
"rocket_pad": "lorc/missile-swarm",
"coil": "lorc/electric",
"signal_works": "skoll/sound-waves",
"resonance": "skoll/sound-waves",
"messenger": "lorc/envelope",
"hold_post": "lorc/envelope",
"hold_network": "lorc/radar-dish",
"airfield": "quoting/biplane",
"zeppelin_dock": "skoll/zeppelin",
"tank_yard": "cathelineau/great-war-tank",
"walker_yard": "delapouite/mecha-head",
"siege": "heavenly-dog/catapult",
"drill_yard": "delapouite/barracks",
"assault_school": "delapouite/barracks",
"military_academy": "delapouite/barracks",
"war_college": "delapouite/barracks",
"infantry": "delapouite/person",
"sword_hall": "lorc/crossed-swords",
"hardening_pit": "lorc/anvil",
"alchemist": "lorc/round-bottom-flask",
"apothecar": "lorc/round-bottom-flask",
"herbalist": "lorc/round-bottom-flask",
"climate_institute": "delapouite/observatory",
"weather_station": "delapouite/observatory",
"seismic_station": "delapouite/observatory",
"orrery": "delapouite/observatory",
"chronicle": "lorc/scroll-unfurled",
"scriptorium": "lorc/scroll-unfurled",
"record": "lorc/scroll-unfurled",
"guild_hall": "lorc/key",
"gathering_hall": "delapouite/round-table",
"great_hall": "delapouite/round-table",
"longhouse": "delapouite/house",
"carved_hall": "delapouite/cave-entrance",
"deep_road": "delapouite/cave-entrance",
"deeproads": "delapouite/cave-entrance",
"deep_mine": "delapouite/gold-mine",
"mineshaft": "delapouite/gold-mine",
"mine": "delapouite/gold-mine",
"vault": "lorc/locked-chest",
"barrow": "lorc/tombstone",
"ancestor": "delapouite/family-tree",
"hall_of_heroes": "lorc/laurel-crown",
"throne": "delapouite/throne-king",
"crown": "lorc/crown",
"runestone": "lorc/crowned-explosion",
"runesmith": "lorc/rune-stone",
"rune": "lorc/rune-stone",
"standing_stones": "delapouite/menhir",
"moot_stone": "delapouite/menhir",
"covenant": "lorc/stone-tablet",
"testament": "lorc/stone-tablet",
"names": "lorc/prayer",
"shrine": "lorc/prayer",
"sanctum": "lorc/prayer",
"amphitheater": "sbed/arena",
"arena": "sbed/arena",
"bardic": "lorc/lyre",
"voice": "delapouite/megaphone",
"echoes": "skoll/sound-waves",
"spire": "delapouite/observatory",
"pillar": "delapouite/atlas",
"axis_mundi": "delapouite/atlas",
"world": "delapouite/atlas",
"undying": "lorc/burning-embers",
"long_fire": "lorc/burning-embers",
"flame": "lorc/burning-embers",
"cold_anvil": "lorc/anvil-impact",
"hearthless": "delapouite/fireplace",
"great_forge": "delapouite/blacksmith",
"cartograph": "lorc/treasure-map",
"lodge": "caro-asercion/deer-head",
"gate": "delapouite/medieval-gate",
"bastion": "delapouite/medieval-gate",
"fortress": "delapouite/medieval-gate",
"naval": "delapouite/harbor-dock",
"harbor": "delapouite/harbor-dock",
"research_vessel": "delapouite/sailboat",
"amphitheatre": "sbed/arena",
"triumph": "delapouite/obelisk",
"arch": "delapouite/obelisk",
"nature_reserve": "delapouite/oak-leaf",
"library_of_nature": "delapouite/oak-leaf",
"atelier": "lorc/anvil",
"mason": "delapouite/stone-block",
"tower": "delapouite/watchtower",
"annex": "lorc/anvil",
"press": "lorc/anvil",
"bench": "lorc/anvil",
"workshop": "lorc/anvil",
"hall": "delapouite/round-table",
"hut": "delapouite/hut",
"post": "delapouite/wood-cabin",
"cathedra": "heavenly-dog/catapult"
}
}
}