Skip to content

Instantly share code, notes, and snippets.

@7etsuo
Created August 27, 2026 15:54
Show Gist options
  • Select an option

  • Save 7etsuo/53818aa80c762992a7293073bcb551bc to your computer and use it in GitHub Desktop.

Select an option

Save 7etsuo/53818aa80c762992a7293073bcb551bc to your computer and use it in GitHub Desktop.
ashpit_gdd_character_and_graphics.md

Ashpit character and graphics design document

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

What this document covers

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.

Visual direction

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.

Functional color system

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

Camera, scale, and sprite format

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.

Direction and file naming rules

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

Animation playback rules

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:

  1. Downed body or ghost.
  2. Revived rise.
  3. Reviving an ally.
  4. Class ability or Ash Surge ignition.
  5. Dash.
  6. Hit reaction.
  7. Basic attack.
  8. Move.
  9. 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.

Player animation inventory

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.

Player state coverage

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.

Warrior

Identity

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.

Body animation details

  • 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.

Warrior effects and upgrade changes

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.png
  • icons/classes/warrior.png
  • All Warrior upgrade icons listed in the upgrade catalog below.

Archer

Identity

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.

Body animation details

  • 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.

Archer effects and upgrade changes

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.png
  • icons/classes/archer.png
  • All Archer upgrade icons listed in the upgrade catalog below.

Sorcerer

Identity

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.

Body animation details

  • 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.

Sorcerer effects and upgrade changes

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.png
  • icons/classes/sorcerer.png
  • All Sorcerer upgrade icons listed in the upgrade catalog below.

Ghost, downed body, and revival

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_loop pose.
  • 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.

Enemy production rules

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.

Regular enemies

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.

Enemy projectile art

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.

Enemy status and variant overlays

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

Boss production rules

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.

Warden

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.

Harrower

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.

Broodmother

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.

Null Priest

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.

Hazard art

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.

Weapon art

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.

Garlic

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.

Bible

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.

Knives

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.

Pulse

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.

Upgrade icon catalog

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.

Shared upgrades

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

Warrior upgrades

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

Archer upgrades

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

Sorcerer upgrades

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

Base weapons and evolutions

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

Weapon Temper icons

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

Overclock icons

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.

Relic art

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.

Pickups and world items

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.

Starting loadouts

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

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

Bargain decision art

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.

Contracts

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.

Objective art

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.

Objective prop states

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.

Arena graphics

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.

Arena sectors

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

Terrain tile set

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.

Wall kit

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_horizontal
  • wall_straight_vertical
  • wall_corner_ne
  • wall_corner_nw
  • wall_corner_se
  • wall_corner_sw
  • wall_end_n
  • wall_end_e
  • wall_end_s
  • wall_end_w
  • wall_t_n
  • wall_t_e
  • wall_t_s
  • wall_t_w
  • wall_cross
  • wall_broken_horizontal_01
  • wall_broken_horizontal_02
  • wall_broken_vertical_01
  • wall_broken_vertical_02
  • wall_pillar
  • wall_gate_jamb

The four broad dividers, two central bars, four side-yard L shapes, and outer boundary all assemble from this kit.

Ground decals

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.

Decorative props

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.

Landmark signs

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 world effects

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.

Effect catalog

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.

Shared combat effects

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

Team and survival effects

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

Warrior effects

  • fx_warrior_cleave
  • fx_warrior_cleave_warpath
  • fx_blooding_return
  • fx_thorns_reflect
  • fx_groundbreak_inner
  • fx_groundbreak_frost_shatter
  • fx_bloodquake_return
  • fx_fault_line_outer
  • fx_stoneguard_shell
  • fx_ember_ram_01
  • fx_ember_ram_02
  • fx_ember_ram_03

The three Ember Ram effects reflect its three radii. The body dash clip stays the same.

Archer effects

  • fx_arrow_release
  • fx_arrow_trail
  • fx_arrow_pierce
  • fx_arrow_impact
  • fx_deadeye_release
  • fx_brand_zone
  • fx_brand_mark
  • fx_brand_detonate_owner
  • fx_brand_detonate_coop
  • fx_bounty_chain
  • fx_piercing_brand_cut
  • fx_death_warrant_mark

Sorcerer effects

  • fx_sorc_bolt_trail
  • fx_sorc_bolt_impact
  • fx_sorc_bloom_impact
  • fx_sorc_chain_arc
  • fx_chill_apply
  • fx_chill_loop
  • fx_frost_nova
  • fx_frost_ward
  • fx_shatterstorm_break
  • fx_shatterstorm_relay
  • fx_twin_nova_outer
  • fx_absolute_zero_field

Weapon effects

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.

Enemy role effects

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

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

Objective effects

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

Interface art

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.

Typography

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.

Title and setup screen

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.

Gameplay HUD

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.

Upgrade and Vault choice screens

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.

Bargain vote panel

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.

Result screen

Required assets and states:

  • ui/backgrounds/result_win.png and result_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.

Minimap and navigation graphics

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.

Cursor and input graphics

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.

Screen feedback

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.

Accessibility and combat readability

  • 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.

Draw order

Render in this order from back to front:

  1. Base terrain tiles.
  2. Ground decals and route marks.
  3. Ground parts of landmarks and objective props.
  4. Ground danger tells and objective zones.
  5. Pickups behind actors.
  6. Actor shadows.
  7. Low props, player bodies, enemies, bosses, carts, and ghosts.
  8. Actor-held weapons and orbiting weapon bodies.
  9. Projectiles.
  10. Status overlays, hit flashes, shields, marks, and carried cinders.
  11. Airborne effects and particles.
  12. Nameplates, health bars, revive rings, and objective crowns.
  13. Minimap.
  14. Gameplay HUD.
  15. 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.

Contract scene checklist

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.

Ember Run

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

Blood Tithe

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

Last Light

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

Brood Hunt

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

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.

Runtime art contract

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.

Player render data

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.

Enemy render data

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.

Projectile render data

Each projectile needs:

  • Stable projectile ID.
  • Owner class or enemy source.
  • projectileKind such 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.

Effect render data

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 render data

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.

Engine boundary

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.

Runtime asset layout

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.

Art source and identity control

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.

Asset manifest requirements

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.

Production sequence

Gate 1 style lock

Approve these pieces together before mass production:

  1. West-yard mood plate.
  2. Crucible mood plate.
  3. Warrior base identity and portrait.
  4. Walker base identity.
  5. Warden base identity.
  6. One Garlic effect.
  7. Gem, Cinder, and Cache pickups.
  8. One upgrade card and one relic card.
  9. Final scale lineup.

Gate 2 playable art slice

Implement one complete route through the game:

  1. Warrior idle, run, attack, dash, hurt, and Groundbreak.
  2. Walker, Sprinter, Brute, Spitter, and Warden.
  3. Base Garlic, Bible, Knives, and Pulse.
  4. Gem, Heart, Cinder, and Cache.
  5. West Furnace, Crucible, East Furnace, and North Gate.
  6. Blast and ring hazards.
  7. Health, XP, Dash, active, Surge, objective, minimap, and boss HUD.
  8. Class, upgrade, Vault, and result screens.

The slice is accepted only after it remains readable with at least 80 enemies on screen.

Gate 3 full gameplay coverage

  1. Archer and Sorcerer full player sheets.
  2. All remaining regular enemies.
  3. Harrower, Broodmother, and Null Priest.
  4. Every active branch, weapon evolution, and Overclock effect.
  5. All 66 upgrade icons and all 11 relic icons.
  6. Every pickup, objective prop, contract banner, mutator, loadout, and bargain.
  7. Full arena tile, wall, decal, and prop kit.
  8. Multiplayer, ghost, revive, disconnect, and reconnect states.

Gate 4 polish and performance

  1. Particle density presets.
  2. Reduced-motion and photosensitive modes.
  3. Atlas or texture batching through supported Anvil APIs.
  4. Pool all repeated effects and projectiles.
  5. Verify no animation allocates textures during combat.
  6. Test at levels 20, 30, and 50 with high-density hordes.
  7. Test all four-player colors, names, downed bodies, ghosts, and revives.
  8. Test every boss phase and contract objective.

Acceptance checklist

The graphics pass is complete when every item below is true.

Characters

  • 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.

Combat and items

  • 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.

World and objectives

  • 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.

Interface

  • 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.

Technical and performance

  • Every file is registered in assets/manifest.yaml or 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.

Fixed asset counts

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment