문서 찾아보기
문서/DSL 레퍼런스
이 페이지에서

스프라이트 문법 레퍼런스

네이티브 스프라이트는 투명 16×16 PNG 하나를 만듭니다. minecraft-item-v1은 래스터 규칙을 고정하며 PNG는 어떤 게임에서도 사용할 수 있습니다. 미리보기·출력 명령은 스프라이트 제작을 참고하세요.

루트와 리터럴 문법

ashfox-model 1 다음에 sprite name { … }를 씁니다. 루트 필수 속성은 profile, canvas, palette이며 레이어는 원본 순서대로 이름 있는 선언입니다. 생성용 id, op, format, layers 속성을 직접 쓰지 마세요.

형태 예제
대입 canvas = (16px, 16px);
중첩 레코드 palette { edge = #392b59; }
목록 rows = ["ee", "e."];
빈 목록 patches = [];
참조 mask = shared.apple_body;

숫자는 음이 아닌 정수입니다. at, canvas, axis와 그 벡터에만 px를 허용하고 다른 숫자는 무단위입니다. 산술식·모델 design·함수 호출은 없습니다. 문자열은 공용 모델 lexer를 따르며 이름 필드에는 따옴표 있는·없는 열거값과 참조를 받습니다. "clustered-v1", "warm-v1"처럼 하이픈이 있으면 따옴표로 감싸세요. tx, 소수, 음수 위치는 리터럴이 아닙니다.

스프라이트 ID·레이어 ID·팔레트 이름은 [a-z][a-z0-9_]{0,47}입니다. 팔레트는 최대 RGB 32색입니다. rows는 높이 1–16, 너비 1–16의 직사각형이며 색 행은 ASCII 문자와 ., 마스크·erase는 1.을 씁니다. 모든 색 문자에는 매핑이 필요합니다.

레이어 레코드

patches를 포함해 아래 필드는 모두 필수이고 레이어 ID는 고유합니다. 좌표 [x,y]는 캔버스 왼쪽 위 기준이며 전체 레이어가 안에 들어와야 합니다.

레이어 필드 의미
paint name at, rows, colors 팔레트 문자 칠하기. .은 아래 픽셀 유지
erase name at, rows 1은 지우고 .은 유지
stamp name stamp, at, flip, colors 재사용 스탬프. flip은 none, x, y, xy
part name mask, material, at, shade, grain, patches 재사용 점유 형상에 명암 후 의도한 패치

뒤 레이어가 앞을 덮을 수 있습니다. 점만 있는 행은 지우기가 아닙니다. 현재 프로필은 스프라이트당 최대 64레이어이며 워크스페이스의 제한 없는 export 개수와 별개입니다.

재사용 선언

sprite 또는 가져온 sprite module 안에 둡니다. 재사용 선언에는 export가 필요합니다. import "./shared.ashfox" as shared;shared.name으로 참조합니다. 상대 경로를 명시하며 패키지 이름 import는 지원하지 않습니다. 설정된 워크스페이스에는 모듈을 등록합니다.

선언 정확한 필드
export mask name rows: 1·.의 비어 있지 않은 형상
export material name ramp: 아래 두 레코드 중 하나
export stamp name rows, slots: 사용한 점 아닌 문자를 중복 없이 정확히 나열

명시적 램프는 mode = explicit; colors = [#shadow, #base, #light];에 실제 여섯 자리 색을 씁니다. 휘도는 감소하지 않아야 하고 양 끝 색은 달라야 합니다. 생성 램프는 mode = generated; base = #rrggbb;preset = warm-v1; 또는 neutral-v1입니다.

Part 명암과 상세

레코드 필드와 값
shade form `flat
bevel의 shade.axis 마스크 사각형 안의 서로 다른 로컬 픽셀 점 둘. bevel에만 필수
grain mode clustered-v1, amount 정수 0 또는 1, seed 정수 0–4294967295
패치 각각 id, at, rows, colors, protect 정수 0–2

패치 좌표는 part 로컬이며 색 픽셀은 점유 마스크 칸 안에 있어야 합니다. part마다 최대 16패치입니다. 리터럴 레코드만 쓰며 모델 텍스처의 anchor 문법은 받지 않습니다.

완전한 재사용 스프라이트

badge.ashfox로 저장하세요. import 모듈은 필요 없습니다.

ashfox-model 1
sprite badge {
  export mask square { rows = ["1111", "1111", "1111", "1111"]; }
  export material metal {
    ramp { mode = explicit; colors = [#303030, #808080, #e0e0e0]; }
  }
  export stamp dot { rows = ["x"]; slots = ["x"]; }
  profile = "minecraft-item-v1";
  canvas = (16px, 16px);
  palette { accent = #ffd166; }
  part base {
    mask = square;
    material = metal;
    at = (6px, 6px);
    shade { form = flat; light = top_left; contrast = 1; }
    grain { mode = "clustered-v1"; amount = 0; seed = 42; }
    patches = [];
  }
  stamp mark { stamp = dot; at = (7px, 7px); flip = none; colors { x = accent; } }
  erase corner { at = (6px, 6px); rows = ["1"]; }
}
npx --no-install ashfox build badge.ashfox --json

추가 마스크·재질·스탬프는 공용 아이템 모듈, 한 프로젝트에서 여러 개를 출력하려면 워크스페이스 설정을 참고하세요.

직접 만들어 보세요 에이전트 작업 지침 보기 →