도트 팔레트 편집기 · 인덱스 색상과 Lospec 팔레트
스프라이트 자체를 대상으로 하는 팔레트 편집기입니다. 그림을 인덱스 색상으로 바꾼 뒤 팔레트 항목의 순서·색을 바꿔도 모든 프레임의 모습은 그대로이고, Lospec 팔레트를 이름으로 불러오며, 에이스프라이트·김프·포토샵이 읽는 형식으로 팔레트를 저장합니다.

- .aseprite검증됨· Aseprite 1.3.18
- Palette files측정 확인· read back
- Engine bundles검증됨· Godot 4.7.2 · Unity 6000.5
- Frame PNG · .nerulio일반 파일
이렇게 작동합니다
- 색상 모드 RGB ↔ 인덱스: 그림의 정확한 색, 현재 팔레트 또는 DB32에서 고르며 가장 가까운 색은 Oklab으로 찾고, 디더링은 기본으로 꺼져 있습니다(원하면 선형 광 기준 순서 디더). 투명 인덱스는 별도 항목이라 검정이 검정으로 남습니다.
- 팔레트 항목을 다른 칸으로 끌면 인덱스 스프라이트의 모든 셀이 인덱스 표를 따라 다시 쓰여 그림이 바뀌지 않습니다. 밝기·색상·채도·사용량으로 정렬, 추가, 삭제, 투명 인덱스 지정.
- OkLCh 기반 색상 이동 램프: 어두운 쪽은 차가운 색, 밝은 쪽은 따뜻한 색으로 옮겨 가며 단계 수, 이동량, 가장 어둡고 밝은 정도를 대화상자에서 정합니다. 기준 색은 정확히 유지됩니다.
- 팀 색 변형: 팔레트에서 램프를 고르면 팀 색마다 자기 램프가 모든 프레임·레이어에 대응되고 변형마다 새 스프라이트가 됩니다. 인덱스 스프라이트라면 팔레트 한 번 수정으로 모든 프레임 색이 바뀝니다.
- 점검 패널은 프레임별 색 개수를 예산과 비교하고, 팔레트 밖 색과 거의 같은 색을 찾으며, 튀는 픽셀을 선택하거나 팔레트 색으로 한 번에 맞춥니다.
사용 방법
- 스프라이트, 프레임, .aseprite 파일을 이 페이지에 끌어다 놓으면 팔레트 패널에 팔레트가 보이는 픽셀 작업 공간이 열립니다.
- 픽셀 › 색상 모드에서 인덱스와 팔레트 출처(그림의 정확한 색, 현재 팔레트, DB32)를 고르고, 깔끔한 도트라면 디더링은 끈 채로 둡니다.
- 항목을 더블클릭해 색을 고치고 끌어서 순서를 바꾸거나, 픽셀 › Lospec 팔레트에서 처음 한 번 동의한 뒤 팔레트 이름을 입력합니다.
- 팔레트 메뉴에서 .gpl·.pal·.hex·.ase·.act·.json으로 팔레트를 내보내고, 스프라이트는 인덱스 .aseprite로 저장합니다.
팔레트 형식 읽기·쓰기
모두 팔레트 메뉴에서 읽고 씁니다. "확인"은 쓰고 다시 읽어 같았다는 뜻입니다.
| 형식 | 만드는 곳 | 읽기 | 쓰기 |
|---|---|---|---|
| .gpl | 김프, Lospec, 에이스프라이트 | 가능(Lospec이 쓰는 RGBA 포함) | 가능, 확인 |
| .pal | 페인트샵 프로(JASC), RIFF 팔레트 | 두 방식 모두 | 가능, 확인 |
| .hex | Lospec | 가능 | 가능, 확인 |
| .ase(스와치) | 어도비 포토샵·일러스트레이터 | 가능(실제 16색 파일로 확인) | 가능, 확인 |
| .act | 어도비 색상표 | 가능 | 가능, 확인 |
| .json / .aseprite | Lospec JSON / 에이스프라이트 스프라이트 | 가능 / 그 팔레트 | JSON 가능, 확인 |
엔진별 내보내기와 검증 방법
"검증됨"은 실제 CC0 에셋으로 내보낸 파일을 해당 엔진·도구가 직접 불러와 원본과 비교했다는 뜻입니다. 불러오지 않은 형식은 그렇게 표시합니다.
| 대상 | 파일 | 검증 |
|---|---|---|
| .aseprite | layers · blend · opacity · locked · indexed palette · frames · tags | 검증됨 Aseprite 1.3.18실제 Aseprite 명령줄이 파일을 인덱스 모드, 레이어 2개, 불투명도 160의 곱하기, 편집 불가로 잠긴 레이어 그대로 다시 열었고 프레임 픽셀이 같았습니다. |
| Palette files | .gpl · .pal · .hex · .ase · .act · .json | 측정 확인 read back형식마다 쓰고 다시 읽어 같음을 확인했고, Aseprite가 만든 .gpl·.pal·.hex·.act와 실제 Adobe .ase(16색)를 읽었습니다. |
| Engine bundles | Godot 4 · Unity 6 · Phaser 3/4 · PixiJS 8 … through Pack & Export | 검증됨 Godot 4.7.2 · Unity 6000.5그린 스프라이트는 패킹·내보내기에서 묶습니다. 그 엔진 파일은 실제 CC0 에셋으로 각 엔진에서 불러와 확인했습니다(49회 중 47회 통과, 실패 2회는 Phaser 3 프리셋이 피하는 Phaser 3.90 버그). |
| Frame PNG · .nerulio | PNG-8 with the palette when an indexed frame fits it · project file | 일반 파일어떤 도구에서도 쓰는 일반 파일이며, 엔진 실행 검증은 주장하지 않습니다. |
검증 근거
정리 벤치마크(원래 1배 그림을 아는 CC0 사례 69개): 크기를 정확히 찾은 비율 81 %(±1px 90 %), 배경 유지 시 픽셀 74.0 % 정확. 가장 나은 경쟁 도구는 크기 30 %(perfectPixel), 정확한 픽셀 44.6 %(unfake.js). Aseprite로 만든 ×4 최근접 확대는 100 %, ×3.78 쌍선형 확대는 99.7 % 정확하게 돌아왔고 두 경우 모두 크기를 자동으로 찾았습니다. 1px 외곽선과 드롭 섀도는 Aseprite 결과와 픽셀까지 같았습니다(1846px, 705px). 여기서 쓴 .aseprite는 Aseprite 1.3.18에서 인덱스 모드와 레이어·블렌드·잠금이 그대로 열립니다.
한계
- 픽셀 작업 공간에 없는 것(Aseprite에는 있음): 레이어 그룹, 링크된 셀, 타일맵 레이어, 참조 레이어, RotSprite와 선택 영역 자유 회전·크기 조절(뒤집기와 90°만), 그라디언트·스프레이·윤곽·텍스트 도구, 사용자 브러시(사각·원 1~16px), 타일 반복 그리기, Lua 스크립트와 명령줄.
- 대칭 축은 숫자로 입력하며 캔버스에서 끌 수 없습니다. 터치에서는 오른쪽 버튼이 없어 배경색은 전환 버튼이나 X로 씁니다.
- 정리: JPEG는 가깝게 돌아오지만(배경 유지 시 84 %가 ΔE 0.02 이내) 정확히 같은 경우는 드뭅니다(12 %). 모의 생성 그림은 크기를 정확히 맞힌 비율이 20 %(±1px 80 %)이고, 실제 생성 그림 7장은 하나도 자동으로 맞추지 않았습니다. 패널이 제안한 픽셀 크기를 직접 입력해야 합니다.
- 인덱스 변환은 Aseprite의 RGB 거리가 아니라 Oklab에서 가장 가까운 색을 고릅니다. 시험 스프라이트의 68 % 픽셀이 다른(눈으로 더 가까운) 색이 됐습니다. Lospec 검색이 유일한 네트워크 요청이며 먼저 묻습니다.
자주 묻는 질문
인덱스로 바꾸면 에이스프라이트와 다른 색이 고르게 되는 이유는?
가장 가까운 색을 지각 색 공간인 Oklab에서 찾기 때문입니다. 에이스프라이트는 RGB 거리를 씁니다. 시험 스프라이트를 PICO-8로 바꿨을 때 불투명 픽셀은 모두 Oklab 기준 가장 가까운 색이 됐고, RGB 기준 선택과는 68 % 픽셀에서 달랐습니다.
Lospec 검색은 네트워크로 무엇을 보내나요?
입력한 팔레트 이름만 보냅니다. 동의 대화상자 뒤에 쿠키와 리퍼러 없이 lospec.com/palette-list/<이름>.json 요청 하나가 나가며, 작업 공간 전체에서 유일한 네트워크 요청입니다. 거절하면 아무것도 보내지 않습니다.
포토샵·페인트샵 프로 팔레트도 읽나요?
네. Adobe .ase 스와치와 .act, JASC·RIFF .pal, 김프 .gpl, .hex, Lospec JSON, .aseprite 안의 팔레트를 읽습니다. 형식마다 쓰고 다시 읽어 같음을 확인했고, 실제 16색 Adobe .ase도 읽었습니다.
무료인가요? 계정이 필요한가요?
이 페이지의 기능은 모두 무료이며 계정 없이 쓸 수 있습니다. 워터마크나 막혀 있는 내보내기가 없습니다.
스프라이트가 업로드되나요?
아니요. Studio는 이 브라우저 탭 안에서 디코딩·패킹·내보내기를 합니다. 프로젝트는 브라우저(IndexedDB)에 자동 저장되며 .nerulio 파일로 저장할 수 있습니다.
Aseprite나 엔진 플러그인을 설치해야 하나요?
아니요. .aseprite 파일은 브라우저에서 읽고 씁니다. 엔진별 번들에는 그 엔진에 필요한 것이 들어 있습니다(Godot는 가져오기 설정과 씬, Unity와 Godot 타일셋은 작은 편집기 스크립트).