Status: production outline for the first full art pass
Source of truth checked: current Ashpit gameplay code on 2026-08-27
Scope: characters, animation, world art, items, effects, interface art, and the runtime data needed to display them
Out of scope: sound, music, voice, and new gameplay rules
Ashpit currently renders the arena, players, enemies, shots, pickups, hazards, and effects with colored shapes. The gameplay code already defines the classes, enemy roles, bosses, weapons, upgrades, relics, contracts, objectives, and run options. This document turns those mechanics into an art production list.
Every current gameplay object has one of three treatments:
- A character animation set.
- A world sprite or effect.
- An interface icon or code-drawn indicator.
The list does not add armor, equippable gear, pets, jumping, climbing, crouching, swimming, mounts, dialogue characters, or cinematic scenes. None of those systems exist in the current game. If one is added later, its art must be added to this document and the asset manifest at the same time.
Ashpit should use a high three-quarter top-down view. Characters must remain readable when dozens of enemies share the screen. Large shapes, clear weapons, and strong posture matter more than facial detail.
The setting is a dark fantasy furnace yard built from black iron, burned timber, cracked stone, bone ash, and old ritual machinery. The arena stays dark and low in saturation. Player classes, enemy roles, pickups, attack tells, and objectives carry the strong colors.
The visual rules are:
- Keep the ground between value 10 and 35 percent so actors remain visible.
- Keep normal enemies between value 25 and 60 percent.
- Reserve the brightest values for players, Kindled enemies, bosses, pickups, objective progress, and dangerous attack tells.
- Use one light direction from the upper left in every sprite.
- Do not bake floor shadows into actors or props. The renderer draws shadows at runtime.
- Do not bake health bars, names, numbers, text, outlines, or target rings into art.
- Give each class and enemy role a silhouette that works in solid black.
- Keep thin details at least 3 pixels wide at final gameplay size.
- Effects may overlap actors, but no effect may hide a danger boundary for more than two frames.
These colors already carry meaning in the greybox. Finished art may vary within each color family, but it must preserve the same recognition.
| Meaning | Core color | Use |
|---|---|---|
| Warrior | #6ea8ff |
Cloth, trim, attack accent |
| Archer | #7dce6a |
Cloth, fletching, Brand |
| Sorcerer | #c084fc |
Cloth, bolts, spell core |
| Ember | #e09a3c |
Furnaces, caches, normal boss alerts |
| Cinder and Surge | #ffd166 |
Kindled, cinders, Ash Surge, final boss events |
| Blood and danger | #c4452d |
Player damage, armed hazards, enemy blast |
| Frost | #6ea8ff |
Chill, freeze, Frost Ward |
| Vacuum | #4ad0c8 |
Gems, vacuum, Temper Loop |
| Objective success | #7dce6a |
Active objective ring and completion |
| Neutral player metal | #e8dcc8 |
Knives, arrows, readable edges |
Enemy recognition colors stay close to the current code:
| Enemy | Recognition color |
|---|---|
| Walker | #6b8f4a |
| Brute | #8a3a2a |
| Sprinter | #c4d45a |
| Spitter | #5aa88a |
| Boomer | #c084fc |
| Charger | #e8dcc8 |
| Bulwark | #5f7890 |
| Ash Caller | #b06aa8 |
| Husk | #d0a050 |
| Suppressor | #8060b8 |
| Stalker | #b84c42 |
| Saboteur | #c07038 |
| Warden | #e09a3c |
| Harrower | #e85d3f |
| Broodmother | #9b6a4d |
| Null Priest | #7357a8 |
The gameplay view is 1280 by 720 world pixels. The full yard is 2560 by 1600. Player collision radii are 12 to 14 pixels. Regular enemy radii are 11 to 18 pixels. Boss radii are 22 to 28 pixels.
Use these source canvases:
| Asset | Frame canvas | Visible subject height | Anchor |
|---|---|---|---|
| Player | 96 by 96 | 48 to 62 pixels | 50 percent X, 78 percent Y |
| Small enemy | 80 by 80 | 38 to 52 pixels | 50 percent X, 76 percent Y |
| Large enemy | 112 by 112 | 54 to 76 pixels | 50 percent X, 77 percent Y |
| Boss | 192 by 192 | 96 to 140 pixels | 50 percent X, 76 percent Y |
| Small projectile | 32 by 32 | 8 to 24 pixels | center |
| Large projectile | 64 by 64 | 18 to 48 pixels | center |
| Pickup | 48 by 48 | 20 to 38 pixels | 50 percent X, 72 percent Y |
| Small effect | 128 by 128 | effect dependent | center |
| Large effect | 256 by 256 | effect dependent | center |
| Interface icon | 256 by 256 master | export at 64 and 128 | center |
| Character portrait | 768 by 1024 | waist-up | not applicable |
| Terrain tile | 256 by 256 | full tile | top left |
Source files are lossless PNG in sRGB. Keep layered source files outside the runtime folder. Exported files use transparent backgrounds unless the row calls for a full-screen image. No generated image may include text.
Collision remains data-driven. A large cloak, horn, weapon, or spell does not enlarge the collision circle.
Gameplay supports all eight directions:
n, ne, e, se, s, sw, w, nw
Artists author five directions:
n, ne, e, se, s
The renderer mirrors ne, e, and se to produce nw, w, and sw. Costumes must avoid side-specific symbols or readable writing that would look wrong when mirrored.
Use this path shape for animation frames:
assets/actors/{group}/{actor_id}/{clip}/{direction}/{actor_id}_{clip}_{direction}_{frame}.png
Examples:
assets/actors/player/warrior/run/ne/warrior_run_ne_03.png
assets/actors/enemy/spitter/spit/s/spitter_spit_s_05.png
assets/actors/boss/warden/ring_slam/e/warden_ring_slam_e_07.png
Use two-digit frame numbers starting at 01. Omni-directional effects use omni instead of a direction. File names use lowercase snake case.
Icons use the gameplay identifier:
assets/icons/upgrades/{upgrade_id}.png
assets/icons/relics/{relic_id}.png
assets/icons/contracts/{contract_id}.png
assets/icons/mutators/{mutator_id}.png
assets/icons/loadouts/{loadout_id}.png
| Clip type | Playback | Default rate | Loop |
|---|---|---|---|
| Idle | While stationary | 5 fps | yes |
| Move | While velocity is nonzero | 10 fps | yes |
| Basic attack | Triggered by the attack event | 12 to 18 fps | no |
| Class ability | Triggered by the ability event | 12 fps | no |
| Dash | While dashingMs is active |
fit to class dash duration | no |
| Hit | Rate-limited reaction | 15 fps | no |
| Revive | While F is held near a body | 8 fps | yes |
| Down transition | First down event | 10 fps | no |
| Downed loop | Body waiting for revival | 3 fps | yes |
| Revived rise | Successful revive | 10 fps | no |
| Death | Enemy death event | 10 to 12 fps | no |
| Boss phase change | At 66 and 33 percent health | 10 fps | no |
Basic attacks keep the actor's feet on the anchor so movement can continue. The animation must not include baked root motion. Attack playback speed may increase with Haste and Ash Surge, but a readable contact or release pose must remain on screen for at least 55 milliseconds.
State priority from highest to lowest is:
- Downed body or ghost.
- Revived rise.
- Reviving an ally.
- Class ability or Ash Surge ignition.
- Dash.
- Hit reaction.
- Basic attack.
- Move.
- Idle.
Movement direction controls the move clip. Aim direction controls attacks, dashes, and aimed abilities. When an attack ends, the actor returns to the current movement direction. This maps every possible combination of aim and movement without requiring separate forward, backward, and strafe sheets.
Each player class receives the following full-body clips. Frame counts are per authored direction. Five authored directions give 280 body frames per class and 840 body frames for all three classes.
| Clip | Frames per direction | Event frame | Notes |
|---|---|---|---|
idle |
4 | none | Ready stance, small breath, weapon held clearly |
run |
6 | none | Fast yard movement, no root motion |
dash |
4 | frame 2 | Long silhouette and trailing cloth |
basic_attack |
6 | frame 4 | Cleave contact or projectile release |
class_active |
8 | frame 5 | One base clip per class, branch differences live in effects |
hurt |
2 | frame 1 | Short recoil, no fall |
revive_loop |
6 | none | Kneel or brace toward the downed body |
down_transition |
6 | frame 5 | Fall without leaving the foot anchor |
downed_loop |
2 | none | Faint movement so the body reads as revivable |
revived_rise |
6 | frame 5 | Returns to the idle stance |
surge_ignite |
6 | frame 4 | Shared furnace gesture with class-specific pose |
The body uses all five authored directions for every row. Mirroring supplies the remaining three directions.
| Gameplay condition | Body art | Extra art |
|---|---|---|
| Standing | idle |
local-player ring, name, health bar when hurt |
| Moving | run in velocity direction |
dust puffs only at high speed |
| Auto-attacking while still | basic_attack in aim direction |
class attack effect |
| Auto-attacking while moving | attack pose with world movement continuing | class attack effect |
| Dashing | dash in aim direction |
class trail, invulnerability shimmer |
| Casting active ability | class_active |
class and branch effect |
| Igniting Ash Surge | surge_ignite |
gold furnace burst and eight-second aura |
| Taking damage | hurt or palette flash |
damage number and screen edge flash for local player |
| Holding F near ally | revive_loop toward ally |
progress ring around body |
| Downed | down_transition, then downed_loop |
separate ghost appears at body |
| Revived | revived_rise |
green restore ring and brief invulnerability |
| Carrying Cinders | normal body state | cinder bundle badge above waist or behind shoulder |
| Frost Ward | normal body state | rotating blue ward shell |
| Stoneguard invulnerability | normal body state | stone-blue edge and shield flash |
| Second Wind triggers | current action continues | gold heart flare and brief invulnerability |
| Ash Surge active | current action continues | gold rim light, ember trail, screen border for local player |
| Team loss | downed bodies remain | result overlay replaces gameplay input |
Ashpit does not need jump, crouch, climb, swim, sleep, sit, mount, ladder, ledge, weapon pickup, armor swap, emote, or dialogue poses for the current game.
Gameplay ID is warrior.
The Warrior is the widest player silhouette. Use layered iron plates, a short ash-blue mantle, heavy boots, and one broad cleaver or hammer-cleaver. The weapon head must remain readable at 50 pixels of character height. Keep the helmet or hair shape low enough that the shoulder line stays broad.
Portrait expression is steady and confrontational. The class card must show the weapon and blue mantle.
- Idle holds the weapon low across the front.
- Run leans into the direction of travel with the weapon close to the body.
- Basic attack travels through a wide horizontal cleave. Contact occurs on frame 4.
- Dash leads with one shoulder and keeps the weapon behind the body.
- Groundbreak lifts the weapon on frames 1 to 3 and drives it into the floor on frame 5.
- Revive plants the weapon or holds it one-handed while the free hand reaches toward the ally.
- Downed pose keeps the weapon next to the body so it does not look like a pickup.
| Mechanic | Required visual |
|---|---|
| Cleave | Blue-white 130-degree slash arc. The radius grows with ranks. |
| Blooding | Thin red return trail from damaged enemies to Warrior and one small heal spark. |
| Thorns | Short iron spike flash on the attacker when reflected damage lands. |
| Warpath | Heavier slash edge, wider ground crack, blue mantle rim light. No new body sheet. |
| Groundbreak | Blue impact disc, radial dust, ground cracks, knockback streaks. |
| Bloodquake | Red core under the blue impact, blood return trails, dash-ready spark when three enemies are hit. |
| Fault Line | Second outer crack ring reaching 182 world units. Inner and outer damage zones must look different. |
| Stoneguard | Stone-blue shell around the Warrior for 650 milliseconds plus green healing shards. |
| Chilled shatter combo | Frost fragments break outward from chilled enemies. Gold team-combo spark when another player applied Chill. |
Required portrait and icon assets:
portraits/classes/warrior.pngicons/classes/warrior.png- All Warrior upgrade icons listed in the upgrade catalog below.
Gameplay ID is archer.
The Archer has the narrowest player silhouette. Use a short green hood or scarf, a longbow with a thick readable curve, a light chest guard, and a visible quiver. Keep the bow outside the torso silhouette in idle and attack frames.
Portrait expression is alert and focused. The class card must show the bow, green cloth, and one bright arrowhead.
- Idle keeps an arrow ready without a fully drawn bow.
- Run holds the bow across the body and keeps the quiver stable.
- Basic attack draws on frames 1 to 3, releases on frame 4, and recovers on frames 5 to 6.
- Dash becomes a low sidestep with a green cloth trail.
- Hunter's Brand raises one arrow or marking knife and points it toward the target zone on frame 5.
- Revive places the bow beside the body and works with both hands.
| Mechanic | Required visual |
|---|---|
| Base arrow | Pale metal arrow with green fletching and a thin motion trail. |
| Pierce | White edge flash each time the arrow passes through a target. |
| Volley | Up to seven readable arrow lanes. Trails must remain thin. |
| Longshot | Longer green-white trail and a brighter arrowhead. |
| Deadeye | Sharper release flash and a brief eye-shaped reticle at the bow. |
| Hunter's Brand | Green ground sigil at the aimed point and a green mark above every affected enemy. |
| Normal Brand detonation | Green inward snap followed by a small ring. |
| Cooperative detonation | Gold center flash and one team-combo spark. |
| Bounty Chain | Gold-green secondary burst that jumps across nearby enemies. |
| Piercing Brand | Larger, thinner sigil and a cut mark on every affected enemy. |
| Death Warrant | Smaller dark-green sigil with a bright central execution rune. |
Required portrait and icon assets:
portraits/classes/archer.pngicons/classes/archer.png- All Archer upgrade icons listed in the upgrade catalog below.
Gameplay ID is sorcerer.
The Sorcerer uses a tall narrow shape with a split coat or robe that does not cover the foot anchor. Use violet cloth, pale frost trim, a short staff or focus ring, and a bright spell hand. Avoid a wide robe that could be mistaken for a larger collision radius.
Portrait expression is cold and intent. The class card must show violet magic and the pale frost trim.
- Idle keeps one hand charged and the focus at chest height.
- Run keeps the charged hand visible while the coat splits around the legs.
- Basic attack gathers violet light on frames 1 to 3 and releases a heavy bolt on frame 4.
- Dash breaks the lower body into a short violet streak without making the Sorcerer fully invisible.
- Frost Nova crosses both arms, opens them on frame 5, and ends with the Frost Ward raised.
- Revive draws a small frost circle under the ally instead of kneeling as low as the other classes.
| Mechanic | Required visual |
|---|---|
| Base bolt | Slow violet orb with a dense white core and short tail. |
| Bloom | Larger circular impact burst. Radius grows without raising opacity. |
| Chain | Thin violet-white arc between each chained target. |
| Chill | Blue frost edge on the target, cold breath, and reduced-speed foot particles. |
| Stormweaver | Brighter bolt core, forked chain start, larger impact runes. |
| Frost Nova | Violet center flash, blue expanding ring, frost shards at the edge. |
| Frost Ward | Transparent blue shell with three rotating runes for 3 seconds. |
| Shatterstorm | Chilled enemy breaks into blue fragments and sends thin frost trails to nearby targets. |
| Twin Nova | Inner violet-blue ring followed by a distinct wider blue ring. |
| Absolute Zero | Wide pale-blue field, low damage flash, heavy frost build-up, 6-second ward. |
Required portrait and icon assets:
portraits/classes/sorcerer.pngicons/classes/sorcerer.png- All Sorcerer upgrade icons listed in the upgrade catalog below.
One ghost animation set is tinted by class color and receives the class crest as a small chest overlay. The ghost has no collision shadow.
| Ghost clip | Frames | Directions | Notes |
|---|---|---|---|
spawn |
6 | omni | Rises from the downed body |
idle |
4 | omni | Slow vertical drift |
move |
6 | five authored | Direction follows ghost velocity |
pulse |
8 | omni | Teal-white support wave |
vanish |
6 | omni | Returns to body on revival |
The downed body remains at the death location while the ghost moves. Show these independent markers:
- Body sprite in the class
downed_looppose. - Red downed nameplate.
- Revive interaction ring at 52 world units.
- 1.4-second progress arc while an ally holds F.
- Ghost tether, visible only within 180 world units of the body, to avoid drawing a line across the whole map.
- Minimap body marker and separate ghost player marker.
The ghost pulse slows enemies within 105 world units and refunds nearby allies' dash and ability cooldowns. Its visual is a soft teal ring with inward particles on allies and outward frost-smoke on enemies.
Every enemy uses the same five authored directions and three mirrored directions as players. Enemy facing follows velocity except during an attack wind-up, when it locks to the target direction. No attack may deal damage before its readable contact pose or telegraph has appeared.
Every regular enemy needs:
- One approved base identity image.
- Five-direction idle, move, attack, hit, and death coverage.
- A 256 by 256 bestiary portrait crop.
- A 256 by 256 interface icon.
- A 24 by 24 minimap marker where the table calls for one.
- A neutral shadow mask selected from small, medium, or large.
Enemy death frames end in a low-contrast ash pile or stain. Corpses should fade after the animation so they do not obscure pickups.
The frame totals below include five authored directions. The Boomer explosion is omni-directional. Mirroring provides the other three directions.
| ID and name | Silhouette and material | Clips and frame counts | Special read |
|---|---|---|---|
walker Walker |
Bent corpse, long arms, moss-green ash cloth | idle 3, move 6, swipe 5, hit 2, death 6. Total 110 frames. |
Baseline enemy. No aura or role icon. |
sprinter Sprinter |
Thin hound-like corpse, yellow-green wraps, long forward arms | idle 2, sprint 8, lunge 5, hit 2, death 6. Total 115 frames. |
Fast foot dust and a low lunge pose. Rear rush uses the same body with a brief entry streak. |
brute Brute |
Wide torso, red-brown hide, iron shoulder plate | idle 3, move 6, slam 7, hit 3, death 8. Total 135 frames. |
Heavy contact pose and a larger shadow. |
spit Spitter |
Teal throat sac, narrow legs, raised mouth | idle 3, move 6, spit 7, hit 2, death 6. Total 120 frames. |
Throat sac fills on frames 1 to 4. Projectile releases on frame 5. |
boom Boomer |
Round violet furnace sac and short legs | idle 3, move 6, bite 5, swell 5 per direction, explode 8 omni. Total 103 frames. |
Body pulses before contact. Every death ends in the same 78-radius explosion. |
charger Charger |
Pale horned skull, heavy shoulders, narrow waist | idle 3, move 6, contact 5, charge_tell 5, charge_loop 4, charge_recover 5, hit 2, death 7. Total 185 frames. |
Charge tell lowers horns and draws dust backward. Charge loop must stay readable at 2.3 times speed. |
bulwark Bulwark |
Steel-blue tower shell with a furnace shield on its back | idle 3, move 6, shove 5, shield_channel 4, hit 2, death 7. Total 135 frames. |
Blue-grey protection arcs link to non-boss allies within 138 units. Shielded allies receive a thin shell. |
summoner Ash Caller |
Violet ritual hood, two raised censers | idle 4, move 6, melee 5, summon 8, hit 2, death 7. Total 160 frames. |
Summons two Walkers every 6.4 seconds. A ground ash portal opens before they appear. |
splitter Husk |
Ochre shell with a clear center crack | idle 3, move 6, claw 5, hit 2, split_death 8. Total 120 frames. |
Death tears the shell in two and releases two Sprinters. |
suppressor Suppressor |
Purple tripod caster with a hollow faceplate | idle 3, move 6, shot 7, suppress_loop 4, hit 2, death 7. Total 145 frames. |
A thin violet field shows the 145-unit ability suppression range. Keep the field below 20 percent opacity. |
stalker Stalker |
Red-black knife limbs, low head, long stride | idle 2, sprint 8, pounce 6, hit 2, death 6. Total 120 frames. |
Hunts the most isolated survivor. The objective target version receives a separate crown marker, not a new body. |
saboteur Saboteur |
Orange work leathers, hooked tool, ember pack | idle 3, run 8, stab 5, sabotage_loop 6, hit 2, death 6. Total 150 frames. |
Runs toward active objective zones. The sabotage loop faces the objective and sends orange sparks into its progress ring. |
Regular enemy body frame total is 1,598 exported PNG files before mirrored runtime directions.
| Source | Projectile | Flight | Impact |
|---|---|---|---|
| Spitter | Teal acid clot | Four-frame tumbling loop, faint droplet tail | Teal splat and two-frame ground stain |
| Suppressor | Hollow violet needle | Four-frame pulse loop | Small violet mute glyph |
| Null Priest | Dark violet ember | Six-frame rotation, pale center | Purple-black burst with a short suppression ripple |
Enemy projectiles need a projectileKind in snapshots. Color and radius alone cannot select the right art.
These are separate effects or overlays. Do not redraw full character sheets for them.
| Status | Visual treatment | Interface treatment |
|---|---|---|
| Kindled tier 1 | Gold rim light, ember crown, small flame trail | Gold minimap diamond |
| Kindled tier 2 and higher | Larger segmented crown with one extra segment per tier, hotter white center | Crown segment count on boss-style marker |
| Shielded | Steel-blue translucent shell and one shield impact spark when damage is reduced | Shield status icon above health bar for large targets |
| Chilled | Blue edge frost, slowed foot particles, cold breath | Snowflake status icon on bosses and objective targets |
| Frozen by floor pickup | Pale-blue wash and heavy ice motes on all non-Charger enemies | Full-screen frost edge for local player |
| Hunter's Brand | Green rune above enemy and small ground tick | Green target icon |
| Death Warrant | Dark-green execution rune with bright center | Green-black target icon |
| Ghost slowed | Teal smoke around ankles | No icon |
| Objective target | White-gold crown and off-screen pointer | Dedicated pursuit marker |
| Boss phase 2 | One additional glowing body fissure | Second phase pip lit |
| Boss phase 3 | Two fissures, hotter core, stronger idle particles | Third phase pip lit |
| Hit | One-frame pale flash plus hit effect | Damage number where allowed |
| Low health | No body recolor | Health bar communicates it |
Bosses must remain readable behind a dense horde. Use a strong outer contour, a larger shadow, a permanent nameplate, a screen-edge arrival alert, and a boss health bar. Each boss has three health phases. Phase changes occur above 66 percent, from 66 to 33 percent, and below 33 percent.
Every boss receives:
- One 1024 by 1024 identity sheet with front, side, back, material, and scale callouts.
- One 768 by 1024 boss portrait.
- Five-direction body animation.
- Two phase-transition clips.
- A death clip that does not hide its Vault cache drop.
- Boss icon, minimap marker, health bar portrait, and three phase pips.
- A unique arrival effect.
Boss ID is warden.
The Warden is a walking iron furnace with a broad door-like chest, square shoulders, and an orange core. Its shape is slow and stable.
Common clips are idle 4, move 8, contact 7, hit 3, two phase_change clips at 8 frames each, and death 12. Special clips are target_blast_cast 8, summon_sprinters 8, and ring_slam 10. Five directional exports produce 316 body frames when the two phase changes are omni-directional.
Phase behavior and art:
| Phase | Gameplay | Art requirement |
|---|---|---|
| 1 | Places one delayed blast under the nearest survivor | Chest opens, orange aim beam points down, target circle arms for 850 ms |
| 2 | Faster blasts and summons two Sprinters | One shoulder furnace breaks open, ash portal burst on both add spawns |
| 3 | Fastest blasts, three Sprinters, 125-radius ring | Core turns gold-white, ring slam raises a clear circular danger tell for 1.05 seconds |
Death breaks the chest door, vents the core upward, and collapses outward. The cache appears after the body reaches frame 9.
Boss ID is harrower.
The Harrower is a lean red-black execution beast with long arms and a split iron mask. It must look faster than every other boss.
Common clips use the boss set above. Special clips are charge_windup 8, charge_loop 4, charge_recover 6, target_blast_cast 7, ring_cast 8, and summon_stalker 8. The full set produces 391 body frames.
Phase behavior and art:
| Phase | Gameplay | Art requirement |
|---|---|---|
| 1 | Charges the most isolated survivor and places a delayed blast | Red line from mask to target, low charge pose, 720 ms blast circle |
| 2 | Charges more often and adds a ring around itself | Mask opens, red-black ring arms for 650 ms |
| 3 | Fastest charge and summons one Stalker | Back spines ignite, Stalker emerges from a red ash tear |
The charge loop must work at 2.65 times normal speed. Keep the silhouette stretched forward and use a separate ground streak so the body remains visible.
Boss ID is broodmother.
The Broodmother is the largest boss. Use a heavy brown shell, a glowing brood sac, six planted limbs, and a raised crown plate. The silhouette must look like a mobile nest without turning into an unreadable circle.
Common clips use the boss set. Special clips are brood_summon 12, ring_slam 10, and target_blast_cast 8. The full set produces 336 body frames.
Phase behavior and art:
| Phase | Gameplay | Art requirement |
|---|---|---|
| 1 | Summons two adds from the Splitter, Ash Caller, and Boomer cycle | Two sac pores open, each spawn uses a brood pod rupture |
| 2 | Summons three adds and uses a larger ring | Cracks spread across shell, ring tell carries an egg-pattern edge |
| 3 | Summons four adds and targets a survivor with an 88-radius blast | Sac turns orange-white, one overhead glob marks the target before impact |
Death splits the brood sac without covering nearby adds or the cache.
Boss ID is null_priest.
The Null Priest is a floating violet ritual figure with a tall split mask and four hanging plates. The lower body may trail smoke, but the foot anchor must stay stable for targeting.
Common clips use the boss set. Special clips are shield_channel 10, multi_target_curse 10, summon_suppressor 8, and ranged_attack 7. The full set produces 361 body frames.
Phase behavior and art:
| Phase | Gameplay | Art requirement |
|---|---|---|
| 1 | Shields nearby enemies, targets every survivor with a delayed blast, delays active abilities | Four plates spread, violet links reach allies, mute rune appears over player ability icon |
| 2 | Faster cycle and summons one Suppressor | Mask splits, one ash gate opens under the add |
| 3 | Fastest cycle and summons two Suppressors | White-violet core, thicker shield links, stronger screen-space curse flash |
The shield pulse lasts 1.85 seconds. It must be visible without hiding the boss blast circles.
The code has two hazard shapes, blast and ring. Art must show both the arm period and the damaging event.
| Hazard | Arm state | Fire state | Fade state |
|---|---|---|---|
| Blast | Orange radial ticks, empty center, clockwise countdown sweep | Red center fill, vertical ash burst, one sharp outer ring | Dark scorch decal for 420 ms |
| Ring | Orange inner and outer boundaries, moving arrowheads showing the unsafe band | Red circular wall rising from the ground | Ember fragments fall inward for 420 ms |
The exact damaging radius is always the strongest line. Decorative smoke must stay outside that line. Color-blind support adds a triangle pattern to blast tells and a repeating bar pattern to ring tells.
A survivor may carry three of the four weapon families. Each weapon has five ranks, one of two evolutions, three Temper axes, and two Overclock choice tiers. Rank growth may scale the number, reach, rate, or effect intensity. Rank changes do not require new body sheets.
Base asset ID is aura. The icon shows a charred white bulb wrapped in an iron furnace ring.
World art:
- Base Garlic aura uses a thin green-gold circle, low smoke, and small inward embers.
- Rank increases widen the same effect from 56 to 96 world units.
- The effect pulses every 320 milliseconds. Alternate two subtle edge frames so the aura does not look static.
- Do not fill the whole circle. A solid fill would hide enemies and hazards.
Evolution art:
| ID | Name | Visual change |
|---|---|---|
aura_inferno |
Inferno Garlic | Orange-red edge, larger flame tongues, 26-unit radius extension |
aura_sanctuary |
Sanctuary Garlic | Pale green-gold edge, inward healing motes, small heart spark on each heal |
Overclock art:
| ID | Name | Visual change |
|---|---|---|
oc_aura_searing |
Searing Flare | Every fifth pulse gains a bright orange flare ring |
oc_aura_siphon |
Siphon Field | Every fourth pulse pulls thin red-gold trails into the player |
oc_aura_wildfire |
Wildfire Core | Empowered pulse gains a white-hot center and wider broken flame edge |
oc_aura_sanctum |
Living Sanctum | Empowered pulse forms four green-gold sanctuary runes and a stronger heal flare |
Required files include the base icon, two evolution icons, four Overclock icons, base pulse strip, Inferno pulse strip, Sanctuary pulse strip, Searing flare, Siphon return trails, Wildfire flare, and Sanctum heal.
Base asset ID is orbit. The icon shows an iron-bound ash scripture with a violet seal.
World art:
- One to six pale scripture shards orbit at 40 to 60 world units.
- Each shard has a four-frame glint loop and rotates to follow the orbit tangent.
- Contact uses a small pale-violet impact. Heavy knockback uses a thicker outward streak.
Evolution art:
| ID | Name | Visual change |
|---|---|---|
orbit_tempest |
Tempest Bible | Two extra thin shards, wider orbit, violet-white speed trails |
orbit_bulwark |
Bulwark Bible | Thick stone scripture plates, close orbit, blue-grey shove wave |
Overclock art:
| ID | Name | Visual change |
|---|---|---|
oc_orbit_shockwave |
Shock Scripture | Every fifth strike emits a violet ring from the player |
oc_orbit_shardstorm |
Shardstorm | Two more shards and brighter rotation streaks |
oc_orbit_repulsion |
Repulsion Verse | Fifth-strike ring has thick outward chevrons |
oc_orbit_convergence |
Final Verse | Fifth-strike ring collapses inward before a bright damage flash |
Required files include base, Tempest, and Bulwark shard loops, four impact styles, and all seven related icons.
Base asset ID is knives. The icon shows three pale throwing knives in a forward fan.
World art:
- Base knife is 22 pixels long on a 32 by 32 canvas.
- Flight rotates the sprite to its velocity. Use one pale speed streak rather than an animated body loop.
- Rank increases throw count. It does not enlarge each knife.
Evolution art:
| ID | Name | Visual change |
|---|---|---|
knives_fan |
Fan of Knives | Green-white fan release effect and double blade count |
knives_execution |
Execution Knives | Dark metal center, red edge on wounded enemies, sharper hit burst |
Overclock art:
| ID | Name | Visual change |
|---|---|---|
oc_knives_ricochet |
Ricochet Steel | White-green arc between first and second target |
oc_knives_puncture |
Puncture Steel | Double trail line and long white pass-through spark |
oc_knives_explosive |
Blast Tips | Orange cap and 28-radius impact explosion |
oc_knives_reaper |
Reaper Tips | Red-black edge appears against enemies below 40 percent health |
Required files include base, Execution, and Blast Tip knife sprites, fan release, four hit styles, ricochet arc, and all seven related icons.
Base asset ID is pulse. The icon shows a violet circular coil with a white center.
World art:
- Base Pulse is an expanding violet-white ring from the player.
- Radius grows from 74 to 122 world units by rank.
- Keep the center transparent so hazards and pickups remain visible.
Evolution art:
| ID | Name | Visual change |
|---|---|---|
pulse_frost |
Frost Pulse | Blue frost edge, snow fragments, Chill placed on every target |
pulse_thunder |
Thunder Pulse | Gold-violet electric edge, wider ring, forked impact flashes |
Overclock art:
| ID | Name | Visual change |
|---|---|---|
oc_pulse_echo |
Focused Echo | Second smaller ring with a dense center |
oc_pulse_aftershock |
Wide Aftershock | Second wider transparent ring with sparse arcs |
oc_pulse_cryo |
Cryo Resonance | Echo edge freezes blue and leaves heavy frost motes |
oc_pulse_thunder |
Thunder Resonance | Echo edge gains outward gold chevrons and knockback streaks |
Required files include base, Frost, and Thunder pulse strips, focused and wide echo strips, Cryo and Thunder Resonance overlays, and all seven related icons.
Every row below receives one 256 by 256 icon master at assets/icons/upgrades/{id}.png. Ranks reuse the same icon with a code-drawn rank pip. Card borders identify category. Effects that change world art are described in the player and weapon sections.
| ID | Name | Icon subject |
|---|---|---|
vitality |
Vitality | Red heart reinforced with an iron band |
swift |
Swift | Boot crossing three blue motion lines |
steel |
Steel | Bright sharpened ingot or blade edge |
haste |
Haste | Furnace clock with a fast orange hand |
magnet |
Magnet | Teal horseshoe coil drawing in one gem |
| ID | Name | Icon subject |
|---|---|---|
cleave |
Cleave | Broad blue slash crossing three enemy marks |
lifesteal |
Blooding | Cleaver drawing a red drop into a heart |
thorns |
Thorns | Iron shoulder plate with three spikes |
warpath |
Warpath | Blue mantle behind a glowing cleaver |
bloodquake |
Bloodquake | Red-blue ground crack under a heart |
fault_line |
Fault Line | Two concentric broken stone rings |
stoneguard |
Stoneguard | Stone fist inside a blue shield |
| ID | Name | Icon subject |
|---|---|---|
pierce |
Pierce | Arrow passing through two iron plates |
volley |
Volley | Five green-fletched arrows in a fan |
longshot |
Longshot | Long arrow trail crossing a range reticle |
deadeye |
Deadeye | Pale eye centered over an arrowhead |
bounty_chain |
Bounty Chain | Green target linked to two gold targets |
piercing_brand |
Piercing Brand | Large green rune cut by one arrow |
death_warrant |
Death Warrant | Dark-green execution seal and broken skull mark |
| ID | Name | Icon subject |
|---|---|---|
bloom |
Bloom | Violet bolt opening into a large flower-like burst |
chain |
Chain | Three skull marks linked by violet lightning |
chill |
Chill | Blue snowflake gripping a violet orb |
stormweaver |
Stormweaver | Violet hand weaving three lightning strands |
shatterstorm |
Shatterstorm | Frozen skull breaking into three frost trails |
twin_nova |
Twin Nova | Two expanding blue-violet rings |
absolute_zero |
Absolute Zero | White frost core inside a wide blue seal |
| ID | Card name | Icon subject |
|---|---|---|
aura |
Garlic | Charred garlic bulb in furnace ring |
orbit |
Bible | Iron-bound ash scripture |
knives |
Knives | Three pale throwing knives |
pulse |
Pulse | Violet circular coil |
aura_inferno |
Inferno Garlic | Garlic bulb burning orange-red |
aura_sanctuary |
Sanctuary Garlic | Garlic bulb inside green sanctuary runes |
orbit_tempest |
Tempest Bible | Open scripture surrounded by fast shards |
orbit_bulwark |
Bulwark Bible | Closed stone scripture used as a shield |
knives_fan |
Fan of Knives | Wide fan of pale blades |
knives_execution |
Execution Knives | Dark knife crossing a wounded skull mark |
pulse_frost |
Frost Pulse | Blue frost ring around violet coil |
pulse_thunder |
Thunder Pulse | Gold lightning ring around violet coil |
Temper cards have 12 IDs. Use a full icon for each card so players can read it without relying on a tiny corner badge.
| ID | Name | Icon subject |
|---|---|---|
lb_aura_might |
Garlic Temper Might | Garlic with red-orange hammer mark |
lb_aura_haste |
Garlic Temper Haste | Garlic with orange clock mark |
lb_aura_reach |
Garlic Temper Reach | Garlic with expanding teal ring |
lb_orbit_might |
Bible Temper Might | Bible with red-orange hammer mark |
lb_orbit_haste |
Bible Temper Haste | Bible with orange clock mark |
lb_orbit_reach |
Bible Temper Reach | Bible with expanding teal ring |
lb_knives_might |
Knives Temper Might | Knives with red-orange hammer mark |
lb_knives_haste |
Knives Temper Haste | Knives with orange clock mark |
lb_knives_reach |
Knives Temper Reach | Knives with expanding teal ring |
lb_pulse_might |
Pulse Temper Might | Pulse with red-orange hammer mark |
lb_pulse_haste |
Pulse Temper Haste | Pulse with orange clock mark |
lb_pulse_reach |
Pulse Temper Reach | Pulse with expanding teal ring |
| ID | Name | Icon subject |
|---|---|---|
oc_aura_searing |
Searing Flare | Garlic core bursting outward |
oc_aura_siphon |
Siphon Field | Garlic field drawing in a red-gold stream |
oc_aura_wildfire |
Wildfire Core | White-hot garlic furnace |
oc_aura_sanctum |
Living Sanctum | Green sanctuary seal around garlic |
oc_orbit_shockwave |
Shock Scripture | Bible striking a violet ring |
oc_orbit_shardstorm |
Shardstorm | Bible surrounded by eight sharp pages |
oc_orbit_repulsion |
Repulsion Verse | Scripture ring with outward chevrons |
oc_orbit_convergence |
Final Verse | Scripture ring collapsing inward |
oc_knives_ricochet |
Ricochet Steel | Knife bouncing between two targets |
oc_knives_puncture |
Puncture Steel | Knife passing through three plates |
oc_knives_explosive |
Blast Tips | Orange-tipped knife exploding |
oc_knives_reaper |
Reaper Tips | Red-black knife over a wounded skull |
oc_pulse_echo |
Focused Echo | Large pulse and dense inner echo |
oc_pulse_aftershock |
Wide Aftershock | Two wide offset pulse rings |
oc_pulse_cryo |
Cryo Resonance | Echo ring locked in ice |
oc_pulse_thunder |
Thunder Resonance | Echo ring throwing gold lightning outward |
The full upgrade catalog requires 66 unique icons.
Each relic receives one 256 by 256 icon. Rank is shown with one to three code-drawn gold studs. A survivor can carry three relics, so HUD icons must remain distinct at 32 pixels.
| ID | Name | Icon subject | World effect |
|---|---|---|---|
ember_ram |
Ember Ram | Horned ember shield | Orange shoulder burst during Dash. Radius and force rise with rank. |
chain_reaction |
Chain Reaction | Linked furnace charges | Orange kill burst every sixth, fifth, or fourth kill. |
execution_rite |
Execution Rite | Ritual knife over a broken skull | Thin red-black execution cut. Do not add a persistent target marker. |
frost_relay |
Frost Relay | Three blue crystals linked by frost | Blue trails from chilled death to one, two, or three nearby enemies. |
battle_rhythm |
Battle Rhythm | Drum-like furnace clock | Violet cooldown refund ring on the qualifying kill. |
second_wind |
Second Wind | Gold heart inside a cracked shield | Gold heart flare, 900 ms shell, HUD icon changes to spent. |
furnace_heart |
Furnace Heart | Burning gold mechanical heart | Gold ember stream enters the Surge bar when a Kindled kill extends it. |
vacuum_coil |
Vacuum Coil | Teal coil packed with gems | Teal discharge ring after 12, 9, or 6 collected gems. |
rime_edge |
Rime Edge | Frosted blade edge | White-blue hit edge against chilled enemies. |
brand_fuse |
Brand Fuse | Green mark with a gold fuse | Gold-green fuse spark on Brand detonation and Surge refund. |
temper_loop |
Temper Loop | Teal loop around a tempered weapon | Teal cooldown refund ring when an Overclock effect triggers. |
Relic card art uses a dark Vault frame with three empty rank sockets. The owned-relic HUD uses the same icons without the frame.
The code defines seven pickup kinds. Every kind needs a world sprite, minimap marker, pickup flash, and interface icon where listed.
| Kind | World states | Scale and behavior | Pickup effect |
|---|---|---|---|
gem |
small, large | Small below 30 XP, large at 30 XP or more. Both float in a four-frame teal loop. | Teal streak into collector, small XP bar spark. |
heart |
idle | Red roasted heart wrapped in iron leaf, six-frame beat loop. | Red-green heal burst and one rising heart particle. |
vacuum |
idle, activate | Teal coil pickup at East Furnace. Six-frame magnetic arc loop. | Teal spiral pulls gems, hearts, cinders, and caches to the collector. |
freeze |
idle, activate | Blue frost seal pickup at North Beacon. Four-frame frost loop. | Blue screen edge, cold wind sweep, all eligible enemies gain frost overlay for 3.2 seconds. |
roast |
idle, activate | Orange furnace roast pickup at West Furnace. Four-frame ember loop. | 210-radius orange heat wave and burn impact. |
cinder |
idle, pulled | Gold triangular ember with eight-frame breathing flame. Worth 40 Surge or carried sacrifice progress. | Gold stream to Surge bar or cinder bundle appears on survivor. |
cache |
closed, stacked, opening, empty | Iron Ash Vault chest with orange seam. Stack bands show 2 to 8 rewards. | Orange-gold opening flare, then the Vault choice overlay. |
Gem pull uses a curved motion trail only after the gem starts moving. Do not draw trails on stationary gem piles.
Cache opening must leave the choice screen readable. Finish the world opening effect before the overlay reaches full opacity.
Loadouts exist only in run setup and the player build panel. They do not receive floor sprites.
| ID | Name | Icon |
|---|---|---|
standard |
Open Hands | Two empty open hands over a plain yard seal |
ember_core |
Ember Core | Garlic furnace core tied to a heavy boot |
knife_edge |
Knife Edge | Throwing knife over a cracked heart |
storm_cell |
Storm Cell | Violet Pulse coil over a cracked heart and slow boot |
Each setup row shows its drawback in text and with a small red modifier badge. Do not recolor the class portrait for loadout choice.
Mutators receive setup icons, HUD rule badges, and recap icons. They do not change actor body art.
| ID | Name | Icon and in-run cue |
|---|---|---|
none |
No mutator | Plain iron yard seal, no persistent HUD badge needed |
glass_cannon |
Glass Cannon | Cracked red cannon orb, small badge beside player health |
crowded_yard |
Crowded Yard | Packed enemy silhouettes, dense-horde badge |
kindled_oath |
Kindled Oath | Gold crowned skull and fast furnace clock |
ironman |
Ironman Yard | Sealed iron heart with a barred recovery symbol |
Relax phases offer two of four bargains. Each bargain gets one icon and a small choice-card illustration.
| ID | Name | Icon | Resolution effect |
|---|---|---|---|
fury |
Feed the Furnace | Weapon lowered into a furnace | Gold-red team ring and hotter weapon rim |
respite |
Bind the Wounds | Bandaged heart | Green healing threads across the team |
overclock |
Hot Hands | Burning hand over a clock | Violet-orange cooldown ring |
bounty |
Ash Bounty | Teal magnet around a gold cinder | Teal pickup reach ring |
The choice panel shows vote count, eight-second timer, selected state, winning state, and disabled state after resolution.
Each contract receives one 512 by 512 setup emblem, one 1920 by 480 banner crop, and a boss portrait crop. Contract art contains no text.
| ID | Name | Emblem | Visual identity |
|---|---|---|---|
ember_run |
Ember Run | Two furnaces joined by a cart track | Orange foundry, Warden door motif |
blood_tithe |
Blood Tithe | Red bowl under an execution mask | Dark red altar, Harrower claw marks |
last_light |
Last Light | Three beacons surrounding a pale flame | Cold blue night, violet Null Priest shadow |
brood_hunt |
Brood Hunt | Cracked egg over a kiln | Brown shell, orange brood glow |
Endless receives a separate setup emblem showing the yard seal inside an open circular clock. Endless is a run mode, not a fifth contract.
The code defines seven objective kinds. The objective ring and progress arc are code-drawn so their radius and progress remain exact. Props and effects sit inside those boundaries.
| Kind | Required world art | Required interface art |
|---|---|---|
hold |
Site prop in dormant and active states, green capture edge, neutral contested dust | Hold icon, progress arc, off-screen arrow, minimap ring |
hunt |
No fixed prop. Kills use a small counter spark. | Crossed-weapon icon and kill counter |
extract |
North Gate closed, charging, opening, secured states | Gate icon, extraction progress, green off-screen arrow |
escort |
Ember cart and Living Spark carrier variants, idle and six-frame move loop | Cart icon, route line, percentage display |
defense |
Furnace, beacon, or clutch with healthy, damaged, critical, destroyed states | Shielded-object icon, integrity bar, attacker pulse |
pursuit |
Stalker body with white-gold objective crown | Target icon, off-screen arrow, minimap marker |
sacrifice |
Crucible altar or brood kiln in empty, receiving, charged, complete states | Cinder bowl icon and carried-cinder counter |
Optional objectives add a white side notch and visible countdown. They never use a different success color.
| Prop | States and animation |
|---|---|
| West and East Furnace | dormant, stabilizing 8 frames, active 6-frame loop, damaged, critical, destroyed 8 frames |
| North, Southwest, and Southeast Beacon | unlit, igniting 10 frames, lit 6-frame loop, damaged, critical, destroyed 8 frames |
| The Crucible | cold, receiving_cinder 8 frames, charged 6-frame loop, sealed 8 frames |
| North Gate | closed, charging 8 frames, opening 12 frames, open, secured 6-frame loop |
| Ember Cart | idle 4 frames, move 6 frames in eight route directions, arrive 6 frames |
| Living Spark carrier | idle 4 frames, move 6 frames in eight route directions, arrive 8 frames |
| Cracked Clutch | healthy, damaged, critical, destroyed 10 frames |
| Blood altar | empty, receiving 8 frames, full 6-frame loop, sealed 8 frames |
| Brood kiln | empty, receiving 8 frames, full 6-frame loop, defended 8 frames |
Furnaces and beacons share a base model within their family. Location-specific decals make the West, East, North, Southwest, and Southeast sites distinct.
The collision map is fixed at 2560 by 1600 with three connected sectors and looping routes. Art must follow the current collision rectangles. A wall sprite may extend above a collision rectangle for height, but its floor contact and passable opening must remain exact.
| Sector | Identity | Landmark emphasis |
|---|---|---|
| West yard | Foundry slag, broken carts, thick soot | West Furnace and red-orange floor cracks |
| Central yard | Ritual-industrial plaza with cleaner sight lines | The Crucible and two long central dividers |
| East yard | Cold ash storage and old beacon machinery | East Furnace and teal metal channels |
| North route | Gatehouse, windblown ash, pale guide marks | North Gate and North Beacon |
| South routes | Brood shells, collapsed masonry, wider debris fields | Southwest and Southeast Beacons |
Create these 256 by 256 edge-matching tiles:
| File stem | Use |
|---|---|
ash_floor_01 |
Main neutral ash stone |
ash_floor_02 |
Darker neutral variation |
ash_floor_03 |
Fine cracked variation |
foundry_floor_01 |
West-yard slag and iron grit |
ritual_floor_01 |
Central circular scoring |
cold_ash_floor_01 |
East-yard blue-grey ash |
gate_floor_01 |
North route slabs |
brood_floor_01 |
South route shell fragments |
Create these blend and edge tiles:
- Neutral-to-foundry horizontal, vertical, inner corner, and outer corner.
- Neutral-to-ritual horizontal, vertical, inner corner, and outer corner.
- Neutral-to-cold-ash horizontal, vertical, inner corner, and outer corner.
- Neutral-to-brood horizontal, vertical, inner corner, and outer corner.
- Arena boundary edge with black drop beyond it.
All wall parts use the current 28-pixel visual thickness at the floor contact, with taller art rising away from the walkable side.
Required modular pieces:
wall_straight_horizontalwall_straight_verticalwall_corner_newall_corner_nwwall_corner_sewall_corner_swwall_end_nwall_end_ewall_end_swall_end_wwall_t_nwall_t_ewall_t_swall_t_wwall_crosswall_broken_horizontal_01wall_broken_horizontal_02wall_broken_vertical_01wall_broken_vertical_02wall_pillarwall_gate_jamb
The four broad dividers, two central bars, four side-yard L shapes, and outer boundary all assemble from this kit.
Decals do not affect collision. Each decal has two or three rotations or mirrored variants.
- Small ash piles, medium ash piles, large ash drifts.
- Thin cracks, branching cracks, circular heat cracks.
- Soot streaks and furnace spill marks.
- Old blood smear, old blood drops, ritual blood ring.
- Broken bone scatter, skull fragment scatter, brood shell scatter.
- Iron rivet strip, bent plate, chain length, broken cart track.
- Wheel rut, boot prints, dragged body mark.
- Faded route arrow for each landmark direction.
- Cold frost patch near North Beacon.
- Teal residue near East Furnace.
- Orange slag near West Furnace.
Keep decals away from exact hazard boundaries and pickup spawn points where possible.
These props provide scale and sector identity. They do not receive collision unless the map is updated to match them.
- Closed slag barrels in intact, dented, and broken variants.
- Coal baskets and ash carts.
- Hanging chains and ground chain coils.
- Low bone cages.
- Broken beacon lenses.
- Furnace pipes in straight, elbow, valve, and ruptured variants.
- Iron grates in square and long variants.
- Brood pods in closed, cracked, and empty variants.
- Ritual posts with orange, blue, teal, and unlit lamps.
- Torn class-colored cloth scraps for route guidance.
Do not place tall foreground props over a playable lane until the renderer supports consistent actor occlusion or fade-out.
The six named landmarks need unique top-down crests and minimap symbols:
- North Beacon.
- West Furnace.
- The Crucible.
- East Furnace.
- Southwest Beacon.
- Southeast Beacon.
The North Gate receives its own extraction symbol. Names remain code-rendered text.
Ambient effects establish location but never imply damage.
- Fine grey ash drifting from upper right to lower left across the whole yard.
- Sparse orange sparks within 140 units of active furnaces and the Crucible.
- Blue-white cold dust around North Beacon and an active Freeze pickup.
- Teal electrical motes around East Furnace and a Vacuum pickup.
- Slow brown brood motes around the southern clutch and Broodmother contract props.
- Low heat shimmer above active furnace openings. Keep distortion away from interface text.
- Small foot dust under players, Sprinters, Chargers, and Harrower. Disable it on ghosts.
- Three code-drawn shadow ellipses for small, medium, and large actors plus one boss ellipse.
Ambient particles use the lowest particle-priority tier. They disappear first in lower-particle mode.
Effects are transparent PNG sequences or code-driven particles that use small texture sprites. Exact circles, progress arcs, health bars, cooldown fills, and damage numbers stay code-drawn.
| Effect ID | Art | Trigger |
|---|---|---|
fx_actor_spawn_ash |
Ash opening and four embers | Visible summon or boss arrival |
fx_enemy_hit_light |
Pale four-point flash | Normal damage |
fx_enemy_hit_heavy |
Larger flash and short radial lines | Heavy melee, boss hit, execution |
fx_player_hit |
Red-white inward flash | Player loses health |
fx_player_invulnerable |
White-blue edge ripple | Dash or temporary invulnerability rejects damage |
fx_damage_number |
Code text with small impact caret | Confirmed damage |
fx_heal_number |
Code text with green-gold plus | Confirmed heal |
fx_enemy_death_ash |
Low ash puff and fading stain | Normal enemy death |
fx_kindled_death |
Gold ash column and cinder reveal | Kindled death |
fx_boss_death |
Boss-colored core break and gold cache reveal | Boss death |
fx_wall_projectile_hit |
Pale or class-colored sparks | Projectile hits wall |
fx_knockback |
Two ground streaks moving away from source | Enemy receives knockback |
fx_execution |
Red-black horizontal cut and skull crack | Execution Rite or Reaper damage finishes enemy |
| Effect ID | Art | Trigger |
|---|---|---|
fx_ash_surge_ignite |
Gold furnace ring, upward embers, class-colored inner flash | Q activation |
fx_ash_surge_aura |
Gold rim light and sparse ember trail | Surge active for the team |
fx_cinder_collect |
Gold stream toward player or Surge bar | Cinder pickup |
fx_cinder_deposit |
Gold stream from player into altar or kiln | Sacrifice progress |
fx_player_down |
Red ring and ghost rise | Player becomes downed |
fx_revive_progress |
Exact code arc with green sparks at quarter marks | F held near body |
fx_revive_success |
Green-gold ring and upward breath | Revive completes |
fx_ghost_pulse |
Teal-white ring and soft spectral wind | Downed E ability |
fx_combo_normal |
Green snap ring | Owner detonates Brand |
fx_combo_team |
Gold center and two linked sparks | Ally detonates Brand |
fx_second_wind |
Gold heart flare and shell | Lethal hit prevented |
fx_relic_ready |
Small gold tick on relic icon | Count-based relic reaches next trigger |
fx_warrior_cleavefx_warrior_cleave_warpathfx_blooding_returnfx_thorns_reflectfx_groundbreak_innerfx_groundbreak_frost_shatterfx_bloodquake_returnfx_fault_line_outerfx_stoneguard_shellfx_ember_ram_01fx_ember_ram_02fx_ember_ram_03
The three Ember Ram effects reflect its three radii. The body dash clip stays the same.
fx_arrow_releasefx_arrow_trailfx_arrow_piercefx_arrow_impactfx_deadeye_releasefx_brand_zonefx_brand_markfx_brand_detonate_ownerfx_brand_detonate_coopfx_bounty_chainfx_piercing_brand_cutfx_death_warrant_mark
fx_sorc_bolt_trailfx_sorc_bolt_impactfx_sorc_bloom_impactfx_sorc_chain_arcfx_chill_applyfx_chill_loopfx_frost_novafx_frost_wardfx_shatterstorm_breakfx_shatterstorm_relayfx_twin_nova_outerfx_absolute_zero_field
The weapon section defines each variant. Runtime effect IDs must distinguish:
- Garlic base, Inferno, Sanctuary, Searing, Siphon, Wildfire, and Sanctum.
- Bible base hit, Tempest hit, Bulwark shove, Shock Scripture, Repulsion Verse, and Final Verse.
- Knife base, Fan release, Execution hit, Ricochet, Puncture, Blast Tips, and Reaper.
- Pulse base, Frost, Thunder, Focused Echo, Wide Aftershock, Cryo Resonance, and Thunder Resonance.
| Effect ID | Source | Required read |
|---|---|---|
fx_boomer_explosion |
Boomer | 78-unit violet danger burst |
fx_charger_tell |
Charger | Dust pulled toward lowered horns |
fx_charger_charge |
Charger | Pale ground streak and forward debris |
fx_bulwark_link |
Bulwark | Blue-grey line or broken arc to protected allies |
fx_shield_shell |
Bulwark or Null Priest | Damage-reduction shell on target |
fx_ash_caller_portal |
Ash Caller | Violet ash gate before two Walkers appear |
fx_husk_split |
Husk | Ochre shell tear before two Sprinters appear |
fx_suppress_field |
Suppressor | Thin violet 145-unit range boundary |
fx_suppressed |
Suppressor or Null Priest | Small mute rune over active ability HUD icon |
fx_stalker_target |
Stalker pursuit target | White-gold crown and off-screen arrow |
fx_sabotage |
Saboteur | Orange sparks flowing into objective progress edge |
| Boss | Effects |
|---|---|
| Warden | arrival furnace ring, targeted blast tell, Sprinter portals, phase core break, ring slam, death vent |
| Harrower | arrival claw tear, isolation target line, charge tell, charge streak, target blast, self ring, Stalker tear, mask break |
| Broodmother | arrival pod rupture, brood portals for each add type, egg-edge ring, overhead glob target, sac crack, death split |
| Null Priest | arrival null seal, shield pulse, ally links, multi-target curse, suppression rune, Suppressor gates, mask split, death implosion |
| Effect ID | Use |
|---|---|
fx_objective_activate |
Objective begins at a site |
fx_objective_progress_tick |
Each full progress quarter |
fx_objective_complete |
Green-gold completion ring |
fx_objective_fail |
Red ash collapse |
fx_optional_timer |
White outer countdown ticks |
fx_extract_charge |
Light travels from gate floor into gate frame |
fx_extract_open |
Green-white gate opening wash |
fx_defense_damage |
Prop impact sparks and integrity crack |
fx_escort_move |
Wheel ash or spark trail depending on cart variant |
fx_sacrifice_receive |
Cinder stream entering the prop |
fx_vault_drop |
Orange beam and chest impact |
fx_vault_open |
Gold lid burst before choice overlay |
The interface must work at 1280 by 720 and scale down to a 720-pixel-wide browser. Text, values, progress fills, key labels, and vote counts stay HTML or canvas text. Decorative frames and icons are image assets.
Use one condensed display face for the logo, boss names, result seals, and large headings. Use one open sans-serif face for body text, card descriptions, names, and HUD values. Both font families must ship with a license that permits game redistribution and web embedding.
- Large headings use uppercase with loose spacing.
- Body text uses normal case and no forced letter spacing.
- HUD digits use tabular figures so timers and values do not jump horizontally.
- Minimum gameplay text size is 12 CSS pixels at 1280 by 720.
- Card descriptions use at least 14 CSS pixels.
- Do not set long class, contract, or upgrade descriptions in uppercase.
- Provide Latin letters, digits, punctuation, percent, plus, slash, and the multiplication sign in the shipped subset.
Required assets:
ui/logo/ashpit_logo.png, transparent, 1600 by 500 master.ui/backgrounds/menu_yard.png, 1920 by 1080, dark yard overview with open center for interface panels.- Three class portraits.
- Three class icons.
- Four contract emblems and one Endless emblem.
- Four loadout icons.
- Five mutator icons.
- Locked padlock icon.
- Profile progress seal.
- Solo, create yard, quick join, and join-code button glyphs.
- Connection states for connecting, connected, reconnecting, and failed.
Setup screen states:
- Default Warrior selection.
- Hovered class.
- Selected class.
- Locked contract, mutator, or loadout.
- Unlocked choice.
- Contract mode with contract control enabled.
- Endless mode with contract control disabled.
- Empty join code.
- Invalid join code.
- Connecting.
- Connection failure.
Required HUD pieces:
- Player class icon and class-colored frame.
- Health bar frame, red fill texture, low-health pulse edge.
- XP bar frame and orange fill texture.
- Dash icon and blue radial or horizontal cooldown mask.
- Groundbreak, Hunter's Brand, and Frost Nova icons with violet cooldown masks.
- Keystone active icons for Bloodquake, Fault Line, Stoneguard, Bounty Chain, Piercing Brand, Death Warrant, Shatterstorm, Twin Nova, and Absolute Zero.
- Ash Surge furnace bar with empty, filling, ready, and burning states.
- Up to three relic sockets with rank studs.
- Up to three weapon slots with rank, evolution, Temper, and Overclock badges.
- Kill, time, level, combo, and revive icons.
- Current director phase icon for build, peak, and relax.
- Contract or Endless icon.
- Mutator badge.
- Objective tracker frame.
- Optional-objective timer notch.
- Boss health bar, portrait, name plate, and three phase pips.
- Four-player party panel with class icon, health, downed, ghost, disconnected, and reviving states.
- Yard code frame.
- Reconnecting and connection-lost strips.
Code draws all changing numbers and fills. The art supplies nine-slice frames, texture masks, icons, and state glows.
Required card frames:
- Shared stat.
- Warrior.
- Archer.
- Sorcerer.
- Base weapon.
- Evolution.
- Weapon Temper.
- Overclock tier 1.
- Overclock tier 2.
- Relic.
- Locked card.
- Banned card.
- Disabled card.
Required control icons:
- Take.
- Reroll with remaining count.
- Lock and unlock.
- Ban with remaining count.
- Rank pip.
- Mastery crown.
- Keystone diamond.
- Evolution fork.
- Overclock branch lock.
- Vault key or cache.
The upgrade screen must show queued level choices and queued Vault choices. Overclock choice cards clearly state that the other branch closes for the run.
Required states:
- Two available choice cards.
- Local vote selected.
- Vote count update.
- Timer below three seconds.
- Winning choice flash.
- Panel closing.
Use the four bargain icons already listed. The timer and vote count remain text.
Required assets and states:
ui/backgrounds/result_win.pngandresult_loss.png, or one yard image with code tint.- Yard secured seal.
- You fell seal.
- Contract and Endless mode icons.
- Time, kills, team level, combos, and revives icons.
- New unlock burst.
- Run again and back to classes glyphs.
- Rematch creating and rematch failed states.
The result screen uses the selected class portrait in a smaller crop. Do not require a separate victory or defeat body animation.
The minimap uses code-drawn wall geometry and camera bounds. Create these marker assets at 24 by 24 and a 48 by 48 master:
| Marker | Shape and color |
|---|---|
| Local player | White chevron showing aim direction |
| Warrior teammate | Blue circle with Warrior crest |
| Archer teammate | Green circle with Archer crest |
| Sorcerer teammate | Violet circle with Sorcerer crest |
| Downed body | Red cross inside class crest |
| Ghost | Teal hollow class crest |
| Kindled | Gold diamond with crown |
| Boss | Orange or contract-colored horned skull |
| Objective | Green ring with objective-kind center icon |
| Pursuit target | White-gold crown |
| Heart | Red heart |
| Vacuum | Teal coil |
| Freeze | Blue snowflake |
| Roast | Orange flame |
| Cinder | Gold triangle |
| Cache | Orange chest |
| Landmark | Brown site crest |
The current camera viewport remains a thin code-drawn rectangle. Off-screen objective arrows use the objective icon inside a green directional arrowhead. Boss and downed-player arrows use their own color and must not share the objective green.
Required cursor states:
- Normal aim crosshair.
- Aim over enemy.
- Aim over branded enemy.
- Aim over objective target.
- Mouse outside canvas.
Keyboard prompts are code-drawn keycaps for W, A, S, D, Space, Left Shift, E, Q, and F. Do not bake letters into raster images. There is no controller input in the current game, so controller button art is not required yet.
| Event | Feedback |
|---|---|
| Local player damaged | Red edge flash no longer than 200 ms, actor hit flash, health bar change |
| Local player at 25 percent health | Slow red health-frame pulse, no full-screen tint |
| Level gained | Orange XP burst and upgrade overlay |
| Vault opened | Orange-gold cache burst and Vault overlay |
| Ash Surge ready | Furnace bar breathes, one ready spark, no repeated full-screen flash |
| Ash Surge active | Gold screen border, player rim light, timer count |
| Director peak | Short red-orange top strip and peak icon |
| Director relax | Short pale-green top strip, heart markers appear |
| Boss arrives | Boss portrait strip, name, unique arrival effect, minimap marker |
| Boss phase changes | Phase pip, boss body effect, short camera shake |
| Objective begins | Tracker slide, off-screen arrow, site activation |
| Objective completes | Green ring, tracker check, cache drop where applicable |
| Optional objective expires | White timer breaks into red-grey ash |
| Connection interrupted | Reconnecting strip without hiding the player |
Camera shake, screen flash, and HUD motion must honor reduced-motion settings. A reduced-motion mode replaces shake with a short border pulse and uses fades instead of panel slides.
- Every danger tell uses a shape pattern as well as color.
- Blast tells use triangles. Ring tells use bars. Objective zones use dots. Friendly auras use open dashes.
- Gold Kindled crowns remain visible against orange furnaces through a dark outline.
- Player class color is paired with a unique crest and silhouette.
- Boss attacks keep their exact radius clear under particles.
- Damage numbers may be disabled without removing hit flashes.
- Screen shake, damage flash, particles, and floating numbers need separate intensity settings.
- Minimap markers use distinct shapes, not color alone.
- Interface text must meet a 4.5 to 1 contrast ratio at normal size.
- Critical text never sits over the brightest part of a background image.
- Reduced motion stops breathing glows, looping panel motion, and large camera shake.
- Photosensitive mode limits full-screen flashes to one luminance change per 300 milliseconds.
Render in this order from back to front:
- Base terrain tiles.
- Ground decals and route marks.
- Ground parts of landmarks and objective props.
- Ground danger tells and objective zones.
- Pickups behind actors.
- Actor shadows.
- Low props, player bodies, enemies, bosses, carts, and ghosts.
- Actor-held weapons and orbiting weapon bodies.
- Projectiles.
- Status overlays, hit flashes, shields, marks, and carried cinders.
- Airborne effects and particles.
- Nameplates, health bars, revive rings, and objective crowns.
- Minimap.
- Gameplay HUD.
- Choice, vote, connection, and result overlays.
Ground tells must never render behind terrain that makes them unreadable. Tall wall art may cover feet but not health bars, danger tells, or objective arrows.
This section ties every authored contract stage to its prop, marker, and effect. It prevents a generic green circle from becoming the only visual for a mission.
| Order | Stage | Art shown |
|---|---|---|
| 1 | Stabilize West Furnace for 10 seconds | West Furnace stabilizing, hold ring, furnace progress sparks |
| 2 | Thin the ash pack for 70 kills | Hunt icon, kill counter, no fixed world prop |
| 3 | Escort Ember Cart from West Furnace to Crucible | Ember Cart move loop, route line, cart arrival effect |
| 4 | Defend East Furnace for 18 seconds with 120 integrity | East Furnace health states, integrity bar, attacker impacts |
| 5 | Optional counterattack for 40 kills in 28 seconds | White-notched hunt tracker and countdown |
| Boss | Warden at the final boss time | Warden arrival, boss HUD, phase art |
| Exit | Hold North Gate for 10 seconds | Gate charging and opening states |
| Order | Stage | Art shown |
|---|---|---|
| 1 | Pay 125 kills | Blood-bowl hunt icon and kill counter |
| 2 | Carry 80 Cinders to the Crucible altar | Cinder carry badge, blood altar receive and full states |
| 3 | Pursue the Tithebearer | Stalker objective crown, pursuit arrow, red target tracker |
| 4 | Seal the offering at the Crucible for 12 seconds | Blood altar sealed animation and hold ring |
| Boss | Harrower | Harrower arrival, boss HUD, phase art |
| Exit | Hold North Gate for 9 seconds | Gate charging and opening states |
| Order | Stage | Art shown |
|---|---|---|
| 1 | Defend North Beacon for 15 seconds with 105 integrity | North Beacon health states and blue-white flame |
| 2 | Escort Living Spark to Crucible | Living Spark carrier move loop and pale route line |
| 3 | Light Southeast Beacon for 13 seconds | Southeast Beacon ignition animation and hold ring |
| 4 | Optional pursuit of light thief in 32 seconds | Stalker crown with pale-blue target treatment |
| Boss | Null Priest | Null Priest arrival, boss HUD, shield and curse art |
| Exit | Hold North Gate for 12 seconds | Gate charging and opening states |
| Order | Stage | Art shown |
|---|---|---|
| 1 | Pursue Brood Scout | Stalker body with brood-pattern objective crown |
| 2 | Carry 80 Cinders to West Furnace brood kiln | Cinder carry badge and brood kiln receive states |
| 3 | Defend cracked clutch at Southeast Beacon for 18 seconds with 125 integrity | Cracked Clutch health states, egg fragments on damage |
| 4 | Optional purge of 45 hatchlings in 30 seconds | Brood hunt tracker and countdown |
| Boss | Broodmother | Broodmother arrival, boss HUD, brood summon art |
| Exit | Hold North Gate for 10 seconds | Gate charging and opening states |
Endless alternates two trial presentations:
- Furnace Trial uses a 104-radius hold ring at the farthest beacon or furnace. Show the relevant landmark active state and a gold trial crest.
- Horde Trial uses a central hunt tracker with no fixed radius. Show the gold trial crest beside the kill counter.
Completing a trial drops one Vault cache, grants XP, and grants a reroll. Use the normal cache art plus a gold trial-complete ribbon.
Bosses rotate Warden, Harrower, Broodmother, and Null Priest. The boss HUD and arrival art must accept all four without a contract screen.
The current browser renderer receives enough data to draw circles, but not enough data to choose all animation clips and status effects in this document. The graphics implementation must add explicit visual state to the local and network render paths.
Add or derive these fields:
| Field | Why art needs it |
|---|---|
facing8 |
Select one of eight attack, dash, and ability directions |
moveDir8 |
Select locomotion direction independently from aim |
speed01 |
Scale move playback and stop foot sliding |
animState |
Select idle, move, dash, attack, active, revive, down, or rise |
actionSeq |
Restart a one-shot exactly once on every authoritative action |
attackKind |
Select Warrior cleave, Archer shot, or Sorcerer bolt release |
activeKind |
Select base or keystone active effect |
dashRemainingMs |
Fit the dash clip to class duration |
reviveTargetId |
Face the correct body during revive |
reviveProgress01 |
Draw the 1.4-second progress arc |
frostWardRemainingMs |
Draw Frost Ward for its real duration |
invulnerableRemainingMs |
Draw dash, Stoneguard, revive, or Second Wind shell |
carriedCinders |
Show the carry badge and deposit effect |
surgeActive |
Draw player rim light and ember trail |
Current network player data already includes class, facing, HP, downed state, cooldowns, and kit. Do not infer action events from cooldown changes because reconnects and late snapshots would restart the wrong animation.
Add or derive these fields:
| Field | Why art needs it |
|---|---|
facing8 |
Directional move and attack frame |
animState |
Move, contact, shoot, cast, charge, sabotage, death |
actionSeq |
One authoritative trigger per attack or cast |
roleState |
Bulwark channel, Ash Caller summon, Suppressor field, Saboteur work |
chargeState |
Charger and Harrower wind-up, loop, and recovery |
shielded |
Shield shell and impact |
chilled01 |
Frost overlay strength and speed particles |
markedKind |
Normal Brand or Death Warrant rune |
objectiveTarget |
Pursuit crown and arrow |
kindledTier |
Correct crown segments and ember intensity |
bossPhase |
Phase body overlay and HUD pips |
Current network mob data already includes enemy kind, radius, HP, boss phase, and an elite flag. The elite flag must become or be joined with kindledTier for later ascension tiers.
Each projectile needs:
- Stable projectile ID.
- Owner class or enemy source.
projectileKindsuch as arrow, sorcerer bolt, knife, spit, suppressor needle, or Null ember.- Evolution and Overclock variant where applicable.
- Position, velocity, rotation, radius, and remaining life.
- Hit, chain, splash, and wall-impact event IDs.
Current snapshots provide position, velocity, radius, and color. Color is not a safe asset selector.
Replace the generic num, slash, and ring art selector with an effectId from the catalog. Preserve position, color override, value, lifetime, scale, rotation, and event sequence. Damage numbers may keep the num path.
Objective snapshots need a visualVariant where kind alone is not enough:
- West Furnace.
- East Furnace.
- North Beacon.
- Southeast Beacon.
- Ember Cart.
- Living Spark.
- Blood altar.
- Brood kiln.
- Cracked Clutch.
- North Gate.
Include prop state, integrity fraction, route endpoints for escort, and completed or failed event sequence.
Ashpit must consume public Anvil APIs only. Use Anvil's actor animation, asset loading, particles, camera, and rendering APIs. If a reusable animation event, atlas, tint-mask, sprite-layer, or status-effect capability is missing, add that capability to Anvil rather than hard-coding a private renderer only for Ashpit. Do not import raw Phaser into the game.
The current assetsRoot is assets. Use this target layout:
assets/
style/
STYLE.md
palette.png
scale_lineup.png
mood_west_yard.png
mood_crucible.png
mood_north_gate.png
actors/
player/
warrior/
archer/
sorcerer/
ghost/
enemy/
walker/
sprinter/
brute/
spit/
boom/
charger/
bulwark/
summoner/
splitter/
suppressor/
stalker/
saboteur/
boss/
warden/
harrower/
broodmother/
null_priest/
portraits/
classes/
bosses/
weapons/
aura/
orbit/
knives/
pulse/
pickups/
props/
landmarks/
objectives/
decoration/
env/
floor/
blends/
walls/
decals/
fx/
shared/
players/
enemies/
bosses/
weapons/
relics/
objectives/
icons/
classes/
upgrades/
relics/
pickups/
contracts/
modes/
mutators/
loadouts/
bargains/
objectives/
status/
minimap/
hud/
ui/
logo/
backgrounds/
frames/
bars/
buttons/
cursors/
Store layered working files and generation references under art-source/, outside the runtime assets folder. Runtime validation should only inspect exported files.
Create one approved base identity per player, regular enemy, boss, landmark family, cart, and objective prop. Derive every frame and state from that approved image. Do not generate each frame as a new unrelated identity.
Each identity board contains:
- Front three-quarter base.
- Side base.
- Back three-quarter base.
- Material swatches.
- Weapon or body-part callouts.
- Final world-scale sample over the arena floor.
- Solid-black silhouette sample.
- Color-blind recognition sample.
The scale lineup places all three players, all 12 regular enemies, and all four bosses on one sheet at final relative size.
assets/manifest.yaml is currently empty. The graphics pass must register every runtime image. Keep animation frame order in data rather than relying on directory enumeration.
Animation definitions should record:
- Actor ID.
- Clip ID.
- Ordered frame paths.
- Frame duration.
- Loop flag.
- Event frame.
- Anchor.
- Mirrored direction mapping.
- Optional effect attachment point such as hand, weapon tip, mouth, chest core, or ground contact.
Interface and effect definitions should record their intended native size and nine-slice margins where used.
Approve these pieces together before mass production:
- West-yard mood plate.
- Crucible mood plate.
- Warrior base identity and portrait.
- Walker base identity.
- Warden base identity.
- One Garlic effect.
- Gem, Cinder, and Cache pickups.
- One upgrade card and one relic card.
- Final scale lineup.
Implement one complete route through the game:
- Warrior idle, run, attack, dash, hurt, and Groundbreak.
- Walker, Sprinter, Brute, Spitter, and Warden.
- Base Garlic, Bible, Knives, and Pulse.
- Gem, Heart, Cinder, and Cache.
- West Furnace, Crucible, East Furnace, and North Gate.
- Blast and ring hazards.
- Health, XP, Dash, active, Surge, objective, minimap, and boss HUD.
- Class, upgrade, Vault, and result screens.
The slice is accepted only after it remains readable with at least 80 enemies on screen.
- Archer and Sorcerer full player sheets.
- All remaining regular enemies.
- Harrower, Broodmother, and Null Priest.
- Every active branch, weapon evolution, and Overclock effect.
- All 66 upgrade icons and all 11 relic icons.
- Every pickup, objective prop, contract banner, mutator, loadout, and bargain.
- Full arena tile, wall, decal, and prop kit.
- Multiplayer, ghost, revive, disconnect, and reconnect states.
- Particle density presets.
- Reduced-motion and photosensitive modes.
- Atlas or texture batching through supported Anvil APIs.
- Pool all repeated effects and projectiles.
- Verify no animation allocates textures during combat.
- Test at levels 20, 30, and 50 with high-density hordes.
- Test all four-player colors, names, downed bodies, ghosts, and revives.
- Test every boss phase and contract objective.
The graphics pass is complete when every item below is true.
- All three classes have the 11 required body clips in five authored directions.
- Mirroring covers all eight directions without broken symbols or weapon hands.
- The shared ghost set works with all three class colors and crests.
- Downed body, revive, and revived rise states work in solo and multiplayer.
- Every regular enemy has all clips listed in its inventory row.
- Every boss has common, special, phase, and death clips.
- Character feet stay on the anchor and do not slide during movement.
- Collision circles still match gameplay data rather than visible sprite bounds.
- Base attacks, class abilities, all nine keystones, and Ash Surge have distinct readable effects.
- All four weapons, eight evolutions, 12 Temper cards, and 16 Overclocks have correct icons.
- Every weapon behavior change has a visible world difference.
- All 11 relics have icons and their triggered effects are visible.
- All seven pickup kinds have world, minimap, and collection states.
- Kindled tier, shield, Chill, Brand, suppression, objective target, and boss phase are visible.
- Blast and ring hazards remain exact and readable under maximum particle load.
- The full 2560 by 1600 yard follows existing collision geometry.
- Each sector has a distinct material and landmark identity.
- All six landmarks and North Gate are recognizable without text.
- Every contract stage displays the prop and state listed in the contract checklist.
- Endless Furnace and Horde Trials have distinct trackers.
- Escort props move cleanly through the existing routes.
- Defense props show healthy, damaged, critical, and destroyed states.
- No decorative prop creates a false collision boundary.
- Setup, gameplay HUD, upgrade, Vault, bargain, result, connection, and rematch states all have final art.
- All 66 upgrade icons remain distinct at 64 pixels.
- All 11 relic icons remain distinct at 32 pixels.
- Health, XP, cooldown, Surge, objective, integrity, and boss bars use code-drawn fills.
- Minimap markers use both color and shape.
- Locked, selected, hovered, disabled, voted, downed, ghost, disconnected, and reconnecting states are covered.
- Text stays code-rendered and meets contrast targets.
- Every file is registered in
assets/manifest.yamlor its referenced animation data. - Missing assets fall back to a visible greybox with the missing asset ID.
- Local and network play select the same animation and effect for the same event.
- Reconnect does not replay old attacks, abilities, deaths, or boss phase changes.
- No sprite imports raw Phaser in Ashpit.
- A four-player 100-second soak stays within the existing gameplay and snapshot limits.
- Reduced-motion, lower-particle, no-damage-number, and photosensitive options work.
- No gameplay information depends on color alone.
These counts come directly from the current gameplay catalog and this production spec:
| Category | Count |
|---|---|
| Player identities | 3 |
| Player body frames | 840 |
| Shared ghost frames | 54 |
| Class portraits | 3 |
| Regular enemy identities | 12 |
| Regular enemy body frames | 1,598 |
| Boss identities | 4 |
| Boss body frames | 1,404 |
| Upgrade icons | 66 |
| Relic icons | 11 |
| Pickup kinds | 7 |
| Contract emblems | 4 |
| Run mode emblems | 2, Contract and Endless |
| Mutator icons | 5 |
| Loadout icons | 4 |
| Bargain icons | 4 |
| Objective-kind icons | 7 |
| Named landmark crests | 6 |
| Boss portraits | 4 |
The fixed body-animation plan contains 3,896 exported frames before runtime mirroring. Effects, prop states, terrain pieces, interface frames, and marker variants are listed by family because a final atlas may combine several frames into one runtime texture without changing the required visual states.