Initial import of HEROLL source and design documents

This commit is contained in:
toshiocn
2026-10-26 16:05:39 +08:00
commit fdb55672c1
1846 changed files with 290692 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
# Heroll 视觉与表现规范
本目录是面向美术、动画、特效、UI 和客户端开发的执行入口。定稿方向为:
> **高清像素绘本式桌面冒险**:玩法世界使用清晰的像素场景、角色和特效;HUD、弹窗、卡牌及角色立绘使用粗描边卡通语言。两层共享同一套轮廓、配色和形状语义。
## 使用顺序
1. 阅读 [完整 Art Bible](../docs/2026-08-13_art-bible-heroll-report.md)。
2. 立项或派单时从 `specs/` 选择对应规则表。
3. 美术初稿按缩略图、灰度、色弱、实机尺寸四项检查。
4. 动画和 VFX 以逻辑事件为准,不以动画帧作为唯一伤害触发源。
5. 所有送审素材必须附 `assetId / biome / gameplayRole / sourceFile / exportPreset`。
## 可编辑规则表
| 文件 | 用途 |
|---|---|
| [UI 组件](specs/ui-components.csv) | 尺寸、状态、描边、交互与九宫格规则 |
| [角色和怪物](specs/character-monster-rules.csv) | 体型、轮廓、角色职责和动作集 |
| [场景主题](specs/biome-rules.csv) | 六种生物群落的色彩、材质、前中后景和危险色 |
| [动作与特效](specs/animation-vfx-timing.csv) | 时长、预警、命中停顿、层级和性能预算 |
| [资源导入](specs/asset-import-rules.csv) | 命名、尺寸、纹理、图集、压缩和 Addressables |
## 不可破坏的五条规则
- 世界层只允许整数倍像素缩放;禁止双线性模糊。
- 玩法颜色必须同时有形状或图标编码,不能只靠红绿区分。
- 任意可点击组件在 1080×1920 基准画布上不得小于 96×96 px。
- Boss 技能预警形状必须与实际伤害区域一致,关键预警不少于 500 ms。
- 样本资源只用于分析,不进入发行包;角色、UI、怪物、场景和文案均重新创作。
+21
View File
@@ -0,0 +1,21 @@
event,evidence_or_target,total_duration_ms,anticipation_ms,active_ms,recovery_ms,hit_stop_ms,frame_or_tick_rule,vfx_layer,performance_budget,acceptance
DiceNormal,evidence 1267,120,650,247,0,60Hz timeline; 12-18 visible drawings/sec,WorldUI,1 trail + 1 impact + result halo,Result remains still and readable >=250ms
DiceDouble,evidence 1267,120,650,247,0,same base as normal; add unique final beat,WorldUI,normal budget + 1 double ring,Double cue readable without text
MoveOneTile,target 140-180,20,90,40,0,integer pixel position at settle,World,1 foot dust burst,No subpixel blur at rest
NormalAttack,evidence median combat 833,target 180-260,80-120,350-500,60-90,damage event on logical tick not animation callback,CharacterFront,<=80 live particles,Weapon pose crosses target at active window
CriticalAttack,target 900-1150,220-300,100-140,400-550,100-140,one camera impulse <=10px,VFXFront,<=120 live particles + 1 flash,No full-screen white frame longer than 33ms
BossAttack,evidence example 1017,>=500,100-250,250-600,120-180,tell/active/recovery separate config,GroundTell+Character+VFXFront,<=200 live particles,Warning area equals damage area within 4px logical
BossTileStart,evidence 1000,250,300,450,0,locks dice input until settle,WorldUI,ring + crown + one burst,Current target remains visible
BossDeathOpen,evidence 1183,150,350,683,180,logic victory occurs before cinematic,VFXFront,<=240 live particles,No reward modal before silhouette settles
BattleEnter,evidence 2000,0,1200,800,0,skippable after first view,Camera+HUD,parallax only; no heavy particles,Repeat entry can accelerate to <=700ms
BattleClear,evidence 750,0,250,500,100,result fixed before banner,HUDFront,1 banner burst + confetti <=3s,Reward values never animate before commit
DamageNumber,evidence 667,0,80,587,0,merge same-source hits within 150ms,HUDFront,<=24 visible numbers,Does not cover boss tell or player HP
CommonCardReveal,evidence 250,40,120,90,0,12-18 visible drawings/sec,ModalFront,1 rim light,Readable item icon by 180ms
LegendCardReveal,evidence 633,120,250,263,0,extra hold and two-stage border,ModalFront,<=80 live particles,Longer than common but skip after reveal
UIPrimaryPress,target 180,0,70,110,0,scale 100->94->102->100%,HUD,0 particles,Feedback starts within 50ms
TileUnlock,target 300,40,120,140,0,node state commits before animation,WorldUI,ring <=48 particles,Path and node end in stable non-glowing state
PhysicalSlash,target 180-300,40,80,100,60-90,sprite sheet or mesh trail; alpha then additive,CharacterFront,1 sheet + <=24 sparks,Direction matches weapon and hit normal
HealEffect,target 500-800,80,250,300,0,green plus upward motion; no red,CharacterFront,<=60 particles,Visible on grass through white/cyan core
ShieldEffect,target 300 in + persistent + 250 out,80,120,100,0,cyan hex/arc outline; persistent opacity <=45%,CharacterUnderlay,<=32 particles persistent,Body and weapon remain legible
GroundTelegraph,target 500-1200,full tell,0,0,0,pulse frequency accelerates toward active,GroundTell,1 decal + <=24 edge particles,Shape survives colorblind and low-VFX mode
1 event,evidence_or_target,total_duration_ms,anticipation_ms,active_ms,recovery_ms,hit_stop_ms,frame_or_tick_rule,vfx_layer,performance_budget,acceptance
2 DiceNormal,evidence 1267,120,650,247,0,60Hz timeline; 12-18 visible drawings/sec,WorldUI,1 trail + 1 impact + result halo,Result remains still and readable >=250ms
3 DiceDouble,evidence 1267,120,650,247,0,same base as normal; add unique final beat,WorldUI,normal budget + 1 double ring,Double cue readable without text
4 MoveOneTile,target 140-180,20,90,40,0,integer pixel position at settle,World,1 foot dust burst,No subpixel blur at rest
5 NormalAttack,evidence median combat 833,target 180-260,80-120,350-500,60-90,damage event on logical tick not animation callback,CharacterFront,<=80 live particles,Weapon pose crosses target at active window
6 CriticalAttack,target 900-1150,220-300,100-140,400-550,100-140,one camera impulse <=10px,VFXFront,<=120 live particles + 1 flash,No full-screen white frame longer than 33ms
7 BossAttack,evidence example 1017,>=500,100-250,250-600,120-180,tell/active/recovery separate config,GroundTell+Character+VFXFront,<=200 live particles,Warning area equals damage area within 4px logical
8 BossTileStart,evidence 1000,250,300,450,0,locks dice input until settle,WorldUI,ring + crown + one burst,Current target remains visible
9 BossDeathOpen,evidence 1183,150,350,683,180,logic victory occurs before cinematic,VFXFront,<=240 live particles,No reward modal before silhouette settles
10 BattleEnter,evidence 2000,0,1200,800,0,skippable after first view,Camera+HUD,parallax only; no heavy particles,Repeat entry can accelerate to <=700ms
11 BattleClear,evidence 750,0,250,500,100,result fixed before banner,HUDFront,1 banner burst + confetti <=3s,Reward values never animate before commit
12 DamageNumber,evidence 667,0,80,587,0,merge same-source hits within 150ms,HUDFront,<=24 visible numbers,Does not cover boss tell or player HP
13 CommonCardReveal,evidence 250,40,120,90,0,12-18 visible drawings/sec,ModalFront,1 rim light,Readable item icon by 180ms
14 LegendCardReveal,evidence 633,120,250,263,0,extra hold and two-stage border,ModalFront,<=80 live particles,Longer than common but skip after reveal
15 UIPrimaryPress,target 180,0,70,110,0,scale 100->94->102->100%,HUD,0 particles,Feedback starts within 50ms
16 TileUnlock,target 300,40,120,140,0,node state commits before animation,WorldUI,ring <=48 particles,Path and node end in stable non-glowing state
17 PhysicalSlash,target 180-300,40,80,100,60-90,sprite sheet or mesh trail; alpha then additive,CharacterFront,1 sheet + <=24 sparks,Direction matches weapon and hit normal
18 HealEffect,target 500-800,80,250,300,0,green plus upward motion; no red,CharacterFront,<=60 particles,Visible on grass through white/cyan core
19 ShieldEffect,target 300 in + persistent + 250 out,80,120,100,0,cyan hex/arc outline; persistent opacity <=45%,CharacterUnderlay,<=32 particles persistent,Body and weapon remain legible
20 GroundTelegraph,target 500-1200,full tell,0,0,0,pulse frequency accelerates toward active,GroundTell,1 decal + <=24 edge particles,Shape survives colorblind and low-VFX mode
+15
View File
@@ -0,0 +1,15 @@
asset_type,naming_pattern,source_format,export_format,authoring_size,unity_import,filtering,compression,atlas_or_group,pivot_or_slice,validation
WorldCharacter,CHR_{id}_{skin}_{action}_{frame},Aseprite or PSD,PNG RGBA,96-192px logical height,Sprite Multiple; PPU32; mesh FullRect,Point no mipmaps,ASTC 6x6 Android / ASTC 6x6 iOS,Atlas_CHR_{family},feet pivot normalized y=0.08,All frames integer aligned; no edge alpha bleed
Monster,MON_{biome}_{family}_{variant}_{action}_{frame},Aseprite or PSD,PNG RGBA,64-144px logical height,Sprite Multiple; PPU32,Point no mipmaps,ASTC 6x6,Atlas_MON_{biome},feet pivot normalized y=0.08,Silhouette and hostile accent check
Boss,BOSS_{id}_{phase}_{action}_{frame},Aseprite or PSD,PNG RGBA,192x137 minimum logical box,Sprite Multiple; PPU32,Point no mipmaps,ASTC 4x4,Addressables/Boss_{id},feet pivot shared across every clip,No frame exceeds box without explicit socket update
BiomeBack,ENV_{biome}_Back_{index},PSD layered,PNG RGB,1920x1080 source or 320x180 pixel base,Sprite Single; mipmaps optional,Point when pixel base otherwise Bilinear,ASTC 6x6,Addressables/Biome_{biome},center pivot,No alpha unless parallax cutout is required
BiomeFront,ENV_{biome}_Front_{index},PSD layered,PNG RGBA,1920x1080 source or 320x180 pixel base,Sprite Single,Point when pixel base,ASTC 6x6,Addressables/Biome_{biome},bottom center,Playable edge has >=4px value separation
Tile,UI_TILE_{type}_{state},PSD or vector master,PNG RGBA,256x256 source,Sprite Single,Point or Bilinear by family; never mixed in same atlas,ASTC 6x6,Atlas_UI_Tile,center pivot with 4px transparent safe edge,Recognizable at 64x64
UI9Slice,UI_PANEL_{family}_{state},PSD or vector master,PNG RGBA,minimum 96x96 source,Sprite Single,Point or Bilinear by family,ASTC 6x6,Atlas_UI_Core,border >=12px; corners never scaled,Stress test at 50%-250% size
Icon,ICON_{domain}_{id}_{state},PSD or vector master,PNG RGBA,256x256 source,Sprite Single,Bilinear no mipmaps,ASTC 6x6,Atlas_ICON_{domain},centered optical bounds,Readable at 48x48 and grayscale
Portrait,PORT_{character}_{expression},PSD layered,PNG RGBA,1024x1024 or 1024x768,Sprite Single,Bilinear no mipmaps,ASTC 6x6,Addressables/Portraits,anchor eyes and pointer hand,Face readable at 160px height
VFXSheet,VFX_{element}_{shape}_{variant},Aseprite or EmberGen sheet,PNG RGBA,64-256px cells; power-of-two sheet,Sprite Multiple,Point for pixel VFX; Bilinear for soft masks,ASTC 4x4,Atlas_VFX_{element},center or impact-origin pivot,Frame count and FPS stored in clip metadata
Font,FONT_{family}_{weight},OTF or TTF,TMP asset,CJK dynamic source + 4096 atlas,TMP Dynamic,Linear,R8 or platform default,Group_Font_{locale},fallback chain defined,No missing glyphs in zh-Hans zh-Hant en ja ko
Animation,ANIM_{assetId}_{action}_{variant},Unity clip or Aseprite tags,AnimationClip,60Hz timeline,n/a,n/a,n/a,Controller_{assetId},events are presentation-only,No damage or reward logic depends solely on clip event
Material,MAT_{domain}_{blend}_{variant},ShaderGraph or material,Unity Material,n/a,SRP Batcher compatible,n/a,n/a,Group_Materials,n/a,Keywords <=4 and mobile variant provided
1 asset_type naming_pattern source_format export_format authoring_size unity_import filtering compression atlas_or_group pivot_or_slice validation
2 WorldCharacter CHR_{id}_{skin}_{action}_{frame} Aseprite or PSD PNG RGBA 96-192px logical height Sprite Multiple; PPU32; mesh FullRect Point no mipmaps ASTC 6x6 Android / ASTC 6x6 iOS Atlas_CHR_{family} feet pivot normalized y=0.08 All frames integer aligned; no edge alpha bleed
3 Monster MON_{biome}_{family}_{variant}_{action}_{frame} Aseprite or PSD PNG RGBA 64-144px logical height Sprite Multiple; PPU32 Point no mipmaps ASTC 6x6 Atlas_MON_{biome} feet pivot normalized y=0.08 Silhouette and hostile accent check
4 Boss BOSS_{id}_{phase}_{action}_{frame} Aseprite or PSD PNG RGBA 192x137 minimum logical box Sprite Multiple; PPU32 Point no mipmaps ASTC 4x4 Addressables/Boss_{id} feet pivot shared across every clip No frame exceeds box without explicit socket update
5 BiomeBack ENV_{biome}_Back_{index} PSD layered PNG RGB 1920x1080 source or 320x180 pixel base Sprite Single; mipmaps optional Point when pixel base otherwise Bilinear ASTC 6x6 Addressables/Biome_{biome} center pivot No alpha unless parallax cutout is required
6 BiomeFront ENV_{biome}_Front_{index} PSD layered PNG RGBA 1920x1080 source or 320x180 pixel base Sprite Single Point when pixel base ASTC 6x6 Addressables/Biome_{biome} bottom center Playable edge has >=4px value separation
7 Tile UI_TILE_{type}_{state} PSD or vector master PNG RGBA 256x256 source Sprite Single Point or Bilinear by family; never mixed in same atlas ASTC 6x6 Atlas_UI_Tile center pivot with 4px transparent safe edge Recognizable at 64x64
8 UI9Slice UI_PANEL_{family}_{state} PSD or vector master PNG RGBA minimum 96x96 source Sprite Single Point or Bilinear by family ASTC 6x6 Atlas_UI_Core border >=12px; corners never scaled Stress test at 50%-250% size
9 Icon ICON_{domain}_{id}_{state} PSD or vector master PNG RGBA 256x256 source Sprite Single Bilinear no mipmaps ASTC 6x6 Atlas_ICON_{domain} centered optical bounds Readable at 48x48 and grayscale
10 Portrait PORT_{character}_{expression} PSD layered PNG RGBA 1024x1024 or 1024x768 Sprite Single Bilinear no mipmaps ASTC 6x6 Addressables/Portraits anchor eyes and pointer hand Face readable at 160px height
11 VFXSheet VFX_{element}_{shape}_{variant} Aseprite or EmberGen sheet PNG RGBA 64-256px cells; power-of-two sheet Sprite Multiple Point for pixel VFX; Bilinear for soft masks ASTC 4x4 Atlas_VFX_{element} center or impact-origin pivot Frame count and FPS stored in clip metadata
12 Font FONT_{family}_{weight} OTF or TTF TMP asset CJK dynamic source + 4096 atlas TMP Dynamic Linear R8 or platform default Group_Font_{locale} fallback chain defined No missing glyphs in zh-Hans zh-Hant en ja ko
13 Animation ANIM_{assetId}_{action}_{variant} Unity clip or Aseprite tags AnimationClip 60Hz timeline n/a n/a n/a Controller_{assetId} events are presentation-only No damage or reward logic depends solely on clip event
14 Material MAT_{domain}_{blend}_{variant} ShaderGraph or material Unity Material n/a SRP Batcher compatible n/a n/a Group_Materials n/a Keywords <=4 and mobile variant provided
+8
View File
@@ -0,0 +1,8 @@
biome,primary_palette,secondary_palette,material_motif,back_layer,mid_layer,front_play_layer,hazard_color,ambient_motion,prohibited_conflict
Grass,#2F315F #452283,#593994 #6DBB69,wood moss banner,soft forest silhouettes and starry violet sky,castle walls pines and hanging flags,dark green turf and readable stone edge,#F0B84B,fireflies 0.15Hz; banner sway 1.5Hz,Do not use hazard green against turf
Desert,#C9AF60 #A78140,#66B5D2 #AAD1AE,sandstone cloth cactus,bright sky dunes and heat haze,sandstone fort purple flags and torches,warm sand with dark contact strip,#D94B50,heat shimmer <=8px; drifting dust,Gold path needs dark violet edge
Volcano,#4B232B #77282C,#9D3236 #F36A2D,basalt lava iron,red mountain silhouettes and lava fissures,black-red fortress chains and embers,near-black basalt with orange cracks,#FFD34D,embers 0.3-0.8Hz; lava flow slow,Danger red must be yellow-core plus shape
Stone,#242630 #34313C,#534D61 #685E79,slate ruins chains,layered cliffs in fog,heavy gray walls crates and rubble,cool slate floor with violet separation,#F29A3D,fog drift; occasional dust fall,Do not let UI slate merge into background
Abyss,#251D47 #4D256A,#7F317F #A43E74,obsidian crystal void,haunted castle and magenta horizon,dark purple wall skull banners and cyan runes,black-violet floor with luminous seams,#52D9FF,slow rune pulse and upward motes,Magenta rewards require cyan/white outline
Snow,#29527D #4483C9,#519FEA #86C2F3,ice stone pine,blue mountains and layered cloud,pale blue fortress snowcaps and orange torches,snow plane with navy contact shadows,#FF7A45,snow drift diagonal; breath puffs,White VFX require navy outline or additive cyan core
1 biome primary_palette secondary_palette material_motif back_layer mid_layer front_play_layer hazard_color ambient_motion prohibited_conflict
2 Grass #2F315F #452283 #593994 #6DBB69 wood moss banner soft forest silhouettes and starry violet sky castle walls pines and hanging flags dark green turf and readable stone edge #F0B84B fireflies 0.15Hz; banner sway 1.5Hz Do not use hazard green against turf
3 Desert #C9AF60 #A78140 #66B5D2 #AAD1AE sandstone cloth cactus bright sky dunes and heat haze sandstone fort purple flags and torches warm sand with dark contact strip #D94B50 heat shimmer <=8px; drifting dust Gold path needs dark violet edge
4 Volcano #4B232B #77282C #9D3236 #F36A2D basalt lava iron red mountain silhouettes and lava fissures black-red fortress chains and embers near-black basalt with orange cracks #FFD34D embers 0.3-0.8Hz; lava flow slow Danger red must be yellow-core plus shape
5 Stone #242630 #34313C #534D61 #685E79 slate ruins chains layered cliffs in fog heavy gray walls crates and rubble cool slate floor with violet separation #F29A3D fog drift; occasional dust fall Do not let UI slate merge into background
6 Abyss #251D47 #4D256A #7F317F #A43E74 obsidian crystal void haunted castle and magenta horizon dark purple wall skull banners and cyan runes black-violet floor with luminous seams #52D9FF slow rune pulse and upward motes Magenta rewards require cyan/white outline
7 Snow #29527D #4483C9 #519FEA #86C2F3 ice stone pine blue mountains and layered cloud pale blue fortress snowcaps and orange torches snow plane with navy contact shadows #FF7A45 snow drift diagonal; breath puffs White VFX require navy outline or additive cyan core
@@ -0,0 +1,15 @@
asset_class,gameplay_role,world_base_box,screen_scale,silhouette_rule,shape_language,palette_rule,required_actions,special_readability,acceptance
PlayerSword,balanced melee,96x96,1.00,weapon diagonal visible beyond body,triangle blade + round body,1 dominant + 1 accent + skin/metal neutral,idle/run/attack/hit/death/victory/skill,attack arc must read at 25% scale,Recognizable from black silhouette in <=2 seconds
PlayerAxe,heavy burst,104x104,1.05,wide shoulders and oversized axe,square torso + wedge weapon,warm accent; lowest attack-speed cue,idle/run/attack/hit/death/victory/skill,anticipation visibly longer than sword,Distinct from sword in grayscale
PlayerSpear,fast reach,96x112,1.00,long horizontal or 30-degree spear line,thin rectangle + diamond tip,cool accent; motion trail narrow,idle/run/attack/hit/death/victory/skill,hit point appears beyond body radius,Weapon never disappears behind body
GuidePortrait,tutorial and narrative,760x520 UI only,n/a,head/hands/prop define pose,rounded friendly forms,shares player UI palette; max 5 local colors,neutral/point/celebrate/warn/disappointed,pointer direction aligns with target,Expression readable at 160px high
SwarmEnemy,quantity pressure,64x64,0.65,one exaggerated feature,round or triangle single-mass,biome local color + one hostile accent,idle/move/attack/hit/death,low visual noise; no large shadow,20 units remain individually trackable
NormalMelee,baseline threat,88x88,0.90,weapon and head separated,square body + short triangle weapon,biome local + red hostile eye,idle/move/attack/hit/death,attack facing readable before contact,Not confused with player at silhouette level
RangedEnemy,line threat,80x96,0.90,projectile tool extends from body,thin body + straight line motif,biome local + cyan or orange projectile,idle/move/attack/hit/death,projectile origin and direction unambiguous,Projectile visible over every biome
RushEnemy,dash threat,96x80,1.00,forward-heavy center of mass,wedge or horned triangle,high-value warm accent,idle/prepare/rush/hit/death,prepare pose >=500ms before dash,Dash path matches warning strip
CurvedEnemy,arc threat,88x104,0.95,raised launcher or curved horn,crescent motif,biome local + violet projectile,idle/move/attack/hit/death,arc landing point visible,Arc never uses same tell as straight shot
RestSupport,support/control,80x96,0.85,staff/banner above head,vertical line + circle,low-saturation body + bright status icon,idle/cast/hit/death,cast target linked by beam or icon,Support function readable before stats panel
Elite,modified threat,112x112,1.20,base family plus one persistent landmark,base shape + asymmetric modifier,base palette + silver or magenta elite mark,base actions + entrance + break,modifier not only hue shift,Visible elite cue in grayscale and colorblind test
MidBoss,encounter anchor,144x128,1.50,two landmarks and larger negative space,paired shapes or asymmetric armor,biome palette + unique high-chroma accent,idle/2 attacks/hit/break/death/entrance,unique floor shadow and nameplate,Not mistaken for scaled normal enemy
Boss,stage climax,192x137 minimum,2.00-2.30,three-part silhouette with one iconic prop,unique motif tied to mechanic,max 6 local colors + phase accent,idle/3 attacks/hit/phase/break/death/entrance,each attack has distinct pose and ground shape,Recognizable as 32x32 silhouette; phase change visible without UI
1 asset_class gameplay_role world_base_box screen_scale silhouette_rule shape_language palette_rule required_actions special_readability acceptance
2 PlayerSword balanced melee 96x96 1.00 weapon diagonal visible beyond body triangle blade + round body 1 dominant + 1 accent + skin/metal neutral idle/run/attack/hit/death/victory/skill attack arc must read at 25% scale Recognizable from black silhouette in <=2 seconds
3 PlayerAxe heavy burst 104x104 1.05 wide shoulders and oversized axe square torso + wedge weapon warm accent; lowest attack-speed cue idle/run/attack/hit/death/victory/skill anticipation visibly longer than sword Distinct from sword in grayscale
4 PlayerSpear fast reach 96x112 1.00 long horizontal or 30-degree spear line thin rectangle + diamond tip cool accent; motion trail narrow idle/run/attack/hit/death/victory/skill hit point appears beyond body radius Weapon never disappears behind body
5 GuidePortrait tutorial and narrative 760x520 UI only n/a head/hands/prop define pose rounded friendly forms shares player UI palette; max 5 local colors neutral/point/celebrate/warn/disappointed pointer direction aligns with target Expression readable at 160px high
6 SwarmEnemy quantity pressure 64x64 0.65 one exaggerated feature round or triangle single-mass biome local color + one hostile accent idle/move/attack/hit/death low visual noise; no large shadow 20 units remain individually trackable
7 NormalMelee baseline threat 88x88 0.90 weapon and head separated square body + short triangle weapon biome local + red hostile eye idle/move/attack/hit/death attack facing readable before contact Not confused with player at silhouette level
8 RangedEnemy line threat 80x96 0.90 projectile tool extends from body thin body + straight line motif biome local + cyan or orange projectile idle/move/attack/hit/death projectile origin and direction unambiguous Projectile visible over every biome
9 RushEnemy dash threat 96x80 1.00 forward-heavy center of mass wedge or horned triangle high-value warm accent idle/prepare/rush/hit/death prepare pose >=500ms before dash Dash path matches warning strip
10 CurvedEnemy arc threat 88x104 0.95 raised launcher or curved horn crescent motif biome local + violet projectile idle/move/attack/hit/death arc landing point visible Arc never uses same tell as straight shot
11 RestSupport support/control 80x96 0.85 staff/banner above head vertical line + circle low-saturation body + bright status icon idle/cast/hit/death cast target linked by beam or icon Support function readable before stats panel
12 Elite modified threat 112x112 1.20 base family plus one persistent landmark base shape + asymmetric modifier base palette + silver or magenta elite mark base actions + entrance + break modifier not only hue shift Visible elite cue in grayscale and colorblind test
13 MidBoss encounter anchor 144x128 1.50 two landmarks and larger negative space paired shapes or asymmetric armor biome palette + unique high-chroma accent idle/2 attacks/hit/break/death/entrance unique floor shadow and nameplate Not mistaken for scaled normal enemy
14 Boss stage climax 192x137 minimum 2.00-2.30 three-part silhouette with one iconic prop unique motif tied to mechanic max 6 local colors + phase accent idle/3 attacks/hit/phase/break/death/entrance each attack has distinct pose and ground shape Recognizable as 32x32 silhouette; phase change visible without UI
+15
View File
@@ -0,0 +1,15 @@
component,layer,reference_size_1080x1920,minimum_hit_area,outline,corner_radius,states,color_role,content_rule,motion_rule,acceptance
TopResourceChip,HUD,220x72,220x72,4px tinted ink,16px,normal/change/insufficient,currency,icon+value; max 7 digits; use compact suffix after 999999,change pulse 180ms; value roll 300ms,No clipping in CJK and 200% value test
PrimaryButton,HUD or Modal,360x112,360x112,6px outer + 2px inner highlight,20px,normal/hover/pressed/disabled/locked,primary gold or cyan,verb first; maximum 6 Chinese characters,press 70ms down + 110ms rebound,Disabled state still readable at 4.5:1
SecondaryButton,HUD or Modal,240x96,240x96,5px outer,18px,normal/pressed/disabled,slate violet,icon optional; never compete with primary,press 60ms down + 100ms rebound,Primary remains dominant in grayscale
DangerButton,Modal,240x96,240x96,5px outer,18px,normal/pressed/disabled,danger crimson,must include destructive verb and icon,press 60ms; no idle pulse,Not used for ordinary exit or back
ModalPanel,Modal,880xAuto,n/a,8px outer + 3px inner bevel,28px,enter/idle/exit,panel violet,one decision per modal; max two primary choices,enter 220ms overshoot; exit 160ms,Background dim 58-68%; no stacked modal
TutorialBubble,Modal,820x220,n/a,6px outer + 2px inner,24px,enter/idle/advance,warm parchment or violet,one sentence; highlight one keyword only,type or fade 180-260ms; pointer bounce 600ms,Pointer targets current control; text <= 44 Chinese chars
BoardNode,WorldUI,132x132,132x132,6px outer,50%,locked/current/cleared/reward/boss,node semantic,icon + ring + state badge; no text inside,unlock 300ms; reward pulse 900ms; current breathe 1200ms,Recognizable at 64x64 thumbnail
PathRibbon,WorldUI,72px width,n/a,4px shadow edge,36px,current/cleared/locked,path gold,current path saturated; cleared desaturated 25%,flow sweep 600ms only on unlock,Never overlaps tappable node center
TileCard,Choice,320x440,320x440,7px outer + quality frame,24px,normal/focused/selected/disabled,quality dual-code,title + icon + 2-line effect + cost,deal 180ms stagger; select 220ms,All candidates visible without horizontal scroll
RewardCard,Reward,280x390,280x390,7px outer + quality frame,24px,hidden/reveal/claimed,quality dual-code,icon occupies 52-60%; quantity bottom-right,common flip 250ms; legendary 633ms,Quality readable without glow and without color
StatusIcon,CombatHUD,72x72,88x88,3px outer,16px,active/expiring/stacked,status semantic,icon + stack count; timer ring outside,enter 120ms; expiry flash 300ms,At most 6 expanded; overflow collapses
BossGauge,CombatHUD,760x64,n/a,5px outer,20px,normal/phase/break/danger,boss crimson or biome accent,name + phase marks + HP; no decorative text,phase break 350ms; damage lag 220ms,Readable over all six biome palettes
Toast,HUD,680x92,n/a,4px outer,18px,info/success/warning/error,semantic neutral,one line + icon; no input,enter 180ms; hold 1400ms; exit 160ms,Does not cover dice button or boss tell
1 component layer reference_size_1080x1920 minimum_hit_area outline corner_radius states color_role content_rule motion_rule acceptance
2 TopResourceChip HUD 220x72 220x72 4px tinted ink 16px normal/change/insufficient currency icon+value; max 7 digits; use compact suffix after 999999 change pulse 180ms; value roll 300ms No clipping in CJK and 200% value test
3 PrimaryButton HUD or Modal 360x112 360x112 6px outer + 2px inner highlight 20px normal/hover/pressed/disabled/locked primary gold or cyan verb first; maximum 6 Chinese characters press 70ms down + 110ms rebound Disabled state still readable at 4.5:1
4 SecondaryButton HUD or Modal 240x96 240x96 5px outer 18px normal/pressed/disabled slate violet icon optional; never compete with primary press 60ms down + 100ms rebound Primary remains dominant in grayscale
5 DangerButton Modal 240x96 240x96 5px outer 18px normal/pressed/disabled danger crimson must include destructive verb and icon press 60ms; no idle pulse Not used for ordinary exit or back
6 ModalPanel Modal 880xAuto n/a 8px outer + 3px inner bevel 28px enter/idle/exit panel violet one decision per modal; max two primary choices enter 220ms overshoot; exit 160ms Background dim 58-68%; no stacked modal
7 TutorialBubble Modal 820x220 n/a 6px outer + 2px inner 24px enter/idle/advance warm parchment or violet one sentence; highlight one keyword only type or fade 180-260ms; pointer bounce 600ms Pointer targets current control; text <= 44 Chinese chars
8 BoardNode WorldUI 132x132 132x132 6px outer 50% locked/current/cleared/reward/boss node semantic icon + ring + state badge; no text inside unlock 300ms; reward pulse 900ms; current breathe 1200ms Recognizable at 64x64 thumbnail
9 PathRibbon WorldUI 72px width n/a 4px shadow edge 36px current/cleared/locked path gold current path saturated; cleared desaturated 25% flow sweep 600ms only on unlock Never overlaps tappable node center
10 TileCard Choice 320x440 320x440 7px outer + quality frame 24px normal/focused/selected/disabled quality dual-code title + icon + 2-line effect + cost deal 180ms stagger; select 220ms All candidates visible without horizontal scroll
11 RewardCard Reward 280x390 280x390 7px outer + quality frame 24px hidden/reveal/claimed quality dual-code icon occupies 52-60%; quantity bottom-right common flip 250ms; legendary 633ms Quality readable without glow and without color
12 StatusIcon CombatHUD 72x72 88x88 3px outer 16px active/expiring/stacked status semantic icon + stack count; timer ring outside enter 120ms; expiry flash 300ms At most 6 expanded; overflow collapses
13 BossGauge CombatHUD 760x64 n/a 5px outer 20px normal/phase/break/danger boss crimson or biome accent name + phase marks + HP; no decorative text phase break 350ms; damage lag 220ms Readable over all six biome palettes
14 Toast HUD 680x92 n/a 4px outer 18px info/success/warning/error semantic neutral one line + icon; no input enter 180ms; hold 1400ms; exit 160ms Does not cover dice button or boss tell