πΌοΈ Black Trigram (νκ΄)
February 20, 2026 Β· View on GitHub
π ISMS Alignment: This document follows Hack23 Secure Development Policy asset management requirements.
Below is a focused breakdown of exactly which artβ and animationβrelated assets youβll need for:
- Backgrounds (especially the Intro/Main Menu & Dojang/Training Hall),
- UI Icons (stances, trigrams, HUD elements), and
- Technique Animations (attack, hit, finisher sequences)
Additionally, we call out the Pixi.js modules (dependencies) youβll actually use when wiring everything together in code. Think of this as a βshopping listβ for your 2D combat gameβs art and animation pipeline, paired with the Pixi features youβll need to load, display, and animate them.
CURRENT ASSETS Available
Asset Audit
Run npm run audit:assets to verify all visual asset references in the codebase point to existing files. This ensures no broken asset links and helps maintain asset integrity.
public/assets/visual
public/assets/visual/archetypes
public/assets/visual/archetypes/amsalja.png
public/assets/visual/archetypes/hacker.png
public/assets/visual/archetypes/jeongbo_yowon.png
public/assets/visual/archetypes/jojik_pokryeokbae.png
public/assets/visual/archetypes/musa.png
public/assets/visual/bg
public/assets/visual/bg/archetyples
public/assets/visual/bg/archetyples/CyberpunkTeamDynamics.png
public/assets/visual/bg/archetyples/PlayerArchetypesExplained.png
public/assets/visual/bg/archetyples/PlayerArchetypesOverview.png
public/assets/visual/bg/dojang
public/assets/visual/bg/dojang/dojang_floor_tex.png
public/assets/visual/bg/dojang/dojang_wall_tex.png
public/assets/visual/bg/intro
public/assets/visual/bg/intro/intro_bg_loop.png
public/assets/visual/logo
public/assets/visual/logo/black-trigram-256.png
public/assets/visual/logo/black-trigram.png
---
## 1. Backgrounds & Environments
### 1.1 Intro / Main Menu Background
- **Asset Name:** `intro_bg_loop.png`
- **Description:** A seamless 1920Γ1080 loopable tile of a rainβslicked concrete floor with neon pipes and drifting dataβline grid.
- **File Format:** PNG (plus normal/roughness if you want subtle 3D lighting on flat sprites, but PNG is usually enough).
- **Folder:** `assets/visual/bg/intro/`
- **Visual Style Notes:**
- Base color: Obsidian (`#0A0F12`) with subtle filmβgrain overlay.
- Neon accents: teal/cyan reflections on puddles, flickering Hangul glyphs on pipes.
- Animation: small βrain dripβ loop in shader or flipbook.
- **Asset Name:** `mainmenu_foreground_overlay.png`
- **Description:** A semiβtransparent obsidian vignette (20px βsoft edgeβ) to darken screen edges, helping text/logo pop.
- **File Format:** PNG (alpha)
- **Folder:** `assets/visual/overlays/`
- **Usage:** Placed above `intro_bg_loop` to darken corners.
### 1.2 Dojang / Training Hall Background
- **Asset Name:** `dojang_floor_tex.png`
- **Description:** 2048Γ2048 PBRβstyle image of matteβblack tatami mats, with subtle water puddle normals (if you want dynamic reflections).
- **File Format:** PNG (or PNG + normal/roughness if desired)
- **Folder:** `assets/visual/bg/dojang/`
- **Style Notes:**
- Tileable so it can fill any resolution.
- Slight neon cyan reflections at edges where wall meets floor.
- **Asset Name:** `dojang_wall_tex.png`
- **Description:** 1024Γ1024 tile of corrugated metal with pipelines and emissive Hangul trigrams (β°, β², etc.) behind semiβopaque panels.
- **File Format:** PNG (with separate emissive mask channel if you plan to animate neon flicker).
- **Folder:** `assets/visual/bg/dojang/`
- **Style Notes:**
- The emissive mask will let you βpulseβ each trigram glyph via a simple shader or a flicker sprite.
- **Asset Name:** `dojang_wall_neon_flicker.png` (optional flipbook)
- **Description:** A small flipbook (e.g. 4 frames at 256Γ256) showing a neon glyph flicker (cycle through 0%, 50%, 100% brightness).
- **File Format:** PNG sprite sheet
- **Folder:** `assets/vfx/animations/`
- **Asset Name:** `training_console_model.png`
- **Description:** 512Γ512 stylized grayscale sprite of a holoβconsole (flat sprite) with cyan emissive accents (for realβtime data display).
- **File Format:** PNG
- **Folder:** `assets/visual/props/`
- **Notes:** Use this as a static background element; you can overlay bitmaps of gauge bars, or simply let the console glow.
- **Asset Name:** `stance_pad_circle.png`
- **Description:** 256Γ256 semiβtransparent PNG of a glowing floor circle. Pulses from 0 β 100% opacity in a 1s loop.
- **File Format:** PNG (alpha)
- **Folder:** `assets/visual/props/`
---
## 2. UI Icons & HUD Elements
### 2.1 Stance Icons
Each icon is a 64Γ64 px SVG (so it scales crisply). Weβll load them as textures in Pixi and tint/animate as needed.
1. **`icon_stance_defensive.svg`**
- Outline style in Slate Gray (`#2E3538`) when inactive.
- Filled with Teal Neon (`#00FFC8`) + soft glow when active.
2. **`icon_stance_balanced.svg`**
- Outline in Slate Gray; filled with Teal Neon on hover/active.
3. **`icon_stance_aggressive.svg`**
- Outline in Slate Gray; filled with Crimson (`#FF0044`) on βchargedβ or βreadyβ state, or Teal Neon when selected.
**Folder:** `assets/ui/icons/stances/`
### 2.2 Trigram Icons
- **File Names:**
icon_trigram_1.svg icon_trigram_2.svg β¦ icon_trigram_8.svg ``$
-
\text{Each} \text{icon}: 48 \times 48 \text{px}, \text{dark} \text{background} (\text{Gunmetal} $#424A50`) with the trigram glyph in Teal Neon.
-
States:
- Inactive: no glow, just basic fill.
- Active: slight outer glow + subtle 1.1Γ scale βpulse.β
- Hover: 1.05Γ scale + quick glow (0.2 s).
Folder:
assets/ui/icons/trigrams/
2.3 HUD Bars & Overlays
-
hud_health_bar.png(800Γ32 px PNG)- 10 segmented blocks. Each filled segment is Cyan Glow (
#1BE7FF); empty is Slate Gray. - Folder:
assets/ui/hud/
- 10 segmented blocks. Each filled segment is Cyan Glow (
-
hud_pain_bar.png(800Γ16 px PNG)- 10 segments. Filled segments are Crimson (
#FF0044); empty Slate Gray. - Folder:
assets/ui/hud/
- 10 segments. Filled segments are Crimson (
-
ui_button_start_idle.png&ui_button_start_hover.png(256Γ64 px each)- Idle: Slate Gray panel with ββΆ Start Combatβ in Hangul+English.
- Hover: Underline in Teal Neon + icon (ββΆβ) glows.
- Folder:
assets/ui/buttons/
-
ui_panel_slate.png(1024Γ512 px)- A semi-opaque Slate Gray panel (70% opacity) with a subtle noise texture.
- Folder:
assets/ui/panels/
-
tooltip_arrow.png(32Γ32 px PNG)- Small triangle arrow in Cyan Glow for tooltips.
- Folder:
assets/ui/tooltips/
3. Technique Animations (AnimatedSprite Sprite Sheets)
Any time you see code like:
await Assets.load("path/to/spritesheet.json");
const frames = [];
for (let i = 0; i < N; i++) {
frames.push(Texture.from(`frame${i}.png`));
}
const anim = new AnimatedSprite(frames);
β¦you need a sprite sheet JSON + corresponding PNG atlas for each βtechnique.β Below is a minimal required set of technique animations:
3.1 Light Strike Animation (All Archetypes)
- Sprite Sheet JSON:
strike_light_spritesheet.json - Texture Atlas:
strike_light_spritesheet.png(e.g., 512Γ512 containing all 6 frames laid out in a grid). - Frame Count: 6 frames, each ~128Γ256 (portrait orientation).
- Animation Speed: 0.6 (adjust per archetype).
- Visual Content: Character winds up β quick punch/kick β recoil. No background in atlas (transparent).
- Folder:
assets/characters/animations/techniques/light/
3.2 Medium Strike Animation
- Sprite Sheet JSON:
strike_medium_spritesheet.json - Texture Atlas:
strike_medium_spritesheet.png(6β8 frames, ~128Γ256 each). - Description: More wind-up, more impact frames, a small dust puff frame integrated (see VFX).
- Folder:
assets/characters/animations/techniques/medium/
3.3 Heavy Strike Animation
- Sprite Sheet JSON:
strike_heavy_spritesheet.json - Texture Atlas:
strike_heavy_spritesheet.png(8 frames, ~256Γ256 each). - Description: Big wind-up, slow-mo pause on impact, splash of embedded VFX dust/blood.
- Folder:
assets/characters/animations/techniques/heavy/
3.4 Critical Strike / Finisher Animation
- Sprite Sheet JSON:
strike_critical_spritesheet.json - Texture Atlas:
strike_critical_spritesheet.png(10β12 frames, ~256Γ256). - Description: Slow-mo bone-breaking blow β flash frame β slowdown.
- Folder:
assets/characters/animations/techniques/critical/
3.5 Dodge / Evade Animation
- Sprite Sheet JSON:
dodge_spritesheet.json - Texture Atlas:
dodge_spritesheet.png(4β6 frames, ~128Γ256). - Description: Quick sidestep/backflip frames, subtle afterimage.
- Folder:
assets/characters/animations/techniques/dodge/
3.6 Block / Parry Animation
- Sprite Sheet JSON:
block_spritesheet.json - Texture Atlas:
block_spritesheet.png(5 frames, ~128Γ256). - Description: Character raises arm/weapon to block β recoil if successful.
- Folder:
assets/characters/animations/techniques/block/
3.7 Hit Reaction Animation
- Sprite Sheet JSON:
hit_reaction_spritesheet.json - Texture Atlas:
hit_reaction_spritesheet.png(4 frames, ~128Γ256). - Description: Character flinches backwards, tinted red on final frame.
- Folder:
assets/characters/animations/techniques/hit/
3.8 Finisher Sequence (All Archetypes)
- Sprite Sheet JSON:
finisher_musa_spritesheet.json,finisher_amsalja_spritesheet.json, etc. - Texture Atlas:
finisher_musa_spritesheet.png(12 frames, ~256Γ256), etc. - Description: A multi-stage βcinematicβ finisher (pause β bone crushing β slow fade).
- Folder:
assets/characters/animations/finisher/
4. Pixi.js Dependencies & Modules Needed
Below is a minimal list of Pixi.js modules (from pixi.js/lib) that you will rely on to load, animate, and render everything above. In your package.json, youβve already installed pixi.js. At runtime, youβll import exactly the pieces you use:
import {
Application,
TickerPlugin, // core ticker
ResizePlugin, // auto resizes to window
Assets, // for loading JSON/PNG atlases
Texture,
Sprite,
AnimatedSprite,
Container,
TilingSprite, // if you want parallax/tiled backgrounds
Loader, // older API if you prefer Loader instead of Assets
} from "pixi.js";
-
Application(fromapp/Application.mjs)- Creates the Pixi canvas, WebGL context, stage, etc.
-
TickerPlugin&ResizePlugin- Ensures your appβs ticker (main game loop) and auto-resize functionality.
-
Assets(fromassets/Assets.mjs)-
The new recommended loader for JSON sprite sheets, PNGs, audio, etc.
-
Example:
await Assets.load( "assets/characters/animations/techniques/light/strike_light_spritesheet.json" );
-
-
Texture(fromrendering/texture/Texture.mjs)-
Create textures from loaded assets:
const frameTex = Texture.from("strike_light_000.png");
-
-
Sprite&AnimatedSprite(fromscene/sprite/Sprite.mjs&scene/sprite-animated/AnimatedSprite.mjs)Spritefor static images (UI icons, backgrounds).AnimatedSpritefor flipbook animations (techniques, VFX).
-
Container(fromscene/container/Container.mjs)-
Use a parent
Containerfor grouping layers:backgroundContainercharacterContaineruiContainervfxContainer
-
-
TilingSprite(fromscene/sprite-tiling/TilingSprite.mjs)- If you want to scroll/loop the
intro_bg_loop.pngor tiledojang_floor_tex.pngseamlessly across a larger stage.
- If you want to scroll/loop the
-
Loader(fromassets/loader/Loader.mjs)- If you prefer the older PIXI.Loader API to Assets. Both are possible;
Assetsis recommended for newer Pixi versions.
- If you prefer the older PIXI.Loader API to Assets. Both are possible;
-
Filter/BlurFilter/DisplacementFilter(fromfilters/defaults/*)- Useful for adding real-time blur afterimages (for
dodge), screen shakes, or ripples when powering up Ki (ki_charge).
- Useful for adding real-time blur afterimages (for
5. Directory Structure & Final Checklist
Below is a consolidated folder structure showing where each of the above assets live. This is what your repo (or build pipeline) needs before you start coding the Pixi setup:
/assets
β
ββ characters/
β ββ animations/
β β ββ techniques/
β β β ββ light/
β β β β ββ strike_light_spritesheet.json
β β β β ββ strike_light_spritesheet.png
β β β ββ medium/
β β β β ββ strike_medium_spritesheet.json
β β β β ββ strike_medium_spritesheet.png
β β β ββ heavy/
β β β β ββ strike_heavy_spritesheet.json
β β β β ββ strike_heavy_spritesheet.png
β β β ββ critical/
β β β β ββ strike_critical_spritesheet.json
β β β β ββ strike_critical_spritesheet.png
β β β ββ dodge/
β β β β ββ dodge_spritesheet.json
β β β β ββ dodge_spritesheet.png
β β β ββ block/
β β β β ββ block_spritesheet.json
β β β β ββ block_spritesheet.png
β β β ββ hit/
β β β ββ hit_reaction_spritesheet.json
β β β ββ hit_reaction_spritesheet.png
β β ββ finisher/
β β ββ musa_finisher_spritesheet.json
β β ββ musa_finisher_spritesheet.png
β β ββ amsalja_finisher_spritesheet.json
β β ββ amsalja_finisher_spritesheet.png
β β ββ β¦ (one per archetype)
β ββ portraits/
β ββ portrait_musa.png
β ββ portrait_amsalja.png
β ββ β¦ (other archetypes)
β
ββ fonts/
β ββ BlackTrigram-Hangul.woff2
β ββ NotoSansKR-Regular.woff2
β ββ Roboto-Regular.woff2
β
ββ i18n/
β ββ ko.json
β ββ en.json
β
ββ props/
β ββ training_console_model.png
β ββ stance_pad_circle.png
β ββ dummy_target_overlay.svg
β
ββ shaders/
β ββ rim_light.shader
β ββ blood_decal.shader
β ββ neon_flicker.shader
β
ββ ui/
β ββ buttons/
β β ββ ui_button_start_idle.png
β β ββ ui_button_start_hover.png
β ββ icons/
β β ββ stances/
β β β ββ icon_stance_defensive.svg
β β β ββ icon_stance_balanced.svg
β β β ββ icon_stance_aggressive.svg
β β ββ trigrams/
β β β ββ icon_trigram_1.svg
β β β ββ icon_trigram_2.svg
β β β ββ β¦ up to icon_trigram_8.svg
β β ββ tooltip_arrow.png
β ββ hud/
β ββ hud_health_bar.png
β ββ hud_pain_bar.png
β
ββ vfx/
β ββ animations/
β β ββ anim_logo_pulse.json
β β ββ anim_menu_slide_0.png β¦ anim_menu_slide_7.png
β β ββ anim_strike_impact_0.png β¦ anim_strike_impact_15.png
β β ββ anim_finisher_musa_0.png β¦ anim_finisher_musa_11.png
β ββ particles/
β β ββ vfx_dust_puff.png
β β ββ vfx_blood_splatter.png
β β ββ confetti_sprites.png
β ββ shaders/
β ββ vfx_impact_ring.png
β ββ vfx_neon_glow.png
β ββ vfx_critical_flash.png
β
ββ visual/
β ββ bg/
β β ββ intro/
β β β ββ intro_bg_loop.png
β β β ββ mainmenu_foreground_overlay.png
β β ββ dojang/
β β ββ dojang_floor_tex.png
β β ββ dojang_wall_tex.png
β ββ overlays/
β ββ vital_region_head.png
β ββ vital_region_neck.png
β ββ vital_region_torso.png
β ββ vital_region_arms.png
β ββ vital_region_chest.png
β ββ vital_region_legs.png
β
ββ public/
ββ assets/
ββ audio/
ββ music/
β ββ intro_theme.webm
β ββ combat_theme.webm
β ββ combat_theme_geon.webm
β ββ training_theme.webm
β ββ meditation_theme.webm
β ββ victory_theme.webm
β ββ underground_rave_theme.webm
β ββ ambient_loop.webm
ββ sfx/
ββ ambient/
β ββ dojang_ambience.webm
β ββ wind_effect.webm
β ββ dojo_crowd.webm
ββ attacks/
β ββ attack_punch_light.webm
β ββ attack_punch_medium.webm
β ββ attack_kick_heavy.webm
β ββ attack_light.webm
β ββ attack_medium.webm
β ββ attack_critical.webm
β ββ attack_special_geon.webm
β ββ dodge.webm
β ββ block_success.webm
β ββ block_break.webm
β ββ perfect_strike.webm
ββ hit/
β ββ hit_light.webm
β ββ hit_medium.webm
β ββ hit_heavy.webm
β ββ hit_critical.webm
β ββ hit_flesh.webm
β ββ hit_block.webm
ββ combo/
β ββ combo_buildup.webm
β ββ combo_finish.webm
β ββ energy_pulse.webm
ββ match/
β ββ match_start.webm
β ββ countdown.webm
β ββ match_end.webm
β ββ victory.webm
β ββ defeat.webm
ββ movement/
β ββ footstep.webm
β ββ stance_change.webm
ββ ki/
β ββ ki_charge.webm
β ββ ki_release.webm
ββ stamina/
β ββ stamina_depleted.webm
ββ health/
β ββ health_low.webm
ββ ui/
ββ menu_click.webm
ββ menu_navigate.webm
ββ menu_select.webm
ββ menu_hover.webm
ββ menu_back.webm
1. Backgrounds & Environments
1.1 Intro / Main Menu Background
-
Asset Name:
intro_bg_loop.png-
Description: A seamless 1920Γ1080 loopable tile of a rainβslicked concrete floor with neon pipes and drifting dataβline grid.
-
File Format: PNG (plus normal/roughness if you want subtle 3D lighting on flat sprites, but PNG is usually enough).
-
Folder:
assets/visual/bg/intro/ -
Visual Style Notes:
- Base color: Obsidian (
#0A0F12) with subtle filmβgrain overlay. - Neon accents: teal/cyan reflections on puddles, flickering Hangul glyphs on pipes.
- Animation: small βrain dripβ loop in shader or flipbook.
- Base color: Obsidian (
-
-
Asset Name:
mainmenu_foreground_overlay.png- Description: A semiβtransparent obsidian vignette (20px βsoft edgeβ) to darken screen edges, helping text/logo pop.
- File Format: PNG (alpha)
- Folder:
assets/visual/overlays/ - Usage: Placed above
intro_bg_loopto darken corners.
1.2 Dojang / Training Hall Background
-
Asset Name:
dojang_floor_tex.png-
Description: 2048Γ2048 PBRβstyle image of matteβblack tatami mats, with subtle water puddle normals (if you want dynamic reflections).
-
File Format: PNG (or PNG + normal/roughness if desired)
-
Folder:
assets/visual/bg/dojang/ -
Style Notes:
- Tileable so it can fill any resolution.
- Slight neon cyan reflections at edges where wall meets floor.
-
-
Asset Name:
dojang_wall_tex.png-
Description: 1024Γ1024 tile of corrugated metal with pipelines and emissive Hangul trigrams (β°, β², etc.) behind semiβopaque panels.
-
File Format: PNG (with separate emissive mask channel if you plan to animate neon flicker).
-
Folder:
assets/visual/bg/dojang/ -
Style Notes:
- The emissive mask will let you βpulseβ each trigram glyph via a simple shader or a flicker sprite.
-
-
Asset Name:
dojang_wall_neon_flicker.png(optional flipbook)- Description: A small flipbook (e.g. 4 frames at 256Γ256) showing a neon glyph flicker (cycle through 0%, 50%, 100% brightness).
- File Format: PNG sprite sheet
- Folder:
assets/vfx/animations/
-
Asset Name:
training_console_model.png- Description: 512Γ512 stylized grayscale sprite of a holoβconsole (flat sprite) with cyan emissive accents (for realβtime data display).
- File Format: PNG
- Folder:
assets/visual/props/ - Notes: Use this as a static background element; you can overlay bitmaps of gauge bars, or simply let the console glow.
-
Asset Name:
stance_pad_circle.png- Description: 256Γ256 semiβtransparent PNG of a glowing floor circle. Pulses from 0 β 100% opacity in a 1s loop.
- File Format: PNG (alpha)
- Folder:
assets/visual/props/
2. UI Icons & HUD Elements
2.1 Stance Icons
Each icon is a 64Γ64 px SVG (so it scales crisply). Weβll load them as textures in Pixi and tint/animate as needed.
-
icon_stance_defensive.svg- Outline style in Slate Gray (
#2E3538) when inactive. - Filled with Teal Neon (
#00FFC8) + soft glow when active.
- Outline style in Slate Gray (
-
icon_stance_balanced.svg- Outline in Slate Gray; filled with Teal Neon on hover/active.
-
icon_stance_aggressive.svg- Outline in Slate Gray; filled with Crimson (
#FF0044) on βchargedβ or βreadyβ state, or Teal Neon when selected.
Folder:
assets/ui/icons/stances/ - Outline in Slate Gray; filled with Crimson (
2.2 Trigram Icons
-
File Names:
icon_trigram_1.svg icon_trigram_2.svg β¦ icon_trigram_8.svg ``$ -
\text{Each} \text{icon}: 48 \times 48 \text{px}, \text{dark} \text{background} (\text{Gunmetal} $#424A50`) with the trigram glyph in Teal Neon.
-
States:
- Inactive: no glow, just basic fill.
- Active: slight outer glow + subtle 1.1Γ scale βpulse.β
- Hover: 1.05Γ scale + quick glow (0.2 s).
Folder:
assets/ui/icons/trigrams/
2.3 HUD Bars & Overlays
-
hud_health_bar.png(800Γ32 px PNG)- 10 segmented blocks. Each filled segment is Cyan Glow (
#1BE7FF); empty is Slate Gray. - Folder:
assets/ui/hud/
- 10 segmented blocks. Each filled segment is Cyan Glow (
-
hud_pain_bar.png(800Γ16 px PNG)- 10 segments. Filled segments are Crimson (
#FF0044); empty Slate Gray. - Folder:
assets/ui/hud/
- 10 segments. Filled segments are Crimson (
-
ui_button_start_idle.png&ui_button_start_hover.png(256Γ64 px each)- Idle: Slate Gray panel with ββΆ Start Combatβ in Hangul+English.
- Hover: Underline in Teal Neon + icon (ββΆβ) glows.
- Folder:
assets/ui/buttons/
-
ui_panel_slate.png(1024Γ512 px)- A semi-opaque Slate Gray panel (70% opacity) with a subtle noise texture.
- Folder:
assets/ui/panels/
-
tooltip_arrow.png(32Γ32 px PNG)- Small triangle arrow in Cyan Glow for tooltips.
- Folder:
assets/ui/tooltips/
3. Technique Animations (AnimatedSprite Sprite Sheets)
Any time you see code like:
await Assets.load("path/to/spritesheet.json");
const frames = [];
for (let i = 0; i < N; i++) {
frames.push(Texture.from(`frame${i}.png`));
}
const anim = new AnimatedSprite(frames);
β¦you need a sprite sheet JSON + corresponding PNG atlas for each βtechnique.β Below is a minimal required set of technique animations:
3.1 Light Strike Animation (All Archetypes)
- Sprite Sheet JSON:
strike_light_spritesheet.json - Texture Atlas:
strike_light_spritesheet.png(e.g., 512Γ512 containing all 6 frames laid out in a grid). - Frame Count: 6 frames, each ~128Γ256 (portrait orientation).
- Animation Speed: 0.6 (adjust per archetype).
- Visual Content: Character winds up β quick punch/kick β recoil. No background in atlas (transparent).
- Folder:
assets/characters/animations/techniques/light/
3.2 Medium Strike Animation
- Sprite Sheet JSON:
strike_medium_spritesheet.json - Texture Atlas:
strike_medium_spritesheet.png(6β8 frames, ~128Γ256 each). - Description: More wind-up, more impact frames, a small dust puff frame integrated (see VFX).
- Folder:
assets/characters/animations/techniques/medium/
3.3 Heavy Strike Animation
- Sprite Sheet JSON:
strike_heavy_spritesheet.json - Texture Atlas:
strike_heavy_spritesheet.png(8 frames, ~256Γ256 each). - Description: Big wind-up, slow-mo pause on impact, splash of embedded VFX dust/blood.
- Folder:
assets/characters/animations/techniques/heavy/
3.4 Critical Strike / Finisher Animation
- Sprite Sheet JSON:
strike_critical_spritesheet.json - Texture Atlas:
strike_critical_spritesheet.png(10β12 frames, ~256Γ256). - Description: Slow-mo bone-breaking blow β flash frame β slowdown.
- Folder:
assets/characters/animations/techniques/critical/
3.5 Dodge / Evade Animation
- Sprite Sheet JSON:
dodge_spritesheet.json - Texture Atlas:
dodge_spritesheet.png(4β6 frames, ~128Γ256). - Description: Quick sidestep/backflip frames, subtle afterimage.
- Folder:
assets/characters/animations/techniques/dodge/
3.6 Block / Parry Animation
- Sprite Sheet JSON:
block_spritesheet.json - Texture Atlas:
block_spritesheet.png(5 frames, ~128Γ256). - Description: Character raises arm/weapon to block β recoil if successful.
- Folder:
assets/characters/animations/techniques/block/
3.7 Hit Reaction Animation
- Sprite Sheet JSON:
hit_reaction_spritesheet.json - Texture Atlas:
hit_reaction_spritesheet.png(4 frames, ~128Γ256). - Description: Character flinches backwards, tinted red on final frame.
- Folder:
assets/characters/animations/techniques/hit/
3.8 Finisher Sequence (All Archetypes)
- Sprite Sheet JSON:
finisher_musa_spritesheet.json,finisher_amsalja_spritesheet.json, etc. - Texture Atlas:
finisher_musa_spritesheet.png(12 frames, ~256Γ256), etc. - Description: A multi-stage βcinematicβ finisher (pause β bone crushing β slow fade).
- Folder:
assets/characters/animations/finisher/
4. Pixi.js Dependencies & Modules Needed
Below is a minimal list of Pixi.js modules (from pixi.js/lib) that you will rely on to load, animate, and render everything above. In your package.json, youβve already installed pixi.js. At runtime, youβll import exactly the pieces you use:
import {
Application,
TickerPlugin, // core ticker
ResizePlugin, // auto resizes to window
Assets, // for loading JSON/PNG atlases
Texture,
Sprite,
AnimatedSprite,
Container,
TilingSprite, // if you want parallax/tiled backgrounds
Loader, // older API if you prefer Loader instead of Assets
} from "pixi.js";
-
Application(fromapp/Application.mjs)- Creates the Pixi canvas, WebGL context, stage, etc.
-
TickerPlugin&ResizePlugin- Ensures your appβs ticker (main game loop) and auto-resize functionality.
-
Assets(fromassets/Assets.mjs)-
The new recommended loader for JSON sprite sheets, PNGs, audio, etc.
-
Example:
await Assets.load( "assets/characters/animations/techniques/light/strike_light_spritesheet.json" );
-
-
Texture(fromrendering/texture/Texture.mjs)-
Create textures from loaded assets:
const frameTex = Texture.from("strike_light_000.png");
-
-
Sprite&AnimatedSprite(fromscene/sprite/Sprite.mjs&scene/sprite-animated/AnimatedSprite.mjs)Spritefor static images (UI icons, backgrounds).AnimatedSpritefor flipbook animations (techniques, VFX).
-
Container(fromscene/container/Container.mjs)-
Use a parent
Containerfor grouping layers:backgroundContainercharacterContaineruiContainervfxContainer
-
-
TilingSprite(fromscene/sprite-tiling/TilingSprite.mjs)- If you want to scroll/loop the
intro_bg_loop.pngor tiledojang_floor_tex.pngseamlessly across a larger stage.
- If you want to scroll/loop the
-
Loader(fromassets/loader/Loader.mjs)- If you prefer the older PIXI.Loader API to Assets. Both are possible;
Assetsis recommended for newer Pixi versions.
- If you prefer the older PIXI.Loader API to Assets. Both are possible;
-
Filter/BlurFilter/DisplacementFilter(fromfilters/defaults/*)- Useful for adding real-time blur afterimages (for
dodge), screen shakes, or ripples when powering up Ki (ki_charge).
- Useful for adding real-time blur afterimages (for
5. Directory Structure & Final Checklist
Below is a consolidated folder structure showing where each of the above assets live. This is what your repo (or build pipeline) needs before you start coding the Pixi setup:
/assets
β
ββ characters/
β ββ animations/
β β ββ techniques/
β β β ββ light/
β β β β ββ strike_light_spritesheet.json
β β β β ββ strike_light_spritesheet.png
β β β ββ medium/
β β β β ββ strike_medium_spritesheet.json
β β β β ββ strike_medium_spritesheet.png
β β β ββ heavy/
β β β β ββ strike_heavy_spritesheet.json
β β β β ββ strike_heavy_spritesheet.png
β β β ββ critical/
β β β β ββ strike_critical_spritesheet.json
β β β β ββ strike_critical_spritesheet.png
β β β ββ dodge/
β β β β ββ dodge_spritesheet.json
β β β β ββ dodge_spritesheet.png
β β β ββ block/
β β β β ββ block_spritesheet.json
β β β β ββ block_spritesheet.png
β β β ββ hit/
β β β ββ hit_reaction_spritesheet.json
β β β ββ hit_reaction_spritesheet.png
β β ββ finisher/
β β ββ musa_finisher_spritesheet.json
β β ββ musa_finisher_spritesheet.png
β β ββ amsalja_finisher_spritesheet.json
β β ββ amsalja_finisher_spritesheet.png
β β ββ β¦ (one per archetype)
β ββ portraits/
β ββ portrait_musa.png
β ββ portrait_amsalja.png
β ββ β¦ (other archetypes)
β
ββ fonts/
β ββ BlackTrigram-Hangul.woff2
β ββ NotoSansKR-Regular.woff2
β ββ Roboto-Regular.woff2
β
ββ i18n/
β ββ ko.json
β ββ en.json
β
ββ props/
β ββ training_console_model.png
β ββ stance_pad_circle.png
β ββ dummy_target_overlay.svg
β
ββ shaders/
β ββ rim_light.shader
β ββ blood_decal.shader
β ββ neon_flicker.shader
β
ββ ui/
β ββ buttons/
β β ββ ui_button_start_idle.png
β β ββ ui_button_start_hover.png
β ββ icons/
β β ββ stances/
β β β ββ icon_stance_defensive.svg
β β β ββ icon_stance_balanced.svg
β β β ββ icon_stance_aggressive.svg
β β ββ trigrams/
β β β ββ icon_trigram_1.svg
β β β ββ icon_trigram_2.svg
β β β ββ β¦ up to icon_trigram_8.svg
β β ββ tooltip_arrow.png
β ββ hud/
β ββ hud_health_bar.png
β ββ hud_pain_bar.png
β
ββ vfx/
β ββ animations/
β β ββ anim_logo_pulse.json
β β ββ anim_menu_slide_0.png β¦ anim_menu_slide_7.png
β β ββ anim_strike_impact_0.png β¦ anim_strike_impact_15.png
β β ββ anim_finisher_musa_0.png β¦ anim_finisher_musa_11.png
β ββ particles/
β β ββ vfx_dust_puff.png
β β ββ vfx_blood_splatter.png
β β ββ confetti_sprites.png
β ββ shaders/
β ββ vfx_impact_ring.png
β ββ vfx_neon_glow.png
β ββ vfx_critical_flash.png
β
ββ visual/
β ββ bg/
β β ββ intro/
β β β ββ intro_bg_loop.png
β β β ββ mainmenu_foreground_overlay.png
β β ββ dojang/
β β ββ dojang_floor_tex.png
β β ββ dojang_wall_tex.png
β ββ overlays/
β ββ vital_region_head.png
β ββ vital_region_neck.png
β ββ vital_region_torso.png
β ββ vital_region_arms.png
β ββ vital_region_chest.png
β ββ vital_region_legs.png
β
ββ public/
ββ assets/
ββ audio/
ββ music/
β ββ intro_theme.webm
β ββ combat_theme.webm
β ββ combat_theme_geon.webm
β ββ training_theme.webm
β ββ meditation_theme.webm
β ββ victory_theme.webm
β ββ underground_rave_theme.webm
β ββ ambient_loop.webm
ββ sfx/
ββ ambient/
β ββ dojang_ambience.webm
β ββ wind_effect.webm
β ββ dojo_crowd.webm
ββ attacks/
β ββ attack_punch_light.webm
β ββ attack_punch_medium.webm
β ββ attack_kick_heavy.webm
β ββ attack_light.webm
β ββ attack_medium.webm
β ββ attack_critical.webm
β ββ attack_special_geon.webm
β ββ dodge.webm
β ββ block_success.webm
β ββ block_break.webm
β ββ perfect_strike.webm
ββ hit/
β ββ hit_light.webm
β ββ hit_medium.webm
β ββ hit_heavy.webm
β ββ hit_critical.webm
β ββ hit_flesh.webm
β ββ hit_block.webm
ββ combo/
β ββ combo_buildup.webm
β ββ combo_finish.webm
β ββ energy_pulse.webm
ββ match/
β ββ match_start.webm
β ββ countdown.webm
β ββ match_end.webm
β ββ victory.webm
β ββ defeat.webm
ββ movement/
β ββ footstep.webm
β ββ stance_change.webm
ββ ki/
β ββ ki_charge.webm
β ββ ki_release.webm
ββ stamina/
β ββ stamina_depleted.webm
ββ health/
β ββ health_low.webm
ββ ui/
ββ menu_click.webm
ββ menu_navigate.webm
ββ menu_select.webm
ββ menu_hover.webm
ββ menu_back.webm
1. Backgrounds & Environments
1.1 Intro / Main Menu Background
-
Asset Name:
intro_bg_loop.png-
Description: A seamless 1920Γ1080 loopable tile of a rainβslicked concrete floor with neon pipes and drifting dataβline grid.
-
File Format: PNG (plus normal/roughness if you want subtle 3D lighting on flat sprites, but PNG is usually enough).
-
Folder:
assets/visual/bg/intro/ -
Visual Style Notes:
- Base color: Obsidian (
#0A0F12) with subtle filmβgrain overlay. - Neon accents: teal/cyan reflections on puddles, flickering Hangul glyphs on pipes.
- Animation: small βrain dripβ loop in shader or flipbook.
- Base color: Obsidian (
-
-
Asset Name:
mainmenu_foreground_overlay.png- Description: A semiβtransparent obsidian vignette (20px βsoft edgeβ) to darken screen edges, helping text/logo pop.
- File Format: PNG (alpha)
- Folder:
assets/visual/overlays/ - Usage: Placed above
intro_bg_loopto darken corners.
1.2 Dojang / Training Hall Background
-
Asset Name:
dojang_floor_tex.png-
Description: 2048Γ2048 PBRβstyle image of matteβblack tatami mats, with subtle water puddle normals (if you want dynamic reflections).
-
File Format: PNG (or PNG + normal/roughness if desired)
-
Folder:
assets/visual/bg/dojang/ -
Style Notes:
- Tileable so it can fill any resolution.
- Slight neon cyan reflections at edges where wall meets floor.
-
-
Asset Name:
dojang_wall_tex.png-
Description: 1024Γ1024 tile of corrugated metal with pipelines and emissive Hangul trigrams (β°, β², etc.) behind semiβopaque panels.
-
File Format: PNG (with separate emissive mask channel if you plan to animate neon flicker).
-
Folder:
assets/visual/bg/dojang/ -
Style Notes:
- The emissive mask will let you βpulseβ each trigram glyph via a simple shader or a flicker sprite.
-
-
Asset Name:
dojang_wall_neon_flicker.png(optional flipbook)- Description: A small flipbook (e.g. 4 frames at 256Γ256) showing a neon glyph flicker (cycle through 0%, 50%, 100% brightness).
- File Format: PNG sprite sheet
- Folder:
assets/vfx/animations/
-
Asset Name:
training_console_model.png- Description: 512Γ512 stylized grayscale sprite of a holoβconsole (flat sprite) with cyan emissive accents (for realβtime data display).
- File Format: PNG
- Folder:
assets/visual/props/ - Notes: Use this as a static background element; you can overlay bitmaps of gauge bars, or simply let the console glow.
-
Asset Name:
stance_pad_circle.png- Description: 256Γ256 semiβtransparent PNG of a glowing floor circle. Pulses from 0 β 100% opacity in a 1s loop.
- File Format: PNG (alpha)
- Folder:
assets/visual/props/
2. UI Icons & HUD Elements
2.1 Stance Icons
Each icon is a 64Γ64 px SVG (so it scales crisply). Weβll load them as textures in Pixi and tint/animate as needed.
-
icon_stance_defensive.svg- Outline style in Slate Gray (
#2E3538) when inactive. - Filled with Teal Neon (
#00FFC8) + soft glow when active.
- Outline style in Slate Gray (
-
icon_stance_balanced.svg- Outline in Slate Gray; filled with Teal Neon on hover/active.
-
icon_stance_aggressive.svg- Outline in Slate Gray; filled with Crimson (
#FF0044) on βchargedβ or βreadyβ state, or Teal Neon when selected.
Folder:
assets/ui/icons/stances/ - Outline in Slate Gray; filled with Crimson (
2.2 Trigram Icons
-
File Names:
icon_trigram_1.svg icon_trigram_2.svg β¦ icon_trigram_8.svg ``$ -
\text{Each} \text{icon}: 48 \times 48 \text{px}, \text{dark} \text{background} (\text{Gunmetal} $#424A50`) with the trigram glyph in Teal Neon.
-
States:
- Inactive: no glow, just basic fill.
- Active: slight outer glow + subtle 1.1Γ scale βpulse.β
- Hover: 1.05Γ scale + quick glow (0.2 s).
Folder:
assets/ui/icons/trigrams/
2.3 HUD Bars & Overlays
-
hud_health_bar.png(800Γ32 px PNG)- 10 segmented blocks. Each filled segment is Cyan Glow (
#1BE7FF); empty is Slate Gray. - Folder:
assets/ui/hud/
- 10 segmented blocks. Each filled segment is Cyan Glow (
-
hud_pain_bar.png(800Γ16 px PNG)- 10 segments. Filled segments are Crimson (
#FF0044); empty Slate Gray. - Folder:
assets/ui/hud/
- 10 segments. Filled segments are Crimson (
-
ui_button_start_idle.png&ui_button_start_hover.png(256Γ64 px each)- Idle: Slate Gray panel with ββΆ Start Combatβ in Hangul+English.
- Hover: Underline in Teal Neon + icon (ββΆβ) glows.
- Folder:
assets/ui/buttons/
-
ui_panel_slate.png(1024Γ512 px)- A semi-opaque Slate Gray panel (70% opacity) with a subtle noise texture.
- Folder:
assets/ui/panels/
-
tooltip_arrow.png(32Γ32 px PNG)- Small triangle arrow in Cyan Glow for tooltips.
- Folder:
assets/ui/tooltips/
3. Technique Animations (AnimatedSprite Sprite Sheets)
Any time you see code like:
await Assets.load("path/to/spritesheet.json");
const frames = [];
for (let i = 0; i < N; i++) {
frames.push(Texture.from(`frame${i}.png`));
}
const anim = new AnimatedSprite(frames);
β¦you need a sprite sheet JSON + corresponding PNG atlas for each βtechnique.β Below is a minimal required set of technique animations:
3.1 Light Strike Animation (All Archetypes)
- Sprite Sheet JSON:
strike_light_spritesheet.json - Texture Atlas:
strike_light_spritesheet.png(e.g., 512Γ512 containing all 6 frames laid out in a grid). - Frame Count: 6 frames, each ~128Γ256 (portrait orientation).
- Animation Speed: 0.6 (adjust per archetype).
- Visual Content: Character winds up β quick punch/kick β recoil. No background in atlas (transparent).
- Folder:
assets/characters/animations/techniques/light/
3.2 Medium Strike Animation
- Sprite Sheet JSON:
strike_medium_spritesheet.json - Texture Atlas:
strike_medium_spritesheet.png(6β8 frames, ~128Γ256 each). - Description: More wind-up, more impact frames, a small dust puff frame integrated (see VFX).
- Folder:
assets/characters/animations/techniques/medium/
3.3 Heavy Strike Animation
- Sprite Sheet JSON:
strike_heavy_spritesheet.json - Texture Atlas:
strike_heavy_spritesheet.png(8 frames, ~256Γ256 each). - Description: Big wind-up, slow-mo pause on impact, splash of embedded VFX dust/blood.
- Folder:
assets/characters/animations/techniques/heavy/
3.4 Critical Strike / Finisher Animation
- Sprite Sheet JSON:
strike_critical_spritesheet.json - Texture Atlas:
strike_critical_spritesheet.png(10β12 frames, ~256Γ256). - Description: Slow-mo bone-breaking blow β flash frame β slowdown.
- Folder:
assets/characters/animations/techniques/critical/
3.5 Dodge / Evade Animation
- Sprite Sheet JSON:
dodge_spritesheet.json - Texture Atlas:
dodge_spritesheet.png(4β6 frames, ~128Γ256). - Description: Quick sidestep/backflip frames, subtle afterimage.
- Folder:
assets/characters/animations/techniques/dodge/
3.6 Block / Parry Animation
- Sprite Sheet JSON:
block_spritesheet.json - Texture Atlas:
block_spritesheet.png(5 frames, ~128Γ256). - Description: Character raises arm/weapon to block β recoil if successful.
- Folder:
assets/characters/animations/techniques/block/
3.7 Hit Reaction Animation
- Sprite Sheet JSON:
hit_reaction_spritesheet.json - Texture Atlas:
hit_reaction_spritesheet.png(4 frames, ~128Γ256). - Description: Character flinches backwards, tinted red on final frame.
- Folder:
assets/characters/animations/techniques/hit/
3.8 Finisher Sequence (All Archetypes)
- Sprite Sheet JSON:
finisher_musa_spritesheet.json,finisher_amsalja_spritesheet.json, etc. - Texture Atlas:
finisher_musa_spritesheet.png(12 frames, ~256Γ256), etc. - Description: A multi-stage βcinematicβ finisher (pause β bone crushing β slow fade).
- Folder:
assets/characters/animations/finisher/
4. Pixi.js Dependencies & Modules Needed
Below is a minimal list of Pixi.js modules (from pixi.js/lib) that you will rely on to load, animate, and render everything above. In your package.json, youβve already installed pixi.js. At runtime, youβll import exactly the pieces you use:
import {
Application,
TickerPlugin, // core ticker
ResizePlugin, // auto resizes to window
Assets, // for loading JSON/PNG atlases
Texture,
Sprite,
AnimatedSprite,
Container,
TilingSprite, // if you want parallax/tiled backgrounds
Loader, // older API if you prefer Loader instead of Assets
} from "pixi.js";
-
Application(fromapp/Application.mjs)- Creates the Pixi canvas, WebGL context, stage, etc.
-
TickerPlugin&ResizePlugin- Ensures your appβs ticker (main game loop) and auto-resize functionality.
-
Assets(fromassets/Assets.mjs)-
The new recommended loader for JSON sprite sheets, PNGs, audio, etc.
-
Example:
await Assets.load( "assets/characters/animations/techniques/light/strike_light_spritesheet.json" );
-
-
Texture(fromrendering/texture/Texture.mjs)-
Create textures from loaded assets:
const frameTex = Texture.from("strike_light_000.png");
-
-
Sprite&AnimatedSprite(fromscene/sprite/Sprite.mjs&scene/sprite-animated/AnimatedSprite.mjs)Spritefor static images (UI icons, backgrounds).AnimatedSpritefor flipbook animations (techniques, VFX).
-
Container(fromscene/container/Container.mjs)-
Use a parent
Containerfor grouping layers:backgroundContainercharacterContaineruiContainervfxContainer
-
-
TilingSprite(fromscene/sprite-tiling/TilingSprite.mjs)- If you want to scroll/loop the
intro_bg_loop.pngor tiledojang_floor_tex.pngseamlessly across a larger stage.
- If you want to scroll/loop the
-
Loader(fromassets/loader/Loader.mjs)- If you prefer the older PIXI.Loader API to Assets. Both are possible;
Assetsis recommended for newer Pixi versions.
- If you prefer the older PIXI.Loader API to Assets. Both are possible;
-
Filter/BlurFilter/DisplacementFilter(fromfilters/defaults/*)- Useful for adding real-time blur afterimages (for
dodge), screen shakes, or ripples when powering up Ki (ki_charge).
- Useful for adding real-time blur afterimages (for
5. Directory Structure & Final Checklist
Below is a consolidated folder structure showing where each of the above assets live. This is what your repo (or build pipeline) needs before you start coding the Pixi setup:
/assets
β
ββ characters/
β ββ animations/
β β ββ techniques/
β β β ββ light/
β β β β ββ strike_light_spritesheet.json
β β β β ββ strike_light_spritesheet.png
β β β ββ medium/
β β β β ββ strike_medium_spritesheet.json
β β β β ββ strike_medium_spritesheet.png
β β β ββ heavy/
β β β β ββ strike_heavy_spritesheet.json
β β β β ββ strike_heavy_spritesheet.png
β β β ββ critical/
β β β β ββ strike_critical_spritesheet.json
β β β β ββ strike_critical_spritesheet.png
β β β ββ dodge/
β β β β ββ dodge_spritesheet.json
β β β β ββ dodge_spritesheet.png
β β β ββ block/
β β β β ββ block_spritesheet.json
β β β β ββ block_spritesheet.png
β β β ββ hit/
β β β ββ hit_reaction_spritesheet.json
β β β ββ hit_reaction_spritesheet.png
β β ββ finisher/
β β ββ musa_finisher_spritesheet.json
β β ββ musa_finisher_spritesheet.png
β β ββ amsalja_finisher_spritesheet.json
β β ββ amsalja_finisher_spritesheet.png
β β ββ β¦ (one per archetype)
β ββ portraits/
β ββ portrait_musa.png
β ββ portrait_amsalja.png
β ββ β¦ (other archetypes)
β
ββ fonts/
β ββ BlackTrigram-Hangul.woff2
β ββ NotoSansKR-Regular.woff2
β ββ Roboto-Regular.woff2
β
ββ i18n/
β ββ ko.json
β ββ en.json
β
ββ props/
β ββ training_console_model.png
β ββ stance_pad_circle.png
β ββ dummy_target_overlay.svg
β
ββ shaders/
β ββ rim_light.shader
β ββ blood_decal.shader
β ββ neon_flicker.shader
β
ββ ui/
β ββ buttons/
β β ββ ui_button_start_idle.png
β β ββ ui_button_start_hover.png
β ββ icons/
β β ββ stances/
β β β ββ icon_stance_defensive.svg
β β β ββ icon_stance_balanced.svg
β β β ββ icon_stance_aggressive.svg
β β ββ trigrams/
β β β ββ icon_trigram_1.svg
β β β ββ icon_trigram_2.svg
β β β ββ β¦ up to icon_trigram_8.svg
β β ββ tooltip_arrow.png
β ββ hud/
β ββ hud_health_bar.png
β ββ hud_pain_bar.png
β
ββ vfx/
β ββ animations/
β β ββ anim_logo_pulse.json
β β ββ anim_menu_slide_0.png β¦ anim_menu_slide_7.png
β β ββ anim_strike_impact_0.png β¦ anim_strike_impact_15.png
β β ββ anim_finisher_musa_0.png β¦ anim_finisher_musa_11.png
β ββ particles/
β β ββ vfx_dust_puff.png
β β ββ vfx_blood_splatter.png
β β ββ confetti_sprites.png
β ββ shaders/
β ββ vfx_impact_ring.png
β ββ vfx_neon_glow.png
β ββ vfx_critical_flash.png
β
ββ visual/
β ββ bg/
β β ββ intro/
β β β ββ intro_bg_loop.png
β β β ββ mainmenu_foreground_overlay.png
β β ββ dojang/
β β ββ dojang_floor_tex.png
β β ββ dojang_wall_tex.png
β ββ overlays/
β ββ vital_region_head.png
β ββ vital_region_neck.png
β ββ vital_region_torso.png
β ββ vital_region_arms.png
β ββ vital_region_chest.png
β ββ vital_region_legs.png
β
ββ public/
ββ assets/
ββ audio/
ββ music/
β ββ intro_theme.webm
β ββ combat_theme.webm
β ββ combat_theme_geon.webm
β ββ training_theme.webm
β ββ meditation_theme.webm
β ββ victory_theme.webm
β ββ underground_rave_theme.webm
β ββ ambient_loop.webm
ββ sfx/
ββ ambient/
β ββ dojang_ambience.webm
β ββ wind_effect.webm
β ββ dojo_crowd.webm
ββ attacks/
β ββ attack_punch_light.webm
β ββ attack_punch_medium.webm
β ββ attack_kick_heavy.webm
β ββ attack_light.webm
β ββ attack_medium.webm
β ββ attack_critical.webm
β ββ attack_special_geon.webm
β ββ dodge.webm
β ββ block_success.webm
β ββ block_break.webm
β ββ perfect_strike.webm
ββ hit/
β ββ hit_light.webm
β ββ hit_medium.webm
β ββ hit_heavy.webm
β ββ hit_critical.webm
β ββ hit_flesh.webm
β ββ hit_block.webm
ββ combo/
β ββ combo_buildup.webm
β ββ combo_finish.webm
β ββ energy_pulse.webm
ββ match/
β ββ match_start.webm
β ββ countdown.webm
β ββ match_end.webm
β ββ victory.webm
β ββ defeat.webm
ββ movement/
β ββ footstep.webm
β ββ stance_change.webm
ββ ki/
β ββ ki_charge.webm
β ββ ki_release.webm
ββ stamina/
β ββ stamina_depleted.webm
ββ health/
β ββ health_low.webm
ββ ui/
ββ menu_click.webm
ββ menu_navigate.webm
ββ menu_select.webm
ββ menu_hover.webm
ββ menu_back.webm
1. Backgrounds & Environments
1.1 Intro / Main Menu Background
-
Asset Name:
intro_bg_loop.png-
Description: A seamless 1920Γ1080 loopable tile of a rainβslicked concrete floor with neon pipes and drifting dataβline grid.
-
File Format: PNG (plus normal/roughness if you want subtle 3D lighting on flat sprites, but PNG is usually enough).
-
Folder:
assets/visual/bg/intro/ -
Visual Style Notes:
- Base color: Obsidian (
#0A0F12) with subtle filmβgrain overlay. - Neon accents: teal/cyan reflections on puddles, flickering Hangul glyphs on pipes.
- Animation: small βrain dripβ loop in shader or flipbook.
- Base color: Obsidian (
-
-
Asset Name:
mainmenu_foreground_overlay.png- Description: A semiβtransparent obsidian vignette (20px βsoft edgeβ) to darken screen edges, helping text/logo pop.
- File Format: PNG (alpha)
- Folder:
assets/visual/overlays/ - Usage: Placed above
intro_bg_loopto darken corners.
1.2 Dojang / Training Hall Background
-
Asset Name:
dojang_floor_tex.png-
Description: 2048Γ2048 PBRβstyle image of matteβblack tatami mats, with subtle water puddle normals (if you want dynamic reflections).
-
File Format: PNG (or PNG + normal/roughness if desired)
-
Folder:
assets/visual/bg/dojang/ -
Style Notes:
- Tileable so it can fill any resolution.
- Slight neon cyan reflections at edges where wall meets floor.
-
-
Asset Name:
dojang_wall_tex.png-
Description: 1024Γ1024 tile of corrugated metal with pipelines and emissive Hangul trigrams (β°, β², etc.) behind semiβopaque panels.
-
File Format: PNG (with separate emissive mask channel if you plan to animate neon flicker).
-
Folder:
assets/visual/bg/dojang/ -
Style Notes:
- The emissive mask will let you βpulseβ each trigram glyph via a simple shader or a flicker sprite.
-
-
Asset Name:
dojang_wall_neon_flicker.png(optional flipbook)- Description: A small flipbook (e.g. 4 frames at 256Γ256) showing a neon glyph flicker (cycle through 0%, 50%, 100% brightness).
- File Format: PNG sprite sheet
- Folder:
assets/vfx/animations/
-
Asset Name:
training_console_model.png- Description: 512Γ512 stylized grayscale sprite of a holoβconsole (flat sprite) with cyan emissive accents (for realβtime data display).
- File Format: PNG
- Folder:
assets/visual/props/ - Notes: Use this as a static background element; you can overlay bitmaps of gauge bars, or simply let the console glow.
-
Asset Name:
stance_pad_circle.png- Description: 256Γ256 semiβtransparent PNG of a glowing floor circle. Pulses from 0 β 100% opacity in a 1s loop.
- File Format: PNG (alpha)
- Folder:
assets/visual/props/
2. UI Icons & HUD Elements
2.1 Stance Icons
Each icon is a 64Γ64 px SVG (so it scales crisply). Weβll load them as textures in Pixi and tint/animate as needed.
-
icon_stance_defensive.svg- Outline style in Slate Gray (
#2E3538) when inactive. - Filled with Teal Neon (
#00FFC8) + soft glow when active.
- Outline style in Slate Gray (
-
icon_stance_balanced.svg- Outline in Slate Gray; filled with Teal Neon on hover/active.
-
icon_stance_aggressive.svg- Outline in Slate Gray; filled with Crimson (
#FF0044) on βchargedβ or βreadyβ state, or Teal Neon when selected.
Folder:
assets/ui/icons/stances/ - Outline in Slate Gray; filled with Crimson (
2.2 Trigram Icons
-
File Names:
icon_trigram_1.svg icon_trigram_2.svg β¦ icon_trigram_8.svg ``$ -
\text{Each} \text{icon}: 48 \times 48 \text{px}, \text{dark} \text{background} (\text{Gunmetal} $#424A50`) with the trigram glyph in Teal Neon.
-
States:
- Inactive: no glow, just basic fill.
- Active: slight outer glow + subtle 1.1Γ scale βpulse.β
- Hover: 1.05Γ scale + quick glow (0.2 s).
Folder:
assets/ui/icons/trigrams/
2.3 HUD Bars & Overlays
-
hud_health_bar.png(800Γ32 px PNG)- 10 segmented blocks. Each filled segment is Cyan Glow (
#1BE7FF); empty is Slate Gray. - Folder:
assets/ui/hud/
- 10 segmented blocks. Each filled segment is Cyan Glow (
-
hud_pain_bar.png(800Γ16 px PNG)- 10 segments. Filled segments are Crimson (
#FF0044); empty Slate Gray. - Folder:
assets/ui/hud/
- 10 segments. Filled segments are Crimson (
-
ui_button_start_idle.png&ui_button_start_hover.png(256Γ64 px each)- Idle: Slate Gray panel with ββΆ Start Combatβ in Hangul+English.
- Hover: Underline in Teal Neon + icon (ββΆβ) glows.
- Folder:
assets/ui/buttons/
-
ui_panel_slate.png(1024Γ512 px)- A semi-opaque Slate Gray panel (70% opacity) with a subtle noise texture.
- Folder:
assets/ui/panels/
-
tooltip_arrow.png(32Γ32 px PNG)- Small triangle arrow in Cyan Glow for tooltips.
- Folder:
assets/ui/tooltips/
3. Technique Animations (AnimatedSprite Sprite Sheets)
Any time you see code like:
await Assets.load("path/to/spritesheet.json");
const frames = [];
for (let i = 0; i < N; i++) {
frames.push(Texture.from(`frame${i}.png`));
}
const anim = new AnimatedSprite(frames);
β¦you need a sprite sheet JSON + corresponding PNG atlas for each βtechnique.β Below is a minimal required set of technique animations:
3.1 Light Strike Animation (All Archetypes)
- Sprite Sheet JSON:
strike_light_spritesheet.json - Texture Atlas:
strike_light_spritesheet.png(e.g., 512Γ512 containing all 6 frames laid out in a grid). - Frame Count: 6 frames, each ~128Γ256 (portrait orientation).
- Animation Speed: 0.6 (adjust per archetype).
- Visual Content: Character winds up β quick punch/kick β recoil. No background in atlas (transparent).
- Folder:
assets/characters/animations/techniques/light/
3.2 Medium Strike Animation
- Sprite Sheet JSON:
strike_medium_spritesheet.json - Texture Atlas:
strike_medium_spritesheet.png(6β8 frames, ~128Γ256 each). - Description: More wind-up, more impact frames, a small dust puff frame integrated (see VFX).
- Folder:
assets/characters/animations/techniques/medium/
3.3 Heavy Strike Animation
- Sprite Sheet JSON:
strike_heavy_spritesheet.json - Texture Atlas:
strike_heavy_spritesheet.png(8 frames, ~256Γ256 each). - Description: Big wind-up, slow-mo pause on impact, splash of embedded VFX dust/blood.
- Folder:
assets/characters/animations/techniques/heavy/
3.4 Critical Strike / Finisher Animation
- Sprite Sheet JSON:
strike_critical_spritesheet.json - Texture Atlas:
strike_critical_spritesheet.png(10β12 frames, ~256Γ256). - Description: Slow-mo bone-breaking blow β flash frame β slowdown.
- Folder:
assets/characters/animations/techniques/critical/
3.5 Dodge / Evade Animation
- Sprite Sheet JSON:
dodge_spritesheet.json - Texture Atlas:
dodge_spritesheet.png(4β6 frames, ~128Γ256). - Description: Quick sidestep/backflip frames, subtle afterimage.
- Folder:
assets/characters/animations/techniques/dodge/
3.6 Block / Parry Animation
- Sprite Sheet JSON:
block_spritesheet.json - Texture Atlas:
block_spritesheet.png(5 frames, ~128Γ256). - Description: Character raises arm/weapon to block β recoil if successful.
- Folder:
assets/characters/animations/techniques/block/
3.7 Hit Reaction Animation
- Sprite Sheet JSON:
hit_reaction_spritesheet.json - Texture Atlas:
hit_reaction_spritesheet.png(4 frames, ~128Γ256). - Description: Character flinches backwards, tinted red on final frame.
- Folder:
assets/characters/animations/techniques/hit/
3.8 Finisher Sequence (All Archetypes)
- Sprite Sheet JSON:
finisher_musa_spritesheet.json,finisher_amsalja_spritesheet.json, etc. - Texture Atlas:
finisher_musa_spritesheet.png(12 frames, ~256Γ256), etc. - Description: A multi-stage βcinematicβ finisher (pause β bone crushing β slow fade).
- Folder:
assets/characters/animations/finisher/
4. Pixi.js Dependencies & Modules Needed
Below is a minimal list of Pixi.js modules (from pixi.js/lib) that you will rely on to load, animate, and render everything above. In your package.json, youβve already installed pixi.js. At runtime, youβll import exactly the pieces you use:
import {
Application,
TickerPlugin, // core ticker
ResizePlugin, // auto resizes to window
Assets, // for loading JSON/PNG atlases
Texture,
Sprite,
AnimatedSprite,
Container,
TilingSprite, // if you want parallax/tiled backgrounds
Loader, // older API if you prefer Loader instead of Assets
} from "pixi.js";
-
Application(fromapp/Application.mjs)- Creates the Pixi canvas, WebGL context, stage, etc.
-
TickerPlugin&ResizePlugin- Ensures your appβs ticker (main game loop) and auto-resize functionality.
-
Assets(fromassets/Assets.mjs)-
The new recommended loader for JSON sprite sheets, PNGs, audio, etc.
-
Example:
await Assets.load( "assets/characters/animations/techniques/light/strike_light_spritesheet.json" );
-
-
Texture(fromrendering/texture/Texture.mjs)-
Create textures from loaded assets:
const frameTex = Texture.from("strike_light_000.png");
-
-
Sprite&AnimatedSprite(fromscene/sprite/Sprite.mjs&scene/sprite-animated/AnimatedSprite.mjs)Spritefor static images (UI icons, backgrounds).AnimatedSpritefor flipbook animations (techniques, VFX).
-
Container(fromscene/container/Container.mjs)-
Use a parent
Containerfor grouping layers:backgroundContainercharacterContaineruiContainervfxContainer
-
-
TilingSprite(fromscene/sprite-tiling/TilingSprite.mjs)- If you want to scroll/loop the
intro_bg_loop.pngor tiledojang_floor_tex.pngseamlessly across a larger stage.
- If you want to scroll/loop the
-
Loader(fromassets/loader/Loader.mjs)- If you prefer the older PIXI.Loader API to Assets. Both are possible;
Assetsis recommended for newer Pixi versions.
- If you prefer the older PIXI.Loader API to Assets. Both are possible;
-
Filter/BlurFilter/DisplacementFilter(fromfilters/defaults/*)- Useful for adding real-time blur afterimages (for
dodge), screen shakes, or ripples when powering up Ki (ki_charge).
- Useful for adding real-time blur afterimages (for
5. Directory Structure & Final Checklist
Below is a consolidated folder structure showing where each of the above assets live. This is what your repo (or build pipeline) needs before you start coding the Pixi setup:
/assets
β
ββ characters/
β ββ animations/
β β ββ techniques/
β β β ββ light/
β β β β ββ strike_light_spritesheet.json
β β β β ββ strike_light_spritesheet.png
β β β ββ medium/
β β β β ββ strike_medium_spritesheet.json
β β β β ββ strike_medium_spritesheet.png
β β β ββ heavy/
β β β β ββ strike_heavy_spritesheet.json
β β β β ββ strike_heavy_spritesheet.png
β β β ββ critical/
β β β β ββ strike_critical_spritesheet.json
β β β β ββ strike_critical_spritesheet.png
β β β ββ dodge/
β β β β ββ dodge_spritesheet.json
β β β β ββ dodge_spritesheet.png
β β β ββ block/
β β β β ββ block_spritesheet.json
β β β β ββ block_spritesheet.png
β β β ββ hit/
β β β ββ hit_reaction_spritesheet.json
β β β ββ hit_reaction_spritesheet.png
β β ββ finisher/
β β ββ musa_finisher_spritesheet.json
β β ββ musa_finisher_spritesheet.png
β β ββ amsalja_finisher_spritesheet.json
β β ββ amsalja_finisher_spritesheet.png
β β ββ β¦ (one per archetype)
β ββ portraits/
β ββ portrait_musa.png
β ββ portrait_amsalja.png
β ββ β¦ (other archetypes)
β
ββ fonts/
β ββ BlackTrigram-Hangul.woff2
β ββ NotoSansKR-Regular.woff2
β ββ Roboto-Regular.woff2
β
ββ i18n/
β ββ ko.json
β ββ en.json
β
ββ props/
β ββ training_console_model.png
β ββ stance_pad_circle.png
β ββ dummy_target_overlay.svg
β
ββ shaders/
β ββ rim_light.shader
β ββ blood_decal.shader
β ββ neon_flicker.shader
β
ββ ui/
β ββ buttons/
β β ββ ui_button_start_idle.png
β β ββ ui_button_start_hover.png
β ββ icons/
β β ββ stances/
β β β ββ icon_stance_defensive.svg
β β β ββ icon_stance_balanced.svg
β β β ββ icon_stance_aggressive.svg
β β ββ trigrams/
β β β ββ icon_trigram_1.svg
β β β ββ icon_trigram_2.svg
β β β ββ β¦ up to icon_trigram_8.svg
β β ββ tooltip_arrow.png
β ββ hud/
β ββ hud_health_bar.png
β ββ hud_pain_bar.png
β
ββ vfx/
β ββ animations/
β β ββ anim_logo_pulse.json
β β ββ anim_menu_slide_0.png β¦ anim_menu_slide_7.png
β β ββ anim_strike_impact_0.png β¦ anim_strike_impact_15.png
β β ββ anim_finisher_musa_0.png β¦ anim_finisher_musa_11.png
β ββ particles/
β β ββ vfx_dust_puff.png
β β ββ vfx_blood_splatter.png
β β ββ confetti_sprites.png
β ββ shaders/
β ββ vfx_impact_ring.png
β ββ vfx_neon_glow.png
β ββ vfx_critical_flash.png
β
ββ visual/
β ββ bg/
β β ββ intro/
β β β ββ intro_bg_loop.png
β β β ββ mainmenu_foreground_overlay.png
β β ββ dojang/
β β ββ dojang_floor_tex.png
β β ββ dojang_wall_tex.png
β ββ overlays/
β ββ vital_region_head.png
β ββ vital_region_neck.png
β ββ vital_region_torso.png
β ββ vital_region_arms.png
β ββ vital_region_chest.png
β ββ vital_region_legs.png
β
ββ public/
ββ assets/
ββ audio/
ββ music/
β ββ intro_theme.webm
β ββ combat_theme.webm
β ββ combat_theme_geon.webm
β ββ training_theme.webm
β ββ meditation_theme.webm
β ββ victory_theme.webm
β ββ underground_rave_theme.webm
β ββ ambient_loop.webm
ββ sfx/
ββ ambient/
β ββ dojang_ambience.webm
β ββ wind_effect.webm
β ββ dojo_crowd.webm
ββ attacks/
β ββ attack_punch_light.webm
β ββ attack_punch_medium.webm
β ββ attack_kick_heavy.webm
β ββ attack_light.webm
β ββ attack_medium.webm
β ββ attack_critical.webm
β ββ attack_special_geon.webm
β ββ dodge.webm
β ββ block_success.webm
β ββ block_break.webm
β ββ perfect_strike.webm
ββ hit/
β ββ hit_light.webm
β ββ hit_medium.webm
β ββ hit_heavy.webm
β ββ hit_critical.webm
β ββ hit_flesh.webm
β ββ hit_block.webm
ββ combo/
β ββ combo_buildup.webm
β ββ combo_finish.webm
β ββ energy_pulse.webm
ββ match/
β ββ match_start.webm
β ββ countdown.webm
β ββ match_end.webm
β ββ victory.webm
β ββ defeat.webm
ββ movement/
β ββ footstep.webm
β ββ stance_change.webm
ββ ki/
β ββ ki_charge.webm
β ββ ki_release.webm
ββ stamina/
β ββ stamina_depleted.webm
ββ health/
β ββ health_low.webm
ββ ui/
ββ menu_click.webm
ββ menu_navigate.webm
ββ menu_select.webm
ββ menu_hover.webm
ββ menu_back.webm
1. Backgrounds & Environments
1.1 Intro / Main Menu Background
-
Asset Name:
intro_bg_loop.png-
Description: A seamless 1920Γ1080 loopable tile of a rainβslicked concrete floor with neon pipes and drifting dataβline grid.
-
File Format: PNG (plus normal/roughness if you want subtle 3D lighting on flat sprites, but PNG is usually enough).
-
Folder:
assets/visual/bg/intro/ -
Visual Style Notes:
- Base color: Obsidian (
#0A0F12) with subtle filmβgrain overlay. - Neon accents: teal/cyan reflections on puddles, flickering Hangul glyphs on pipes.
- Animation: small βrain dripβ loop in shader or flipbook.
- Base color: Obsidian (
-
-
Asset Name:
mainmenu_foreground_overlay.png- Description: A semiβtransparent obsidian vignette (20px βsoft edgeβ) to darken screen edges, helping text/logo pop.
- File Format: PNG (alpha)
- Folder:
assets/visual/overlays/ - Usage: Placed above
intro_bg_loopto darken corners.
1.2 Dojang / Training Hall Background
-
Asset Name:
dojang_floor_tex.png-
Description: 2048Γ2048 PBRβstyle image of matteβblack tatami mats, with subtle water puddle normals (if you want dynamic reflections).
-
File Format: PNG (or PNG + normal/roughness if desired)
-
Folder:
assets/visual/bg/dojang/ -
Style Notes:
- Tileable so it can fill any resolution.
- Slight neon cyan reflections at edges where wall meets floor.
-
-
Asset Name:
dojang_wall_tex.png-
Description: 1024Γ1024 tile of corrugated metal with pipelines and emissive Hangul trigrams (β°, β², etc.) behind semiβopaque panels.
-
File Format: PNG (with separate emissive mask channel if you plan to animate neon flicker).
-
Folder:
assets/visual/bg/dojang/ -
Style Notes:
- The emissive mask will let you βpulseβ each trigram glyph via a simple shader or a flicker sprite.
-
-
Asset Name:
dojang_wall_neon_flicker.png(optional flipbook)- Description: A small flipbook (e.g. 4 frames at 256Γ256) showing a neon glyph flicker (cycle through 0%, 50%, 100% brightness).
- File Format: PNG sprite sheet
- Folder:
assets/vfx/animations/
-
Asset Name:
training_console_model.png- Description: 512Γ512 stylized grayscale sprite of a holoβconsole (flat sprite) with cyan emissive accents (for realβtime data display).
- File Format: PNG
- Folder:
assets/visual/props/ - Notes: Use this as a static background element; you can overlay bitmaps of gauge bars, or simply let the console glow.
-
Asset Name:
stance_pad_circle.png- Description: 256Γ256 semiβtransparent PNG of a glowing floor circle. Pulses from 0 β 100% opacity in a 1s loop.
- File Format: PNG (alpha)
- Folder:
assets/visual/props/
2. UI Icons & HUD Elements
2.1 Stance Icons
Each icon is a 64Γ64 px SVG (so it scales crisply). Weβll load them as textures in Pixi and tint/animate as needed.
-
icon_stance_defensive.svg- Outline style in Slate Gray (
#2E3538) when inactive. - Filled with Teal Neon (
#00FFC8) + soft glow when active.
- Outline style in Slate Gray (
-
icon_stance_balanced.svg- Outline in Slate Gray; filled with Teal Neon on hover/active.
-
icon_stance_aggressive.svg- Outline in Slate Gray; filled with Crimson (
#FF0044) on βchargedβ or βreadyβ state, or Teal Neon when selected.
Folder:
assets/ui/icons/stances/ - Outline in Slate Gray; filled with Crimson (
2.2 Trigram Icons
-
File Names:
icon_trigram_1.svg icon_trigram_2.svg β¦ icon_trigram_8.svg ``$ -
\text{Each} \text{icon}: 48 \times 48 \text{px}, \text{dark} \text{background} (\text{Gunmetal} $#424A50`) with the trigram glyph in Teal Neon.
-
States:
- Inactive: no glow, just basic fill.
- Active: slight outer glow + subtle 1.1Γ scale βpulse.β
- Hover: 1.05Γ scale + quick glow (0.2 s).
Folder:
assets/ui/icons/trigrams/
2.3 HUD Bars & Overlays
-
hud_health_bar.png(800Γ32 px PNG)- 10 segmented blocks. Each filled segment is Cyan Glow (
#1BE7FF); empty is Slate Gray. - Folder:
assets/ui/hud/
- 10 segmented blocks. Each filled segment is Cyan Glow (
-
hud_pain_bar.png(800Γ16 px PNG)- 10 segments. Filled segments are Crimson (
#FF0044); empty Slate Gray. - Folder:
assets/ui/hud/
- 10 segments. Filled segments are Crimson (
-
ui_button_start_idle.png&ui_button_start_hover.png(256Γ64 px each)- Idle: Slate Gray panel with ββΆ Start Combatβ in Hangul+English.
- Hover: Underline in Teal Neon + icon (ββΆβ) glows.
- Folder:
assets/ui/buttons/
-
ui_panel_slate.png(1024Γ512 px)- A semi-opaque Slate Gray panel (70% opacity) with a subtle noise texture.
- Folder:
assets/ui/panels/
-
tooltip_arrow.png(32Γ32 px PNG)- Small triangle arrow in Cyan Glow for tooltips.
- Folder:
assets/ui/tooltips/
3. Technique Animations (AnimatedSprite Sprite Sheets)
Any time you see code like:
await Assets.load("path/to/spritesheet.json");
const frames = [];
for (let i = 0; i < N; i++) {
frames.push(Texture.from(`frame${i}.png`));
}
const anim = new AnimatedSprite(frames);
β¦you need a sprite sheet JSON + corresponding PNG atlas for each βtechnique.β Below is a minimal required set of technique animations:
3.1 Light Strike Animation (All Archetypes)
- Sprite Sheet JSON:
strike_light_spritesheet.json - Texture Atlas:
strike_light_spritesheet.png(e.g., 512Γ512 containing all 6 frames laid out in a grid). - Frame Count: 6 frames, each ~128Γ256 (portrait orientation).
- Animation Speed: 0.6 (adjust per archetype).
- Visual Content: Character winds up β quick punch/kick β recoil. No background in atlas (transparent).
- Folder:
assets/characters/animations/techniques/light/
3.2 Medium Strike Animation
- Sprite Sheet JSON:
strike_medium_spritesheet.json - Texture Atlas:
strike_medium_spritesheet.png(6β8 frames, ~128Γ256 each). - Description: More wind-up, more impact frames, a small dust puff frame integrated (see VFX).
- Folder:
assets/characters/animations/techniques/medium/
3.3 Heavy Strike Animation
- Sprite Sheet JSON:
strike_heavy_spritesheet.json - Texture Atlas:
strike_heavy_spritesheet.png(8 frames, ~256Γ256 each). - Description: Big wind-up, slow-mo pause on impact, splash of embedded VFX dust/blood.
- Folder:
assets/characters/animations/techniques/heavy/
3.4 Critical Strike / Finisher Animation
- Sprite Sheet JSON:
strike_critical_spritesheet.json - Texture Atlas:
strike_critical_spritesheet.png(10β12 frames, ~256Γ256). - Description: Slow-mo bone-breaking blow β flash frame β slowdown.
- Folder:
assets/characters/animations/techniques/critical/
3.5 Dodge / Evade Animation
- Sprite Sheet JSON:
dodge_spritesheet.json - Texture Atlas:
dodge_spritesheet.png(4β6 frames, ~128Γ256). - Description: Quick sidestep/backflip frames, subtle afterimage.
- Folder:
assets/characters/animations/techniques/dodge/
3.6 Block / Parry Animation
- Sprite Sheet JSON:
block_spritesheet.json - Texture Atlas:
block_spritesheet.png(5 frames, ~128Γ256). - Description: Character raises arm/weapon to block β recoil if successful.
- Folder:
assets/characters/animations/techniques/block/
3.7 Hit Reaction Animation
- Sprite Sheet JSON:
hit_reaction_spritesheet.json - Texture Atlas:
hit_reaction_spritesheet.png(4 frames, ~128Γ256). - Description: Character flinches backwards, tinted red on final frame.
- Folder:
assets/characters/animations/techniques/hit/
3.8 Finisher Sequence (All Archetypes)
- Sprite Sheet JSON:
finisher_musa_spritesheet.json,finisher_amsalja_spritesheet.json, etc. - Texture Atlas:
finisher_musa_spritesheet.png(12 frames, ~256Γ256), etc. - Description: A multi-stage βcinematicβ finisher (pause β bone crushing β slow fade).
- Folder:
assets/characters/animations/finisher/
4. Pixi.js Dependencies & Modules Needed
Below is a minimal list of Pixi.js modules (from pixi.js/lib) that you will rely on to load, animate, and render everything above. In your package.json, youβve already installed pixi.js. At runtime, youβll import exactly the pieces you use:
import {
Application,
TickerPlugin, // core ticker
ResizePlugin, // auto resizes to window
Assets, // for loading JSON/PNG atlases
Texture,
Sprite,
AnimatedSprite,
Container,
TilingSprite, // if you want parallax/tiled backgrounds
Loader, // older API if you prefer Loader instead of Assets
} from "pixi.js";
-
Application(fromapp/Application.mjs)- Creates the Pixi canvas, WebGL context, stage, etc.
-
TickerPlugin&ResizePlugin- Ensures your appβs ticker (main game loop) and auto-resize functionality.
-
Assets(fromassets/Assets.mjs)-
The new recommended loader for JSON sprite sheets, PNGs, audio, etc.
-
Example:
await Assets.load( "assets/characters/animations/techniques/light/strike_light_spritesheet.json" );
-
-
Texture(fromrendering/texture/Texture.mjs)-
Create textures from loaded assets:
const frameTex = Texture.from("strike_light_000.png");
-
-
Sprite&AnimatedSprite(fromscene/sprite/Sprite.mjs&scene/sprite-animated/AnimatedSprite.mjs)Spritefor static images (UI icons, backgrounds).AnimatedSpritefor flipbook animations (techniques, VFX).
-
Container(fromscene/container/Container.mjs)-
Use a parent
Containerfor grouping layers:backgroundContainercharacterContaineruiContainervfxContainer
-
-
TilingSprite(fromscene/sprite-tiling/TilingSprite.mjs)- If you want to scroll/loop the
intro_bg_loop.pngor tiledojang_floor_tex.pngseamlessly across a larger stage.
- If you want to scroll/loop the
-
Loader(fromassets/loader/Loader.mjs)- If you prefer the older PIXI.Loader API to Assets. Both are possible;
Assetsis recommended for newer Pixi versions.
- If you prefer the older PIXI.Loader API to Assets. Both are possible;
-
Filter/BlurFilter/DisplacementFilter(fromfilters/defaults/*)- Useful for adding real-time blur afterimages (for
dodge), screen shakes, or ripples when powering up Ki (ki_charge).
- Useful for adding real-time blur afterimages (for
5. Directory Structure & Final Checklist
Below is a consolidated folder structure showing where each of the above assets live. This is what your repo (or build pipeline) needs before you start coding the Pixi setup:
/assets
ββ characters/
β ββ animations/
β β ββ techniques/
β β β ββ light/
β β β β ββ strike_light_spritesheet.json
β β β β ββ strike_light_spritesheet.png
β β β ββ medium/
β β β β ββ strike_medium_spritesheet.json
β β β β ββ strike_medium_spritesheet.png
β β β ββ heavy/
β β β β ββ strike_heavy_spritesheet.json
β β β β ββ strike_heavy_spritesheet.png
β β β ββ critical/
β β β β ββ strike_critical_spritesheet.json
β β β β ββ strike_critical_spritesheet.png
β β β ββ dodge/
β β β β ββ dodge_spritesheet.json
β β β β ββ dodge_spritesheet.png
β β β ββ block/
β β β β ββ block_spritesheet.json
β β β β ββ block_spritesheet.png
β β β ββ hit/
β β β ββ hit_reaction_spritesheet.json
β β β ββ hit_reaction_spritesheet.png
β β ββ finisher/
β β ββ musa_finisher_spritesheet.json
β β ββ musa_finisher_spritesheet.png
β β ββ amsalja_finisher_spritesheet.json
β β ββ amsalja_finisher_spritesheet.png
β β ββ β¦ (one per archetype)
β ββ portraits/
β ββ portrait_musa.png
β ββ portrait_amsalja.png
β ββ β¦ (other archetypes)
β
ββ fonts/
β ββ BlackTrigram-Hangul.woff2
β ββ NotoSansKR-Regular.woff2
β ββ Roboto-Regular.woff2
β
ββ i18n/
β ββ ko.json
β ββ en.json
β
ββ props/
β ββ training_console_model.png
β ββ stance_pad_circle.png
β ββ dummy_target_overlay.svg
β
ββ shaders/
β ββ rim_light.shader
β ββ blood_decal.shader
β ββ neon_flicker.shader
β
ββ ui/
β ββ buttons/
β β ββ ui_button_start_idle.png
β β ββ ui_button_start_hover.png
β ββ icons/
β β ββ stances/
β β β ββ icon_stance_defensive.svg
β β β ββ icon_stance_balanced.svg
β β β ββ icon_stance_aggressive.svg
β β ββ trigrams/
β β β ββ icon_trigram_1.svg
β β β ββ icon_trigram_2.svg
β β β ββ β¦ up to icon_trigram_8.svg
β β ββ tooltip_arrow.png
β ββ hud/
β ββ hud_health_bar.png
β ββ hud_pain_bar.png
β
ββ vfx/
β ββ animations/
β β ββ anim_logo_pulse.json
β β ββ anim_menu_slide_0.png β¦ anim_menu_slide_7.png
β β ββ anim_strike_impact_0.png β¦ anim_strike_impact_15.png
β β ββ anim_finisher_musa_0.png β¦ anim_finisher_musa_11.png
β ββ particles/
β β ββ vfx_dust_puff.png
β β ββ vfx_blood_splatter.png
β β ββ confetti_sprites.png
β ββ shaders/
β ββ vfx_impact_ring.png
β ββ vfx_neon_glow.png
β ββ vfx_critical_flash.png
β
ββ visual/
β ββ bg/
β β ββ intro/
β β β ββ intro_bg_loop.png
β β β ββ mainmenu_foreground_overlay.png
β β ββ dojang/
β β ββ dojang_floor_tex.png
β β ββ dojang_wall_tex.png
β ββ overlays/
β ββ vital_region_head.png
β ββ vital_region_neck.png
β ββ vital_region_torso.png
β ββ vital_region_arms.png
β ββ vital_region_chest.png
β ββ vital_region_legs.png
β
ββ public/
ββ assets/
ββ audio/
ββ music/
β ββ intro_theme.webm
β ββ combat_theme.webm
β ββ combat_theme_geon.webm
β ββ training_theme.webm
β ββ meditation_theme.webm
β ββ victory_theme.webm
β ββ underground_rave_theme.webm
β ββ ambient_loop.webm
ββ sfx/
ββ ambient/
β ββ dojang_ambience.webm
β ββ wind_effect.webm
β ββ dojo_crowd.webm
ββ attacks/
β ββ attack_punch_light.webm
β ββ attack_punch_medium.webm
β ββ attack_kick_heavy.webm
β ββ attack_light.webm
β ββ attack_medium.webm
β ββ attack_critical.webm
β ββ attack_special_geon.webm
β ββ dodge.webm
β ββ block_success.webm
β ββ block_break.webm
β ββ perfect_strike.webm
ββ hit/
β ββ hit_light.webm
β ββ hit_medium.webm
β ββ hit_heavy.webm
β ββ hit_critical.webm
β ββ hit_flesh.webm
β ββ hit_block.webm
ββ combo/
β ββ combo_buildup.webm
β ββ combo_finish.webm
β ββ energy_pulse.webm
ββ match/
β ββ match_start.webm
β ββ countdown.webm
β ββ match_end.webm
β ββ victory.webm
β ββ defeat.webm
ββ movement/
β ββ footstep.webm
β ββ stance_change.webm
ββ ki/
β ββ ki_charge.webm
β ββ ki_release.webm
ββ stamina/
β ββ stamina_depleted.webm
ββ health/
β ββ health_low.webm
ββ ui/
ββ menu_click.webm
ββ menu_navigate.webm
ββ menu_select.webm
ββ menu_hover.webm
ββ menu_back.webm
1. Backgrounds & Environments
1.1 Intro / Main Menu Background
-
Asset Name:
intro_bg_loop.png-
Description: A seamless 1920Γ1080 loopable tile of a rainβslicked concrete floor with neon pipes and drifting dataβline grid.
-
File Format: PNG (plus normal/roughness if you want subtle 3D lighting on flat sprites, but PNG is usually enough).
-
Folder:
assets/visual/bg/intro/ -
Visual Style Notes:
- Base color: Obsidian (
#0A0F12) with subtle filmβgrain overlay. - Neon accents: teal/cyan reflections on puddles, flickering Hangul glyphs on pipes.
- Animation: small βrain dripβ loop in shader or flipbook.
- Base color: Obsidian (
-
-
Asset Name:
mainmenu_foreground_overlay.png- Description: A semiβtransparent obsidian vignette (20px βsoft edgeβ) to darken screen edges, helping text/logo pop.
- File Format: PNG (alpha)
- Folder:
assets/visual/overlays/ - Usage: Placed above
intro_bg_loopto darken corners.
1.2 Dojang / Training Hall Background
-
Asset Name:
dojang_floor_tex.png-
Description: 2048Γ2048 PBRβstyle image of matteβblack tatami mats, with subtle water puddle normals (if you want dynamic reflections).
-
File Format: PNG (or PNG + normal/roughness if desired)
-
Folder:
assets/visual/bg/dojang/ -
Style Notes:
- Tileable so it can fill any resolution.
- Slight neon cyan reflections at edges where wall meets floor.
-
-
Asset Name:
dojang_wall_tex.png-
Description: 1024Γ1024 tile of corrugated metal with pipelines and emissive Hangul trigrams (β°, β², etc.) behind semiβopaque panels.
-
File Format: PNG (with separate emissive mask channel if you plan to animate neon flicker).
-
Folder:
assets/visual/bg/dojang/ -
Style Notes:
- The emissive mask will let you βpulseβ each trigram glyph via a simple shader or a flicker sprite.
-
-
Asset Name:
dojang_wall_neon_flicker.png(optional flipbook)- Description: A small flipbook (e.g. 4 frames at 256Γ256) showing a neon glyph flicker (cycle through 0%, 50%, 100% brightness).
- File Format: PNG sprite sheet
- Folder:
assets/vfx/animations/
-
Asset Name:
training_console_model.png- Description: 512Γ512 stylized grayscale sprite of a holoβconsole (flat sprite) with cyan emissive accents (for realβtime data display).
- File Format: PNG
- Folder:
assets/visual/props/ - Notes: Use this as a static background element; you can overlay bitmaps of gauge bars, or simply let the console glow.
-
Asset Name:
stance_pad_circle.png- Description: 256Γ256 semiβtransparent PNG of a glowing floor circle. Pulses from 0 β 100% opacity in a 1s loop.
- File Format: PNG (alpha)
- Folder:
assets/visual/props/
2. UI Icons & HUD Elements
2.1 Stance Icons
Each icon is a 64Γ64 px SVG (so it scales crisply). Weβll load them as textures in Pixi and tint/animate as needed.
-
icon_stance_defensive.svg- Outline style in Slate Gray (
#2E3538) when inactive. - Filled with Teal Neon (
#00FFC8) + soft glow when active.
- Outline style in Slate Gray (
-
icon_stance_balanced.svg- Outline in Slate Gray; filled with Teal Neon on hover/active.
-
icon_stance_aggressive.svg- Outline in Slate Gray; filled with Crimson (
#FF0044) on βchargedβ or βreadyβ state, or Teal Neon when selected.
Folder:
assets/ui/icons/stances/ - Outline in Slate Gray; filled with Crimson (
2.2 Trigram Icons
-
File Names:
icon_trigram_1.svg icon_trigram_2.svg β¦ icon_trigram_8.svg ``$ -
\text{Each} \text{icon}: 48 \times 48 \text{px}, \text{dark} \text{background} (\text{Gunmetal} $#424A50`) with the trigram glyph in Teal Neon.
-
States:
- Inactive: no glow, just basic fill.
- Active: slight outer glow + subtle 1.1Γ scale βpulse.β
- Hover: 1.05Γ scale + quick glow (0.2 s).
Folder:
assets/ui/icons/trigrams/
2.3 HUD Bars & Overlays
-
hud_health_bar.png(800Γ32 px PNG)- 10 segmented blocks. Each filled segment is Cyan Glow (
#1BE7FF); empty is Slate Gray. - Folder:
assets/ui/hud/
- 10 segmented blocks. Each filled segment is Cyan Glow (
-
hud_pain_bar.png(800Γ16 px PNG)- 10 segments. Filled segments are Crimson (
#FF0044); empty Slate Gray. - Folder:
assets/ui/hud/
- 10 segments. Filled segments are Crimson (
-
ui_button_start_idle.png&ui_button_start_hover.png(256Γ64 px each)- Idle: Slate Gray panel with ββΆ Start Combatβ in Hangul+English.
- Hover: Underline in Teal Neon + icon (ββΆβ) glows.
- Folder:
assets/ui/buttons/
-
ui_panel_slate.png(1024Γ512 px)- A semi-opaque Slate Gray panel (70% opacity) with a subtle noise texture.
- Folder:
assets/ui/panels/
-
tooltip_arrow.png(32Γ32 px PNG)- Small triangle arrow in Cyan Glow for tooltips.
- Folder:
assets/ui/tooltips/
3. Technique Animations (AnimatedSprite Sprite Sheets)
Any time you see code like:
await Assets.load("path/to/spritesheet.json");
const frames = [];
for (let i = 0; i < N; i++) {
frames.push(Texture.from(`frame${i}.png`));
}
const anim = new AnimatedSprite(frames);
β¦you need a sprite sheet JSON + corresponding PNG atlas for each βtechnique.β Below is a minimal required set of technique animations:
3.1 Light Strike Animation (All Archetypes)
- Sprite Sheet JSON:
strike_light_spritesheet.json - Texture Atlas:
strike_light_spritesheet.png(e.g., 512Γ512 containing all 6 frames laid out in a grid). - Frame Count: 6 frames, each ~128Γ256 (portrait orientation).
- Animation Speed: 0.6 (adjust per archetype).
- Visual Content: Character winds up β quick punch/kick β recoil. No background in atlas (transparent).
- Folder:
assets/characters/animations/techniques/light/
3.2 Medium Strike Animation
- Sprite Sheet JSON:
strike_medium_spritesheet.json - Texture Atlas:
strike_medium_spritesheet.png(6β8 frames, ~128Γ256 each). - Description: More wind-up, more impact frames, a small dust puff frame integrated (see VFX).
- Folder:
assets/characters/animations/techniques/medium/
3.3 Heavy Strike Animation
- Sprite Sheet JSON:
strike_heavy_spritesheet.json - Texture Atlas:
strike_heavy_spritesheet.png(8 frames, ~256Γ256 each). - Description: Big wind-up, slow-mo pause on impact, splash of embedded VFX dust/blood.
- Folder:
assets/characters/animations/techniques/heavy/
3.4 Critical Strike / Finisher Animation
- Sprite Sheet JSON:
strike_critical_spritesheet.json - Texture Atlas:
strike_critical_spritesheet.png(10β12 frames, ~256Γ256). - Description: Slow-mo bone-breaking blow β flash frame β slowdown.
- Folder:
assets/characters/animations/techniques/critical/
3.5 Dodge / Evade Animation
- Sprite Sheet JSON:
dodge_spritesheet.json - Texture Atlas:
dodge_spritesheet.png(4β6 frames, ~128Γ256). - Description: Quick sidestep/backflip frames, subtle afterimage.
- Folder:
assets/characters/animations/techniques/dodge/
3.6 Block / Parry Animation
- Sprite Sheet JSON:
block_spritesheet.json - Texture Atlas:
block_spritesheet.png(5 frames, ~128Γ256). - Description: Character raises arm/weapon to block β recoil if successful.
- Folder:
assets/characters/animations/techniques/block/
3.7 Hit Reaction Animation
- Sprite Sheet JSON:
hit_reaction_spritesheet.json - Texture Atlas:
hit_reaction_spritesheet.png(4 frames, ~128Γ256). - Description: Character flinches backwards, tinted red on final frame.
- Folder:
assets/characters/animations/techniques/hit/
3.8 Finisher Sequence (All Archetypes)
- Sprite Sheet JSON:
finisher_musa_spritesheet.json,finisher_amsalja_spritesheet.json, etc. - Texture Atlas:
finisher_musa_spritesheet.png(12 frames, ~256Γ256), etc. - Description: A multi-stage βcinematicβ finisher (pause β bone crushing β slow fade).
- Folder:
assets/characters/animations/finisher/
4. Pixi.js Dependencies & Modules Needed
Below is a minimal list of Pixi.js modules (from pixi.js/lib) that you will rely on to load, animate, and render everything above. In your package.json, youβve already installed pixi.js. At runtime, youβll import exactly the pieces you use:
import {
Application,
TickerPlugin, // core ticker
ResizePlugin, // auto resizes to window
Assets, // for loading JSON/PNG atlases
Texture,
Sprite,
AnimatedSprite,
Container,
TilingSprite, // if you want parallax/tiled backgrounds
Loader, // older API if you prefer Loader instead of Assets
} from "pixi.js";
-
Application(fromapp/Application.mjs)- Creates the Pixi canvas, WebGL context, stage, etc.
-
TickerPlugin&ResizePlugin- Ensures your appβs ticker (main game loop) and auto-resize functionality.
-
Assets(fromassets/Assets.mjs)-
The new recommended loader for JSON sprite sheets, PNGs, audio, etc.
-
Example:
await Assets.load( "assets/characters/animations/techniques/light/strike_light_spritesheet.json" );
-
-
Texture(fromrendering/texture/Texture.mjs)-
Create textures from loaded assets:
const frameTex = Texture.from("strike_light_000.png");
-
-
Sprite&AnimatedSprite(fromscene/sprite/Sprite.mjs&scene/sprite-animated/AnimatedSprite.mjs)Spritefor static images (UI icons, backgrounds).AnimatedSpritefor flipbook animations (techniques, VFX).
-
Container(fromscene/container/Container.mjs)-
Use a parent
Containerfor grouping layers:backgroundContainercharacterContaineruiContainervfxContainer
-
-
TilingSprite(fromscene/sprite-tiling/TilingSprite.mjs)- If you want to scroll/loop the
intro_bg_loop.pngor tiledojang_floor_tex.pngseamlessly across a larger stage.
- If you want to scroll/loop the
-
Loader(fromassets/loader/Loader.mjs)- If you prefer the older PIXI.Loader API to Assets. Both are possible;
Assetsis recommended for newer Pixi versions.
- If you prefer the older PIXI.Loader API to Assets. Both are possible;
-
Filter/BlurFilter/DisplacementFilter(fromfilters/defaults/*)- Useful for adding real-time blur afterimages (for
dodge), screen shakes, or ripples when powering up Ki (ki_charge).
- Useful for adding real-time blur afterimages (for
5. Directory Structure & Final Checklist
Below is a consolidated folder structure showing where each of the above assets live. This is what your repo (or build pipeline) needs before you start coding the Pixi setup:
/assets
ββ characters/
β ββ animations/
β β ββ techniques/
β β β ββ light/
β β β β ββ strike_light_spritesheet.json
β β β β ββ strike_light_spritesheet.png
β β β ββ medium/
β β β β ββ strike_medium_spritesheet.json
β β β β ββ strike_medium_spritesheet.png
β β β ββ heavy/
β β β β ββ strike_heavy_spritesheet.json
β β β β ββ strike_heavy_spritesheet.png
β β β ββ critical/
β β β β ββ strike_critical_spritesheet.json
β β β β ββ strike_critical_spritesheet.png
β β β ββ dodge/
β β β β β β ββ dodge_spritesheet.json
β β β β ββ dodge_spritesheet.png
β β β ββ block/
β β β β ββ block_spritesheet.json
β β β β ββ block_spritesheet.png
β β β ββ hit/
β β β ββ hit_reaction_spritesheet.json
β β β ββ hit_reaction_spritesheet.png
β β ββ finisher/
β β ββ musa_finisher_spritesheet.json
β β ββ musa_finisher_spritesheet.png
β β ββ amsalja_finisher_spritesheet.json
β β ββ amsalja_finisher_spritesheet.png
β β ββ β¦ (one per archetype)
β ββ portraits/
β ββ portrait_musa.png
β ββ portrait_amsalja.png
β ββ β¦ (other archetypes)
β
ββ fonts/
β ββ BlackTrigram-Hangul.woff2
β ββ NotoSansKR-Regular.woff2
β ββ Roboto-Regular.woff2
β
ββ i18n/
β ββ ko.json
β ββ en.json
β
ββ props/
β ββ training_console_model.png
β ββ stance_pad_circle.png
β ββ dummy_target_overlay.svg
β
ββ shaders/
β ββ rim_light.shader
β ββ blood_decal.shader
β ββ neon_flicker.shader
β
ββ ui/
β ββ buttons/
β β ββ ui_button_start_idle.png
β β ββ ui_button_start_hover.png
β ββ icons/
β β ββ stances/
β β β ββ icon_stance_defensive.svg
β β β ββ icon_stance_balanced.svg
β β β ββ icon_stance_aggressive.svg
β β ββ trigrams/
β β β ββ icon_trigram_1.svg
β β β ββ icon_trigram_2.svg
β β β ββ β¦ up to icon_trigram_8.svg
β β ββ tooltip_arrow.png
β ββ hud/
β ββ hud_health_bar.png
β ββ hud_pain_bar.png
β
ββ vfx/
β ββ animations/
β β ββ anim_logo_pulse.json
β β ββ anim_menu_slide_0.png β¦ anim_menu_slide_7.png
β β ββ anim_strike_impact_0.png β¦ anim_strike_impact_15.png
β β ββ anim_finisher_musa_0.png β¦ anim_finisher_musa_11.png
β ββ particles/
β β ββ vfx_dust_puff.png
β β ββ vfx_blood_splatter.png
β β ββ confetti_sprites.png
β ββ shaders/
β ββ vfx_impact_ring.png
β ββ vfx_neon_glow.png
β ββ vfx_critical_flash.png
β
ββ visual/
β ββ bg/
β β ββ intro/
β β β ββ intro_bg_loop.png
β β β ββ mainmenu_foreground_overlay.png
β β ββ dojang/
β β ββ dojang_floor_tex.png
β β ββ dojang_wall_tex.png
β ββ overlays/
β ββ vital_region_head.png
β ββ vital_region_neck.png
β ββ vital_region_torso.png
β ββ vital_region_arms.png
β ββ vital_region_chest.png
β ββ vital_region_legs.png
β
ββ public/
ββ assets/
ββ audio/
ββ music/
β ββ intro_theme.webm
β ββ combat_theme.webm
β ββ combat_theme_geon.webm
β ββ training_theme.webm
β ββ meditation_theme.webm
β ββ victory_theme.webm
β ββ underground_rave_theme.webm
β ββ ambient_loop.webm
ββ sfx/
ββ ambient/
β ββ dojang_ambience.webm
β ββ wind_effect.webm
β ββ dojo_crowd.webm
ββ attacks/
β ββ attack_punch_light.webm
β ββ attack_punch_medium.webm
β ββ attack_kick_heavy.webm
β ββ attack_light.webm
β ββ attack_medium.webm
β ββ attack_critical.webm
β ββ attack_special_geon.webm
β ββ dodge.webm
β ββ block_success.webm
β ββ block_break.webm
β ββ perfect_strike.webm
ββ hit/
β ββ hit_light.webm
β ββ hit_medium.webm
β ββ hit_heavy.webm
β ββ hit_critical.webm
β ββ hit_flesh.webm
β ββ hit_block.webm
ββ combo/
β ββ combo_buildup.webm
β ββ combo_finish.webm
β ββ energy_pulse.webm
ββ match/
β ββ match_start.webm
β ββ countdown.webm
β ββ match_end.webm
β ββ victory.webm
β ββ defeat.webm
ββ movement/
β ββ footstep.webm
β ββ stance_change.webm
ββ ki/
β ββ ki_charge.webm
β ββ ki_release.webm
ββ stamina/
β ββ stamina_depleted.webm
ββ health/
β ββ health_low.webm
ββ ui/
ββ menu_click.webm
ββ menu_navigate.webm
ββ menu_select.webm
ββ menu_hover.webm
ββ menu_back.webm
1. Backgrounds & Environments
1.1 Intro / Main Menu Background
-
Asset Name:
intro_bg_loop.png-
Description: A seamless 1920Γ1080 loopable tile of a rainβslicked concrete floor with neon pipes and drifting dataβline grid.
-
File Format: PNG (plus normal/roughness if you want subtle 3D lighting on flat sprites, but PNG is usually enough).
-
Folder:
assets/visual/bg/intro/ -
Visual Style Notes:
- Base color: Obsidian (
#0A0F12) with subtle filmβgrain overlay. - Neon accents: teal/cyan reflections on puddles, flickering Hangul glyphs on pipes.
- Animation: small βrain dripβ loop in shader or flipbook.
- Base color: Obsidian (
-
-
Asset Name:
mainmenu_foreground_overlay.png- Description: A semiβtransparent obsidian vignette (20px βsoft edgeβ) to darken screen edges, helping text/logo pop.
- File Format: PNG (alpha)
- Folder:
assets/visual/overlays/ - Usage: Placed above
intro_bg_loopto darken corners.
1.2 Dojang / Training Hall Background
-
Asset Name:
dojang_floor_tex.png-
Description: 2048Γ2048 PBRβstyle image of matteβblack tatami mats, with subtle water puddle normals (if you want dynamic reflections).
-
File Format: PNG (or PNG + normal/roughness if desired)
-
Folder:
assets/visual/bg/dojang/ -
Style Notes:
- Tileable so it can fill any resolution.
- Slight neon cyan reflections at edges where wall meets floor.
-
-
Asset Name:
dojang_wall_tex.png-
Description: 1024Γ1024 tile of corrugated metal with pipelines and emissive Hangul trigrams (β°, β², etc.) behind semiβopaque panels.
-
File Format: PNG (with separate emissive mask channel if you plan to animate neon flicker).
-
Folder:
assets/visual/bg/dojang/ -
Style Notes:
- The emissive mask will let you βpulseβ each trigram glyph via a simple shader or a flicker sprite.
-
-
Asset Name:
dojang_wall_neon_flicker.png(optional flipbook)- Description: A small flipbook (e.g. 4 frames at 256Γ256) showing a neon glyph flicker (cycle through 0%, 50%, 100% brightness).
- File Format: PNG sprite sheet
- Folder:
assets/vfx/animations/
-
Asset Name:
training_console_model.png- Description: 512Γ512 stylized grayscale sprite of a holoβconsole (flat sprite) with cyan emissive accents (for realβtime data display).
- File Format: PNG
- Folder:
assets/visual/props/ - Notes: Use this as a static background element; you can overlay bitmaps of gauge bars, or simply let the console glow.
-
Asset Name:
stance_pad_circle.png- Description: 256Γ256 semiβtransparent PNG of a glowing floor circle. Pulses from 0 β 100% opacity in a 1s loop.
- File Format: PNG (alpha)
- Folder:
assets/visual/props/
2. UI Icons & HUD Elements
2.1 Stance Icons
Each icon is a 64Γ64 px SVG (so it scales crisply). Weβll load them as textures in Pixi and tint/animate as needed.
-
icon_stance_defensive.svg- Outline style in Slate Gray (
#2E3538) when inactive. - Filled with Teal Neon (
#00FFC8) + soft glow when active.
- Outline style in Slate Gray (
-
icon_stance_balanced.svg- Outline in Slate Gray; filled with Teal Neon on hover/active.
-
icon_stance_aggressive.svg- Outline in Slate Gray; filled with Crimson (
#FF0044) on βchargedβ or βreadyβ state, or Teal Neon when selected.
Folder:
assets/ui/icons/stances/ - Outline in Slate Gray; filled with Crimson (
2.2 Trigram Icons
-
File Names:
icon_trigram_1.svg icon_trigram_2.svg β¦ icon_trigram_8.svg ``$ -
\text{Each} \text{icon}: 48 \times 48 \text{px}, \text{dark} \text{background} (\text{Gunmetal} $#424A50`) with the trigram glyph in Teal Neon.
-
States:
- Inactive: no glow, just basic fill.
- Active: slight outer glow + subtle 1.1Γ scale βpulse.β
- Hover: 1.05Γ scale + quick glow (0.2 s).
Folder:
assets/ui/icons/trigrams/
2.3 HUD Bars & Overlays
-
hud_health_bar.png(800Γ32 px PNG)- 10 segmented blocks. Each filled segment is Cyan Glow (
#1BE7FF); empty is Slate Gray. - Folder:
assets/ui/hud/
- 10 segmented blocks. Each filled segment is Cyan Glow (
-
hud_pain_bar.png(800Γ16 px PNG)- 10 segments. Filled segments are Crimson (
#FF0044); empty Slate Gray. - Folder:
assets/ui/hud/
- 10 segments. Filled segments are Crimson (
-
ui_button_start_idle.png&ui_button_start_hover.png(256Γ64 px each)- Idle: Slate Gray panel with ββΆ Start Combatβ in Hangul+English.
- Hover: Underline in Teal Neon + icon (ββΆβ) glows.
- Folder:
assets/ui/buttons/
-
ui_panel_slate.png(1024Γ512 px)- A semi-opaque Slate Gray panel (70% opacity) with a subtle noise texture.
- Folder:
assets/ui/panels/
-
tooltip_arrow.png(32Γ32 px PNG)- Small triangle arrow in Cyan Glow for tooltips.
- Folder:
assets/ui/tooltips/
3. Technique Animations (AnimatedSprite Sprite Sheets)
Any time you see code like:
await Assets.load("path/to/spritesheet.json");
const frames = [];
for (let i = 0; i < N; i++) {
frames.push(Texture.from(`frame${i}.png`));
}
const anim = new AnimatedSprite(frames);
β¦you need a sprite sheet JSON + corresponding PNG atlas for each βtechnique.β Below is a minimal required set of technique animations:
3.1 Light Strike Animation (All Archetypes)
- Sprite Sheet JSON:
strike_light_spritesheet.json - Texture Atlas:
strike_light_spritesheet.png(e.g., 512Γ512 containing all 6 frames laid out in a grid). - Frame Count: 6 frames, each ~128Γ256 (portrait orientation).
- Animation Speed: 0.6 (adjust per archetype).
- Visual Content: Character winds up β quick punch/kick β recoil. No background in atlas (transparent).
- Folder:
assets/characters/animations/techniques/light/
3.2 Medium Strike Animation
- Sprite Sheet JSON:
strike_medium_spritesheet.json - Texture Atlas:
strike_medium_spritesheet.png(6β8 frames, ~128Γ256 each). - Description: More wind-up, more impact frames, a small dust puff frame integrated (see VFX).
- Folder:
assets/characters/animations/techniques/medium/
3.3 Heavy Strike Animation
- Sprite Sheet JSON:
strike_heavy_spritesheet.json - Texture Atlas:
strike_heavy_spritesheet.png(8 frames, ~256Γ256 each). - Description: Big wind-up, slow-mo pause on impact, splash of embedded VFX dust/blood.
- Folder:
assets/characters/animations/techniques/heavy/
3.4 Critical Strike / Finisher Animation
- Sprite Sheet JSON:
strike_critical_spritesheet.json - Texture Atlas:
strike_critical_spritesheet.png(10β12 frames, ~256Γ256). - Description: Slow-mo bone-breaking blow β flash frame β slowdown.
- Folder:
assets/characters/animations/techniques/critical/
3.5 Dodge / Evade Animation
- Sprite Sheet JSON:
dodge_spritesheet.json - Texture Atlas:
dodge_spritesheet.png(4β6 frames, ~128Γ256). - Description: Quick sidestep/backflip frames, subtle afterimage.
- Folder:
assets/characters/animations/techniques/dodge/
3.6 Block / Parry Animation
- Sprite Sheet JSON:
block_spritesheet.json - Texture Atlas:
block_spritesheet.png(5 frames, ~128Γ256). - Description: Character raises arm/weapon to block β recoil if successful.
- Folder:
assets/characters/animations/techniques/block/
3.7 Hit Reaction Animation
- Sprite Sheet JSON:
hit_reaction_spritesheet.json - Texture Atlas:
hit_reaction_spritesheet.png(4 frames, ~128Γ256). - Description: Character flinches backwards, tinted red on final frame.
- Folder:
assets/characters/animations/techniques/hit/
3.8 Finisher Sequence (All Archetypes)
- Sprite Sheet JSON:
finisher_musa_spritesheet.json,finisher_amsalja_spritesheet.json, etc. - Texture Atlas:
finisher_musa_spritesheet.png(12 frames, ~256Γ256), etc. - Description: A multi-stage βcinematicβ finisher (pause β bone crushing β slow fade).
- Folder:
assets/characters/animations/finisher/
4. Pixi.js Dependencies & Modules Needed
Below is a minimal list of Pixi.js modules (from pixi.js/lib) that you will rely on to load, animate, and render everything above. In your package.json, youβve already installed pixi.js. At runtime, youβll import exactly the pieces you use:
import {
Application,
TickerPlugin, // core ticker
ResizePlugin, // auto resizes to window
Assets, // for loading JSON/PNG atlases
Texture,
Sprite,
AnimatedSprite,
Container,
TilingSprite, // if you want parallax/tiled backgrounds
Loader, // older API if you prefer Loader instead of Assets
} from "pixi.js";
-
Application(fromapp/Application.mjs)- Creates the Pixi canvas, WebGL context, stage, etc.
-
TickerPlugin&ResizePlugin- Ensures your appβs ticker (main game loop) and auto-resize functionality.
-
Assets(fromassets/Assets.mjs)-
The new recommended loader for JSON sprite sheets, PNGs, audio, etc.
-
Example:
await Assets.load( "assets/characters/animations/techniques/light/strike_light_spritesheet.json" );
-
-
Texture(fromrendering/texture/Texture.mjs)-
Create textures from loaded assets:
const frameTex = Texture.from("strike_light_000.png");
-
-
Sprite&AnimatedSprite(fromscene/sprite/Sprite.mjs&scene/sprite-animated/AnimatedSprite.mjs)Spritefor static images (UI icons, backgrounds).AnimatedSpritefor flipbook animations (techniques, VFX).
-
Container(fromscene/container/Container.mjs)-
Use a parent
Containerfor grouping layers:backgroundContainercharacterContaineruiContainervfxContainer
-
-
TilingSprite(fromscene/sprite-tiling/TilingSprite.mjs)- If you want to scroll/loop the
intro_bg_loop.pngor tiledojang_floor_tex.pngseamlessly across a larger stage.
- If you want to scroll/loop the
-
Loader(fromassets/loader/Loader.mjs)- If you prefer the older PIXI.Loader API to Assets. Both are possible;
Assetsis recommended for newer Pixi versions.
- If you prefer the older PIXI.Loader API to Assets. Both are possible;
-
Filter/BlurFilter/DisplacementFilter(fromfilters/defaults/*)- Useful for adding real-time blur afterimages (for
dodge), screen shakes, or ripples when powering up Ki (ki_charge).
- Useful for adding real-time blur afterimages (for
5. Directory Structure & Final Checklist
Below is a consolidated folder structure showing where each of the above assets live. This is what your repo (or build pipeline) needs before you start coding the Pixi setup:
/assets
ββ characters/
β ββ animations/
β β ββ techniques/
β β β ββ light/
β β β β ββ strike_light_spritesheet.json
β β β β ββ strike_light_spritesheet.png
β β β ββ medium/
β β β β ββ strike_medium_spritesheet.json
β β β β ββ strike_medium_spritesheet.png
β β β ββ heavy/
β β β β ββ strike_heavy_spritesheet.json
β β β β ββ strike_heavy_spritesheet.png
β β β ββ critical/
β β β β ββ strike_critical_spritesheet.json
β β β β ββ strike_critical_spritesheet.png
β β β ββ dodge/
β β β β ββ dodge_spritesheet.json
β β β β ββ dodge_spritesheet.png
β β β ββ block/
β β β β ββ block_spritesheet.json
β β β β ββ block_spritesheet.png
β β β ββ hit/
β β β ββ hit_reaction_spritesheet.json
β β β ββ hit_reaction_spritesheet.png
β β ββ finisher/
β β ββ musa_finisher_spritesheet.json
β β ββ musa_finisher_spritesheet.png
β β ββ amsalja_finisher_spritesheet.json
β β ββ amsalja_finisher_spritesheet.png
β β ββ β¦ (one per archetype)
β ββ portraits/
β ββ portrait_musa.png
β ββ portrait_amsalja.png
β ββ β¦ (other archetypes)
β
ββ fonts/
β ββ BlackTrigram-Hangul.woff2
β ββ NotoSansKR-Regular.woff2
β ββ Roboto-Regular.woff2
β
ββ i18n/
β ββ ko.json
β ββ en.json
β
ββ props/
β ββ training_console_model.png
β ββ stance_pad_circle.png
β ββ dummy_target_overlay.svg
β
ββ shaders/
β ββ rim_light.shader
β ββ blood_decal.shader
β ββ neon_flicker.shader
β
ββ ui/
β ββ buttons/
β β ββ ui_button_start_idle.png
β β ββ ui_button_start_hover.png
β ββ icons/
β β ββ stances/
β β β ββ icon_stance_defensive.svg
β β β ββ icon_stance_balanced.svg
β β β ββ icon_stance_aggressive.svg
β β ββ trigrams/
β β β ββ icon_trigram_1.svg
β β β ββ icon_trigram_2.svg
β β β ββ β¦ up to icon_trigram_8.svg
β β ββ tooltip_arrow.png
β ββ hud/
β ββ hud_health_bar.png
β ββ hud_pain_bar.png
β
ββ vfx/
β ββ animations/
β β ββ anim_logo_pulse.json
β β ββ anim_menu_slide_0.png β¦ anim_menu_slide_7.png
β β ββ anim_strike_impact_0.png β¦ anim_strike_impact_15.png
β β ββ anim_finisher_musa_0.png β¦ anim_finisher_musa_11.png
β ββ particles/
β β ββ vfx_dust_puff.png
β β ββ vfx_blood_splatter.png
β β ββ confetti_sprites.png
β ββ shaders/
β ββ vfx_impact_ring.png
β ββ vfx_neon_glow.png
β ββ vfx_critical_flash.png
β
ββ visual/
β ββ bg/
β β ββ intro/
β β β ββ intro_bg_loop.png
β β β ββ mainmenu_foreground_overlay.png
β β ββ dojang/
β β ββ dojang_floor_tex.png
β β ββ dojang_wall_tex.png
β ββ overlays/
β ββ vital_region_head.png
β ββ vital_region_neck.png
β ββ vital_region_torso.png
β ββ vital_region_arms.png
β ββ vital_region_chest.png
β ββ vital_region_legs.png
β
ββ public/
ββ assets/
ββ audio/
ββ music/
β ββ intro_theme.webm
β ββ combat_theme.webm
β ββ combat_theme_geon.webm
β ββ training_theme.webm
β ββ meditation_theme.webm
β ββ victory_theme.webm
β ββ underground_rave_theme.webm
β ββ ambient_loop.webm
ββ sfx/
ββ ambient/
β ββ dojang_ambience.webm
β ββ wind_effect.webm
β ββ dojo_crowd.webm
ββ attacks/
β ββ attack_punch_light.webm
β ββ attack_punch_medium.webm
β ββ attack_kick_heavy.webm
β ββ attack_light.webm
β ββ attack_medium.webm
β ββ attack_critical.webm
β ββ attack_special_geon.webm
β ββ dodge.webm
β ββ block_success.webm
β ββ block_break.webm
β ββ perfect_strike.webm
ββ hit/
β ββ hit_light.webm
β ββ hit_medium.webm
β ββ hit_heavy.webm
β ββ hit_critical.webm
β ββ hit_flesh.webm
β ββ hit_block.webm
ββ combo/
β ββ combo_buildup.webm
β ββ combo_finish.webm
β ββ energy_pulse.webm
ββ match/
β ββ match_start.webm
β ββ countdown.webm
β ββ match_end.webm
β ββ victory.webm
β ββ defeat.webm
ββ movement/
β ββ footstep.webm
β ββ stance_change.webm
ββ ki/
β ββ ki_charge.webm
β ββ ki_release.webm
ββ stamina/
β ββ stamina_depleted.webm
ββ health/
β ββ health_low.webm
ββ ui/
ββ menu_click.webm
ββ menu_navigate.webm
ββ menu_select.webm
ββ menu_hover.webm
ββ menu_back.webm
1. Backgrounds & Environments
1.1 Intro / Main Menu Background
-
Asset Name:
intro_bg_loop.png-
Description: A seamless 1920Γ1080 loopable tile of a rainβslicked concrete floor with neon pipes and drifting dataβline grid.
-
File Format: PNG (plus normal/roughness if you want subtle 3D lighting on flat sprites, but PNG is usually enough).
-
Folder:
assets/visual/bg/intro/ -
Visual Style Notes:
- Base color: Obsidian (
#0A0F12) with subtle filmβgrain overlay. - Neon accents: teal/cyan reflections on puddles, flickering Hangul glyphs on pipes.
- Animation: small βrain dripβ loop in shader or flipbook.
- Base color: Obsidian (
-
-
Asset Name:
mainmenu_foreground_overlay.png- Description: A semiβtransparent obsidian vignette (20px βsoft edgeβ) to darken screen edges, helping text/logo pop.
- File Format: PNG (alpha)
- Folder:
assets/visual/overlays/ - Usage: Placed above
intro_bg_loopto darken corners.
1.2 Dojang / Training Hall Background
-
Asset Name:
dojang_floor_tex.png-
Description: 2048Γ2048 PBRβstyle image of matteβblack tatami mats, with subtle water puddle normals (if you want dynamic reflections).
-
File Format: PNG (or PNG + normal/roughness if desired)
-
Folder:
assets/visual/bg/dojang/ -
Style Notes:
- Tileable so it can fill any resolution.
- Slight neon cyan reflections at edges where wall meets floor.
-
-
Asset Name:
dojang_wall_tex.png-
Description: 1024Γ1024 tile of corrugated metal with pipelines and emissive Hangul trigrams (β°, β², etc.) behind semiβopaque panels.
-
File Format: PNG (with separate emissive mask channel if you plan to animate neon flicker).
-
Folder:
assets/visual/bg/dojang/ -
Style Notes:
- The emissive mask will let you βpulseβ each trigram glyph via a simple shader or a flicker sprite.
-
-
Asset Name:
dojang_wall_neon_flicker.png(optional flipbook)- Description: A small flipbook (e.g. 4 frames at 256Γ256) showing a neon glyph flicker (cycle through 0%, 50%, 100% brightness).
- File Format: PNG sprite sheet
- Folder:
assets/vfx/animations/
-
Asset Name:
training_console_model.png- Description: 512Γ512 stylized grayscale sprite of a holoβconsole (flat sprite) with cyan emissive accents (for realβtime data display).
- File Format: PNG
- Folder:
assets/visual/props/ - Notes: Use this as a static background element; you can overlay bitmaps of gauge bars, or simply let the console glow.
-
Asset Name:
stance_pad_circle.png- Description: 256Γ256 semiβtransparent PNG of a glowing floor circle. Pulses from 0 β 100% opacity in a 1s loop.
- File Format: PNG (alpha)
- Folder:
assets/visual/props/
2. UI Icons & HUD Elements
2.1 Stance Icons
Each icon is a 64Γ64 px SVG (so it scales crisply). Weβll load them as textures in Pixi and tint/animate as needed.
-
icon_stance_defensive.svg- Outline style in Slate Gray (
#2E3538) when inactive. - Filled with Teal Neon (
#00FFC8) + soft glow when active.
- Outline style in Slate Gray (
-
icon_stance_balanced.svg- Outline in Slate Gray; filled with Teal Neon on hover/active.
-
icon_stance_aggressive.svg- Outline in Slate Gray; filled with Crimson (
#FF0044) on βchargedβ or βreadyβ state, or Teal Neon when selected.
Folder:
assets/ui/icons/stances/ - Outline in Slate Gray; filled with Crimson (
2.2 Trigram Icons
-
File Names:
icon_trigram_1.svg icon_trigram_2.svg β¦ icon_trigram_8.svg ``$ -
\text{Each} \text{icon}: 48 \times 48 \text{px}, \text{dark} \text{background} (\text{Gunmetal} $#424A50`) with the trigram glyph in Teal Neon.
-
States:
- Inactive: no glow, just basic fill.
- Active: slight outer glow + subtle 1.1Γ scale βpulse.β
- Hover: 1.05Γ scale + quick glow (0.2 s).
Folder:
assets/ui/icons/trigrams/
2.3 HUD Bars & Overlays
-
hud_health_bar.png(800Γ32 px PNG)- 10 segmented blocks. Each filled segment is Cyan Glow (
#1BE7FF); empty is Slate Gray. - Folder:
assets/ui/hud/
- 10 segmented blocks. Each filled segment is Cyan Glow (
-
hud_pain_bar.png(800Γ16 px PNG)- 10 segments. Filled segments are Crimson (
#FF0044); empty Slate Gray. - Folder:
assets/ui/hud/
- 10 segments. Filled segments are Crimson (
-
ui_button_start_idle.png&ui_button_start_hover.png(256Γ64 px each)- Idle: Slate Gray panel with ββΆ Start Combatβ in Hangul+English.
- Hover: Underline in Teal Neon + icon (ββΆβ) glows.
- Folder:
assets/ui/buttons/
-
ui_panel_slate.png(1024Γ512 px)- A semi-opaque Slate Gray panel (70% opacity) with a subtle noise texture.
- Folder:
assets/ui/panels/
-
tooltip_arrow.png(32Γ32 px PNG)- Small triangle arrow in Cyan Glow for tooltips.
- Folder:
assets/ui/tooltips/
3. Technique Animations (AnimatedSprite Sprite Sheets)
Any time you see code like:
await Assets.load("path/to/spritesheet.json");
const frames = [];
for (let i = 0; i < N; i++) {
frames.push(Texture.from(`frame${i}.png`));
}
const anim = new AnimatedSprite(frames);
β¦you need a sprite sheet JSON + corresponding PNG atlas for each βtechnique.β Below is a minimal required set of technique animations:
3.1 Light Strike Animation (All Archetypes)
- Sprite Sheet JSON:
strike_light_spritesheet.json - Texture Atlas:
strike_light_spritesheet.png(e.g., 512Γ512 containing all 6 frames laid out in a grid). - Frame Count: 6 frames, each ~128Γ256 (portrait orientation).
- Animation Speed: 0.6 (adjust per archetype).
- Visual Content: Character winds up β quick punch/kick β recoil. No background in atlas (transparent).
- Folder:
assets/characters/animations/techniques/light/
3.2 Medium Strike Animation
- Sprite Sheet JSON:
strike_medium_spritesheet.json - Texture Atlas:
strike_medium_spritesheet.png(6β8 frames, ~128Γ256 each). - Description: More wind-up, more impact frames, a small dust puff frame integrated (see VFX).
- Folder:
assets/characters/animations/techniques/medium/
3.3 Heavy Strike Animation
- Sprite Sheet JSON:
strike_heavy_spritesheet.json - Texture Atlas:
strike_heavy_spritesheet.png(8 frames, ~256Γ256 each). - Description: Big wind-up, slow-mo pause on impact, splash of embedded VFX dust/blood.
- Folder:
assets/characters/animations/techniques/heavy/
3.4 Critical Strike / Finisher Animation
- Sprite Sheet JSON:
strike_critical_spritesheet.json - Texture Atlas:
strike_critical_spritesheet.png(10β12 frames, ~256Γ256). - Description: Slow-mo bone-breaking blow β flash frame β slowdown.
- Folder:
assets/characters/animations/techniques/critical/
3.5 Dodge / Evade Animation
- Sprite Sheet JSON:
dodge_spritesheet.json - Texture Atlas:
dodge_spritesheet.png(4β6 frames, ~128Γ256). - Description: Quick sidestep/backflip frames, subtle afterimage.
- Folder:
assets/characters/animations/techniques/dodge/
3.6 Block / Parry Animation
- Sprite Sheet JSON:
block_spritesheet.json - Texture Atlas:
block_spritesheet.png(5 frames, ~128Γ256). - Description: Character raises arm/weapon to block β recoil if successful.
- Folder:
assets/characters/animations/techniques/block/
3.7 Hit Reaction Animation
- Sprite Sheet JSON:
hit_reaction_spritesheet.json - Texture Atlas:
hit_reaction_spritesheet.png(4 frames, ~128Γ256). - Description: Character flinches backwards, tinted red on final frame.
- Folder:
assets/characters/animations/techniques/hit/
3.8 Finisher Sequence (All Archetypes)
- Sprite Sheet JSON:
finisher_musa_spritesheet.json,finisher_amsalja_spritesheet.json, etc. - Texture Atlas:
finisher_musa_spritesheet.png(12 frames, ~256Γ256), etc. - Description: A multi-stage βcinematicβ finisher (pause β bone crushing β slow fade).
- Folder:
assets/characters/animations/finisher/
4. Pixi.js Dependencies & Modules Needed
Below is a minimal list of Pixi.js modules (from pixi.js/lib) that you will rely on to load, animate, and render everything above. In your package.json, youβve already installed pixi.js. At runtime, youβll import exactly the pieces you use:
import {
Application,
TickerPlugin, // core ticker
ResizePlugin, // auto resizes to window
Assets, // for loading JSON/PNG atlases
Texture,
Sprite,
AnimatedSprite,
Container,
TilingSprite, // if you want parallax/tiled backgrounds
Loader, // older API if you prefer Loader instead of Assets
} from "pixi.js";
-
Application(fromapp/Application.mjs)- Creates the Pixi canvas, WebGL context, stage, etc.
-
TickerPlugin&ResizePlugin- Ensures your appβs ticker (main game loop) and auto-resize functionality.
-
Assets(fromassets/Assets.mjs)-
The new recommended loader for JSON sprite sheets, PNGs, audio, etc.
-
Example:
await Assets.load( "assets/characters/animations/techniques/light/strike_light_spritesheet.json" );
-
-
Texture(fromrendering/texture/Texture.mjs)-
Create textures from loaded assets:
const frameTex = Texture.from("strike_light_000.png");
-
-
Sprite&AnimatedSprite(fromscene/sprite/Sprite.mjs&scene/sprite-animated/AnimatedSprite.mjs)Spritefor static images (UI icons, backgrounds).AnimatedSpritefor flipbook animations (techniques, VFX).
-
Container(fromscene/container/Container.mjs)-
Use a parent
Containerfor grouping layers:backgroundContainercharacterContaineruiContainervfxContainer
-
-
TilingSprite(fromscene/sprite-tiling/TilingSprite.mjs)- If you want to scroll/loop the
intro_bg_loop.pngor tiledojang_floor_tex.pngseamlessly across a larger stage.
- If you want to scroll/loop the
-
Loader(fromassets/loader/Loader.mjs)- If you prefer the older PIXI.Loader API to Assets. Both are possible;
Assetsis recommended for newer Pixi versions.
- If you prefer the older PIXI.Loader API to Assets. Both are possible;
-
Filter/BlurFilter/DisplacementFilter(fromfilters/defaults/*)- Useful for adding real-time blur afterimages (for
dodge), screen shakes, or ripples when powering up Ki (ki_charge).
- Useful for adding real-time blur afterimages (for
5. Directory Structure & Final Checklist
Below is a consolidated folder structure showing where each of the above assets live. This is what your repo (or build pipeline) needs before you start coding the Pixi setup:
/assets
ββ characters/
β ββ animations/
β β ββ techniques/
β β β ββ light/
β β β β ββ strike_light_spritesheet.json
β β β β ββ strike_light_spritesheet.png
β β β ββ medium/
β β β β ββ strike_medium_spritesheet.json
β β β β ββ strike_medium_spritesheet.png
β β β ββ heavy/
β β β β ββ strike_heavy_spritesheet.json
β β β β ββ strike_heavy_spritesheet.png
β β β ββ critical/
β β β β ββ strike_critical_spritesheet.json
β β β β ββ strike_critical_spritesheet.png
β β β ββ dodge/
β β β β ββ dodge_spritesheet.json
β β β β ββ dodge_spritesheet.png
β β β ββ block/
β β β β ββ block_spritesheet.json
β β β β ββ block_spritesheet.png
β β β ββ hit/
β β β ββ hit_reaction_spritesheet.json
β β β ββ hit_reaction_spritesheet.png
β β ββ finisher/
β β ββ musa_finisher_spritesheet.json
β β ββ musa_finisher_spritesheet.png
β β ββ amsalja_finisher_spritesheet.json
β β ββ amsalja_finisher_spritesheet.png
β β ββ β¦ (one per archetype)
β ββ portraits/
β ββ portrait_musa.png
β ββ portrait_amsalja.png
β ββ β¦ (other archetypes)
β
ββ fonts/
β ββ BlackTrigram-Hangul.woff2
β ββ NotoSansKR-Regular.woff2
β ββ Roboto-Regular.woff2
β
ββ i18n/
β ββ ko.json
β ββ en.json
β
ββ props/
β ββ training_console_model.png
β ββ stance_pad_circle.png
β ββ dummy_target_overlay.svg
β
ββ shaders/
β ββ rim_light.shader
β ββ blood_decal.shader
β ββ neon_flicker.shader
β
ββ ui/
β ββ buttons/
β β ββ ui_button_start_idle.png
β β ββ ui_button_start_hover.png
β ββ icons/
β β ββ stances/
β β β ββ icon_stance_defensive.svg
β β β ββ icon_stance_balanced.svg
β β β ββ icon_stance_aggressive.svg
β β ββ trigrams/
β β β ββ icon_trigram_1.svg
β β β ββ icon_trigram_2.svg
β β β ββ β¦ up to icon_trigram_8.svg
β β ββ tooltip_arrow.png
β ββ hud/
β ββ hud_health_bar.png
β ββ hud_pain_bar.png
β
ββ vfx/
β ββ animations/
β β ββ anim_logo_pulse.json
β β ββ anim_menu_slide_0.png β¦ anim_menu_slide_7.png
β β ββ anim_strike_impact_0.png β¦ anim_strike_impact_15.png
β β ββ anim_finisher_musa_0.png β¦ anim_finisher_musa_11.png
β ββ particles/
β β ββ vfx_dust_puff.png
β β ββ vfx_blood_splatter.png
β β ββ confetti_sprites.png
β ββ shaders/
β ββ vfx_impact_ring.png
β ββ vfx_neon_glow.png
β ββ vfx_critical_flash.png
β
ββ visual/
β ββ bg/
β β ββ intro/
β β β ββ intro_bg_loop.png
β β β ββ mainmenu_foreground_overlay.png
β β ββ dojang/
β β ββ dojang_floor_tex.png
β β ββ dojang_wall_tex.png
β ββ overlays/
β ββ vital_region_head.png
β ββ vital_region_neck.png
β ββ vital_region_torso.png
β ββ vital_region_arms.png
β ββ vital_region_chest.png
β ββ vital_region_legs.png
β
ββ public/
ββ assets/
ββ audio/
ββ music/
β ββ intro_theme.webm
β ββ combat_theme.webm
β ββ combat_theme_geon.webm
β ββ training_theme.webm
β ββ meditation_theme.webm
β ββ victory_theme.webm
β ββ underground_rave_theme.webm
β ββ ambient_loop.webm
ββ sfx/
ββ ambient/
β ββ dojang_ambience.webm
β ββ wind_effect.webm
β ββ dojo_crowd.webm
ββ attacks/
β ββ attack_punch_light.webm
β ββ attack_punch_medium.webm
β ββ attack_kick_heavy.webm
β ββ attack_light.webm
β ββ attack_medium.webm
β ββ attack_critical.webm
β ββ attack_special_geon.webm
β ββ dodge.webm
β ββ block_success.webm
β ββ block_break.webm
β ββ perfect_strike.webm
ββ hit/
β ββ hit_light.webm
β ββ hit_medium.webm
β ββ hit_heavy.webm
β ββ hit_critical.webm
β ββ hit_flesh.webm
β ββ hit_block.webm
ββ combo/
β ββ combo_buildup.webm
β ββ combo_finish.webm
β ββ energy_pulse.webm
ββ match/
β ββ match_start.webm
β ββ countdown.webm
β ββ match_end.webm
β ββ victory.webm
β ββ defeat.webm
ββ movement/
β ββ footstep.webm
β ββ stance_change.webm
ββ ki/
β ββ ki_charge.webm
β ββ ki_release.webm
ββ stamina/
β ββ stamina_depleted.webm
ββ health/
β ββ health_low.webm
ββ ui/
ββ menu_click.webm
ββ menu_navigate.webm
ββ menu_select.webm
ββ menu_hover.webm
ββ menu_back.webm
1. Backgrounds & Environments
1.1 Intro / Main Menu Background
-
Asset Name:
intro_bg_loop.png-
Description: A seamless 1920Γ1080 loopable tile of a rainβslicked concrete floor with neon pipes and drifting dataβline grid.
-
File Format: PNG (plus normal/roughness if you want subtle 3D lighting on flat sprites, but PNG is usually enough).
-
Folder:
assets/visual/bg/intro/ -
Visual Style Notes:
- Base color: Obsidian (
#0A0F12) with subtle filmβgrain overlay. - Neon accents: teal/cyan reflections on puddles, flickering Hangul glyphs on pipes.
- Animation: small βrain dripβ loop in shader or flipbook.
- Base color: Obsidian (
-
-
Asset Name:
mainmenu_foreground_overlay.png- Description: A semiβtransparent obsidian vignette (20px βsoft edgeβ) to darken screen edges, helping text/logo pop.
- File Format: PNG (alpha)
- Folder:
assets/visual/overlays/ - Usage: Placed above
intro_bg_loopto darken corners.
1.2 Dojang / Training Hall Background
-
Asset Name:
dojang_floor_tex.png-
Description: 2048Γ2048 PBRβstyle image of matteβblack tatami mats, with subtle water puddle normals (if you want dynamic reflections).
-
File Format: PNG (or PNG + normal/roughness if desired)
-
Folder:
assets/visual/bg/dojang/ -
Style Notes:
- Tileable so it can fill any resolution.
- Slight neon cyan reflections at edges where wall meets floor.
-
-
Asset Name:
dojang_wall_tex.png-
Description: 1024Γ1024 tile of corrugated metal with pipelines and emissive Hangul trigrams (β°, β², etc.) behind semiβopaque panels.
-
File Format: PNG (with separate emissive mask channel if you plan to animate neon flicker).
-
Folder:
assets/visual/bg/dojang/ -
Style Notes:
- The emissive mask will let you βpulseβ each trigram glyph via a simple shader or a flicker sprite.
-
-
Asset Name:
dojang_wall_neon_flicker.png(optional flipbook)- Description: A small flipbook (e.g. 4 frames at 256Γ256) showing a neon glyph flicker (cycle through 0%, 50%, 100% brightness).
- File Format: PNG sprite sheet
- Folder:
assets/vfx/animations/
-
Asset Name:
training_console_model.png- Description: 512Γ512 stylized grayscale sprite of a holoβconsole (flat sprite) with cyan emissive accents (for realβtime data display).
- File Format: PNG
- Folder:
assets/visual/props/ - Notes: Use this as a static background element; you can overlay bitmaps of gauge bars, or simply let the console glow.
-
Asset Name:
stance_pad_circle.png- Description: 256Γ256 semiβtransparent PNG of a glowing floor circle. Pulses from 0 β 100% opacity in a 1s loop.
- File Format: PNG (alpha)
- Folder:
assets/visual/props/
2. UI Icons & HUD Elements
2.1 Stance Icons
Each icon is a 64Γ64 px SVG (so it scales crisply). Weβll load them as textures in Pixi and tint/animate as needed.
-
icon_stance_defensive.svg- Outline style in Slate Gray (
#2E3538) when inactive. - Filled with Teal Neon (
#00FFC8) + soft glow when active.
- Outline style in Slate Gray (
-
icon_stance_balanced.svg- Outline in Slate Gray; filled with Teal Neon on hover/active.
-
icon_stance_aggressive.svg- Outline in Slate Gray; filled with Crimson (
#FF0044) on βchargedβ or βreadyβ state, or Teal Neon when selected.
Folder:
assets/ui/icons/stances/ - Outline in Slate Gray; filled with Crimson (
2.2 Trigram Icons
-
File Names:
icon_trigram_1.svg icon_trigram_2.svg β¦ icon_trigram_8.svg ``$ -
\text{Each} \text{icon}: 48 \times 48 \text{px}, \text{dark} \text{background} (\text{Gunmetal} $#424A50`) with the trigram glyph in Teal Neon.
-
States:
- Inactive: no glow, just basic fill.
- Active: slight outer glow + subtle 1.1Γ scale βpulse.β
- Hover: 1.05Γ scale + quick glow (0.2 s).
Folder:
assets/ui/icons/trigrams/
2.3 HUD Bars & Overlays
-
hud_health_bar.png(800Γ32 px PNG)- 10 segmented blocks. Each filled segment is Cyan Glow (
#1BE7FF); empty is Slate Gray. - Folder:
assets/ui/hud/
- 10 segmented blocks. Each filled segment is Cyan Glow (
-
hud_pain_bar.png(800Γ16 px PNG)- 10 segments. Filled segments are Crimson (
#FF0044); empty Slate Gray. - Folder:
assets/ui/hud/
- 10 segments. Filled segments are Crimson (
-
ui_button_start_idle.png&ui_button_start_hover.png(256Γ64 px each)- Idle: Slate Gray panel with ββΆ Start Combatβ in Hangul+English.
- Hover: Underline in Teal Neon + icon (ββΆβ) glows.
- Folder:
assets/ui/buttons/
-
ui_panel_slate.png(1024Γ512 px)- A semi-opaque Slate Gray panel (70% opacity) with a subtle noise texture.
- Folder:
assets/ui/panels/
-
tooltip_arrow.png(32Γ32 px PNG)- Small triangle arrow in Cyan Glow for tooltips.
- Folder:
assets/ui/tooltips/
3. Technique Animations (AnimatedSprite Sprite Sheets)
Any time you see code like:
await Assets.load("path/to/spritesheet.json");
const frames = [];
for (let i = 0; i < N; i++) {
frames.push(Texture.from(`frame${i}.png`));
}
const anim = new AnimatedSprite(frames);
β¦you need a sprite sheet JSON + corresponding PNG atlas for each βtechnique.β Below is a minimal required set of technique animations:
3.1 Light Strike Animation (All Archetypes)
- Sprite Sheet JSON:
strike_light_spritesheet.json - Texture Atlas:
strike_light_spritesheet.png(e.g., 512Γ512 containing all 6 frames laid out in a grid). - Frame Count: 6 frames, each ~128Γ256 (portrait orientation).
- Animation Speed: 0.6 (adjust per archetype).
- Visual Content: Character winds up β quick punch/kick β recoil. No background in atlas (transparent).
- Folder:
assets/characters/animations/techniques/light/
3.2 Medium Strike Animation
- Sprite Sheet JSON:
strike_medium_spritesheet.json - Texture Atlas:
strike_medium_spritesheet.png(6β8 frames, ~128Γ256 each). - Description: More wind-up, more impact frames, a small dust puff frame integrated (see VFX).
- Folder:
assets/characters/animations/techniques/medium/
3.3 Heavy Strike Animation
- Sprite Sheet JSON:
strike_heavy_spritesheet.json - Texture Atlas:
strike_heavy_spritesheet.png(8 frames, ~256Γ256 each). - Description: Big wind-up, slow-mo pause on impact, splash of embedded VFX dust/blood.
- Folder:
assets/characters/animations/techniques/heavy/
3.4 Critical Strike / Finisher Animation
- Sprite Sheet JSON:
strike_critical_spritesheet.json - Texture Atlas:
strike_critical_spritesheet.png(10β12 frames, ~256Γ256). - Description: Slow-mo bone-breaking blow β flash frame β slowdown.
- Folder:
assets/characters/animations/techniques/critical/
3.5 Dodge / Evade Animation
- Sprite Sheet JSON:
dodge_spritesheet.json - Texture Atlas:
dodge_spritesheet.png(4β6 frames, ~128Γ256). - Description: Quick sidestep/backflip frames, subtle afterimage.
- Folder:
assets/characters/animations/techniques/dodge/
3.6 Block / Parry Animation
- Sprite Sheet JSON:
block_spritesheet.json - Texture Atlas:
block_spritesheet.png(5 frames, ~128Γ256). - Description: Character raises arm/weapon to block β recoil if successful.
- Folder:
assets/characters/animations/techniques/block/
3.7 Hit Reaction Animation
- Sprite Sheet JSON:
hit_reaction_spritesheet.json - Texture Atlas:
hit_reaction_spritesheet.png(4 frames, ~128Γ256). - Description: Character flinches backwards, tinted red on final frame.
- Folder:
assets/characters/animations/techniques/hit/
3.8 Finisher Sequence (All Archetypes)
- Sprite Sheet JSON:
finisher_musa_spritesheet.json,finisher_amsalja_spritesheet.json, etc. - Texture Atlas:
finisher_musa_spritesheet.png(12 frames, ~256Γ256), etc. - Description: A multi-stage βcinematicβ finisher (pause β bone crushing β slow fade).
- Folder:
assets/characters/animations/finisher/
4. Pixi.js Dependencies & Modules Needed
Below is a minimal list of Pixi.js modules (from pixi.js/lib) that you will rely on to load, animate, and render everything above. In your package.json, youβve already installed pixi.js. At runtime, youβll import exactly the pieces you use:
import {
Application,
TickerPlugin, // core ticker
ResizePlugin, // auto resizes to window
Assets, // for loading JSON/PNG atlases
Texture,
Sprite,
AnimatedSprite,
Container,
TilingSprite, // if you want parallax/tiled backgrounds
Loader, // older API if you prefer Loader instead of Assets
} from "pixi.js";
-
Application(fromapp/Application.mjs)- Creates the Pixi canvas, WebGL context, stage, etc.
-
TickerPlugin&ResizePlugin- Ensures your appβs ticker (main game loop) and auto-resize functionality.
-
Assets(fromassets/Assets.mjs)-
The new recommended loader for JSON sprite sheets, PNGs, audio, etc.
-
Example:
await Assets.load( "assets/characters/animations/techniques/light/strike_light_spritesheet.json" );
-
-
Texture(fromrendering/texture/Texture.mjs)-
Create textures from loaded assets:
const frameTex = Texture.from("strike_light_000.png");
-
-
Sprite&AnimatedSprite(fromscene/sprite/Sprite.mjs&scene/sprite-animated/AnimatedSprite.mjs)Spritefor static images (UI icons, backgrounds).AnimatedSpritefor flipbook animations (techniques, VFX).
-
Container(fromscene/container/Container.mjs)-
Use a parent
Containerfor grouping layers:backgroundContainercharacterContaineruiContainervfxContainer
-
-
TilingSprite(fromscene/sprite-tiling/TilingSprite.mjs)- If you want to scroll/loop the
intro_bg_loop.pngor tiledojang_floor_tex.pngseamlessly across a larger stage.
- If you want to scroll/loop the
-
Loader(fromassets/loader/Loader.mjs)- If you prefer the older PIXI.Loader API to Assets. Both are possible;
Assetsis recommended for newer Pixi versions.
- If you prefer the older PIXI.Loader API to Assets. Both are possible;
-
Filter/BlurFilter/DisplacementFilter(fromfilters/defaults/*)- Useful for adding real-time blur afterimages (for
dodge), screen shakes, or ripples when powering up Ki (ki_charge).
- Useful for adding real-time blur afterimages (for
5. Directory Structure & Final Checklist
Below is a consolidated folder structure showing where each of the above assets live. This is what your repo (or build pipeline) needs before you start coding the Pixi setup:
/assets
ββ characters/
β ββ animations/
β β ββ techniques/
β β β ββ light/
β β β β ββ strike_light_spritesheet.json
β β β β ββ strike_light_spritesheet.png
β β β ββ medium/
β β β β ββ strike_medium_spritesheet.json
β β β β ββ strike_medium_spritesheet.png
β β β ββ heavy/
β β β β ββ strike_heavy_spritesheet.json
β β β β ββ strike_heavy_spritesheet.png
β β β ββ critical/
β β β β ββ strike_critical_spritesheet.json
β β β β ββ strike_critical_spritesheet.png
β β β ββ dodge/
β β β β ββ dodge_spritesheet.json
β β β β ββ dodge_spritesheet.png
β β β ββ block/
β β β β ββ block_spritesheet.json
β β β β ββ block_spritesheet.png
β β β ββ hit/
β β β ββ hit_reaction_spritesheet.json
β β β ββ hit_reaction_spritesheet.png
β β ββ finisher/
β β ββ musa_finisher_spritesheet.json
β β ββ musa_finisher_spritesheet.png
β β ββ amsalja_finisher_spritesheet.json
β β ββ amsalja_finisher_spritesheet.png
β β ββ β¦ (one per archetype)
β ββ portraits/
β ββ portrait_musa.png
β ββ portrait_amsalja.png
β ββ β¦ (other archetypes)
β
ββ fonts/
β ββ BlackTrigram-Hangul.woff2
β ββ NotoSansKR-Regular.woff2
β ββ Roboto-Regular.woff2
β
ββ i18n/
β ββ ko.json
β ββ en.json
β
ββ props/
β ββ training_console_model.png
β ββ stance_pad_circle.png
β ββ dummy_target_overlay.svg
β
ββ shaders/
β ββ rim_light.shader
β ββ blood_decal.shader
β ββ neon_flicker.shader
β
ββ ui/
β ββ buttons/
β β ββ ui_button_start_idle.png
β β ββ ui_button_start_hover.png
β ββ icons/
β β ββ stances/
β β β ββ icon_stance_defensive.svg
β β β ββ icon_stance_balanced.svg
β β β ββ icon_stance_aggressive.svg
β β ββ trigrams/
β β β ββ icon_trigram_1.svg
β β β ββ icon_trigram_2.svg
β β β ββ β¦ up to icon_trigram_8.svg
β β ββ tooltip_arrow.png
β ββ hud/
β ββ hud_health_bar.png
β ββ hud_pain_bar.png
β
ββ vfx/
β ββ animations/
β β ββ anim_logo_pulse.json
β β ββ anim_menu_slide_0.png β¦ anim_menu_slide_7.png
β β ββ anim_strike_impact_0.png β¦ anim_strike_impact_15.png
β β ββ anim_finisher_musa_0.png β¦ anim_finisher_musa_11.png
β ββ particles/
β β ββ vfx_dust_puff.png
β β ββ vfx_blood_splatter.png
β β ββ confetti_sprites.png
β ββ shaders/
β ββ vfx_impact_ring.png
β ββ vfx_neon_glow.png
β ββ vfx_critical_flash.png
β
ββ visual/
β ββ bg/
β β ββ intro/
β β β ββ intro_bg_loop.png
β β β ββ mainmenu_foreground_overlay.png
β β ββ dojang/
β β ββ dojang_floor_tex.png
β β ββ dojang_wall_tex.png
β ββ overlays/
β ββ vital_region_head.png
β ββ vital_region_neck.png
β ββ vital_region_torso.png
β ββ vital_region_arms.png
β ββ vital_region_chest.png
β ββ vital_region_legs.png
β
ββ public/
ββ assets/
ββ audio/
ββ music/
β ββ intro_theme.webm
β ββ combat_theme.webm
β ββ combat_theme_geon.webm
β ββ training_theme.webm
β ββ meditation_theme.webm
β ββ victory_theme.webm
β ββ underground_rave_theme.webm
β ββ ambient_loop.webm
ββ sfx/
ββ ambient/
β ββ dojang_ambience.webm
β ββ wind_effect.webm
β ββ dojo_crowd.webm
ββ attacks/
β ββ attack_punch_light.webm
β ββ attack_punch_medium.webm
β ββ attack_kick_heavy.webm
β ββ attack_light.webm
β ββ attack_medium.webm
β ββ attack_critical.webm
β ββ attack_special_geon.webm
β ββ dodge.webm
β ββ block_success.webm
β ββ block_break.webm
β ββ perfect_strike.webm
ββ hit/
β ββ hit_light.webm
β ββ hit_medium.webm
β ββ hit_heavy.webm
β ββ hit_critical.webm
β ββ hit_flesh.webm
β ββ hit_block.webm
ββ combo/
β ββ combo_buildup.webm
β ββ combo_finish.webm
β ββ energy_pulse.webm
ββ match/
β ββ match_start.webm
β ββ countdown.webm
β ββ match_end.webm
β ββ victory.webm
β ββ defeat.webm
ββ movement/
β ββ footstep.webm
β ββ stance_change.webm
ββ ki/
β ββ ki_charge.webm
β ββ ki_release.webm
ββ stamina/
β ββ stamina_depleted.webm
ββ health/
β ββ health_low.webm
ββ ui/
ββ menu_click.webm
ββ menu_navigate.webm
ββ menu_select.webm
ββ menu_hover.webm
ββ menu_back.webm
1. Backgrounds & Environments
1.1 Intro / Main Menu Background
-
Asset Name:
intro_bg_loop.png-
Description: A seamless 1920Γ1080 loopable tile of a rainβslicked concrete floor with neon pipes and drifting dataβline grid.
-
File Format: PNG (plus normal/roughness if you want subtle 3D lighting on flat sprites, but PNG is usually enough).
-
Folder:
assets/visual/bg/intro/ -
Visual Style Notes:
- Base color: Obsidian (
#0A0F12) with subtle filmβgrain overlay. - Neon accents: teal/cyan reflections on puddles, flickering Hangul glyphs on pipes.
- Animation: small βrain dripβ loop in shader or flipbook.
- Base color: Obsidian (
-
-
Asset Name:
mainmenu_foreground_overlay.png- Description: A semiβtransparent obsidian vignette (20px βsoft edgeβ) to darken screen edges, helping text/logo pop.
- File Format: PNG (alpha)
- Folder:
assets/visual/overlays/ - Usage: Placed above
intro_bg_loopto darken corners.
1.2 Dojang / Training Hall Background
-
Asset Name:
dojang_floor_tex.png-
Description: 2048Γ2048 PBRβstyle image of matteβblack tatami mats, with subtle water puddle normals (if you want dynamic reflections).
-
File Format: PNG (or PNG + normal/roughness if desired)
-
Folder:
assets/visual/bg/dojang/ -
Style Notes:
- Tileable so it can fill any resolution.
- Slight neon cyan reflections at edges where wall meets floor.
-
-
Asset Name:
dojang_wall_tex.png-
Description: 1024Γ1024 tile of corrugated metal with pipelines and emissive Hangul trigrams (β°, β², etc.) behind semiβopaque panels.
-
File Format: PNG (with separate emissive mask channel if you plan to animate neon flicker).
-
Folder:
assets/visual/bg/dojang/ -
Style Notes:
- The emissive mask will let you βpulseβ each trigram glyph via a simple shader or a flicker sprite.
-
-
Asset Name:
dojang_wall_neon_flicker.png(optional flipbook)- Description: A small flipbook (e.g. 4 frames at 256Γ256) showing a neon glyph flicker (cycle through 0%, 50%, 100% brightness).
- File Format: PNG sprite sheet
- Folder:
assets/vfx/animations/
-
Asset Name:
training_console_model.png- Description: 512Γ512 stylized grayscale sprite of a holoβconsole (flat sprite) with cyan emissive accents (for realβtime data display).
- File Format: PNG