pixelfx - 244개 픽셀아트 게임 이펙트 오픈소스 라이브러리

목차
2D 게임을 개발하다 보면 공격, 폭발, 마법, 회복, 아이템 획득 등 다양한 시각 효과가 필요하다. 특히 픽셀아트 스타일의 게임에서는 캐릭터와 배경뿐 아니라 이펙트까지 같은 그래픽 스타일로 맞춰야 자연스러운 화면을 만들 수 있다.
pixelfx는 이런 게임 이펙트를 코드 형태로 제공하는 오픈소스 프로젝트다.
불꽃, 폭발, 얼음, 번개, 검격, 마법, 캐릭터 피격, UI 애니메이션 등 244개의 픽셀아트 효과가 포함되어 있으며, 브라우저에서 바로 확인하거나 게임 프로젝트에 직접 적용할 수 있다.
각 효과를 이미지 파일로만 제공하는 방식이 아니라 JavaScript 코드로 구현했다는 점이 특징이다. 색상과 방향, 위치 등을 변경할 수 있고, 다른 게임 엔진에서 사용할 수 있도록 스프라이트 시트로 내보내는 기능도 갖추고 있다.
GitHub 저장소에는 효과 라이브러리뿐 아니라 새로운 이펙트를 제작하고 다듬는 과정을 돕는 Claude Code Skill도 포함되어 있다.

pixelfx란?
pixelfx는 픽셀아트 스타일의 2D 게임 이펙트를 모아놓은 JavaScript 라이브러리다.
일반적으로 게임 이펙트를 제작하려면 픽셀 단위로 프레임을 그리거나 별도의 그래픽 도구에서 애니메이션을 만든 다음 게임 엔진에 가져와야 한다.
pixelfx는 이 과정을 조금 다르게 접근한다. 각각의 이펙트를 코드로 정의하고, 실행 시점에 프레임을 생성하는 구조다.
따라서 같은 효과라도 색상 팔레트나 방향, 위치, 밝기 등을 변경해 다른 형태로 활용할 수 있다.
예를 들어 기본 불꽃 효과의 색상 팔레트를 변경하면 푸른색이나 보라색 계열의 마법 불꽃으로 바꿀 수 있다. 효과를 이미지로 고정해 사용하는 것보다 수정과 재활용이 편리한 구조다.
244개의 이펙트 카테고리
pixelfx에는 총 244개의 효과가 21개 카테고리로 구성되어 있다.
카테고리주요 효과
| Fire | 횃불, 화염 방사, 불기둥, 화염 회오리 |
| Explosions | 폭발, 연기, 폭죽, 수류탄 |
| Water | 물보라, 폭포, 파도, 소용돌이 |
| Ice | 얼음 창, 빙결, 서리 폭발, 눈보라 |
| Lightning | 번개, 전기 아크, 전기 구체 |
| Sci-Fi | 에너지 보호막, 홀로그램, 텔레포트 |
| Melee | 검격, 찌르기, 회전 공격, 강타 |
| Impacts | 피격 효과, 충격파, 패링, 착지 |
| Projectiles | 화살, 총알, 미사일, 레이저 |
| Spawn & Death | 소환, 부활, 소멸, 영혼 효과 |
| Arcane | 마법진, 마력 구체, 마법 투사체 |
| Holy | 치유, 축복, 신성한 빛 |
| Shadow | 그림자 계열 효과 |
| Status | 상태 이상 및 캐릭터 효과 |
| Nature | 자연 관련 효과 |
| Weather | 날씨 및 환경 효과 |
| UI | 레벨업, 데미지 숫자, 업적, 카운트다운 |
| Pickups | 코인, 보석, 상자, 포션 |
| Transitions | 화면 전환, 픽셀 디졸브, 글리치 |
| Critters | 박쥐, 새, 유령, 개구리 |
| 기타 | 각 카테고리의 세부 효과 |
게임에서 자주 사용하는 공격과 피격 효과부터 날씨, UI, 아이템 획득 애니메이션까지 폭넓게 포함하고 있다.
특히 Melee와 Impacts 카테고리는 RPG나 액션 게임의 전투 연출에 활용하기 좋다. UI 카테고리에는 레벨업, 데미지 숫자, 콤보 카운터처럼 게임 인터페이스에 필요한 효과도 들어 있다.
이미지가 아닌 코드로 만드는 이펙트
pixelfx에서 가장 중요한 특징은 이펙트가 이미지 파일이 아니라 코드로 구현되어 있다는 점이다.
README에서는 효과를 크게 두 가지 방식으로 구분한다.
시간 기반으로 그리는 효과
첫 번째는 특정 시점의 시간값을 기준으로 해당 프레임을 그리는 방식이다.
효과가 시작된 뒤 몇 초가 지났는지에 따라 화면에 표시할 픽셀을 계산한다. 같은 시간값과 설정을 사용하면 같은 프레임을 재현할 수 있어 반복 재생이나 특정 프레임 확인에 적합하다.
시뮬레이션 기반 효과
두 번째는 파티클이나 파편, 빛 등을 실제로 업데이트하면서 움직임을 계산하는 방식이다.
불꽃이 튀거나 연기가 움직이는 것처럼 시간에 따라 상태가 변하는 효과에 사용한다. 프로젝트에서는 시뮬레이션을 120Hz로 업데이트하도록 설계했다.
두 방식 모두 픽셀 색상과 빛을 별도 버퍼로 관리한다. 색상 버퍼에 픽셀을 그린 뒤 빛 버퍼의 발광 효과를 합성하는 구조다.
이런 방식은 단순히 작은 이미지를 재생하는 것보다 효과의 색상과 움직임을 세밀하게 조절할 수 있다는 장점이 있다.
캐릭터 동작까지 포함하는 전투 이펙트
pixelfx에서 눈여겨볼 만한 기능은 캐릭터 동작과 이펙트를 함께 구성하는 시스템이다.
일반적인 게임 이펙트는 검을 휘두르는 장면에서 검격 이펙트만 표시하는 경우가 많다. 하지만 실제 전투 연출에서는 공격 전 준비 동작, 공격 순간, 피격 반응, 공격 후 회복 동작이 함께 맞물려야 자연스럽다.
pixelfx는 이런 부분을 고려해 일부 효과에 캐릭터의 동작 정보와 타격 타이밍을 함께 정의한다.
예를 들어 검격 효과는 다음과 같은 흐름으로 구성할 수 있다.
- Wind-up: 공격을 준비하는 동작
- Attack: 실제 공격 동작
- Hit: 대상에게 공격이 적중하는 순간
- Freeze: 타격 순간의 짧은 정지 연출
- Follow-through: 공격 후속 동작
- Recovery: 원래 자세로 돌아가는 동작
타격 시점에는 화면 흔들림이나 짧은 정지, 대상의 밀림 같은 반응도 연결할 수 있다.
저장소에는 이런 방식으로 캐릭터와 대상의 반응을 포함한 61개의 효과와 12개의 동작이 제공된다고 설명되어 있다.
이는 단순한 이펙트 모음과 구별되는 부분이다. 전투 이펙트를 캐릭터의 애니메이션과 함께 연출하려는 게임 개발자에게 참고할 만한 구조다.

브라우저 게임에 직접 적용하기
JavaScript 기반 브라우저 게임이라면 pixelfx의 효과를 직접 불러와 사용할 수 있다.
README에서는 별도의 런타임 의존성 없이 Canvas 기반 게임에서 사용하는 예제를 제공한다.
설치는 GitHub 저장소를 이용해 진행할 수 있다.
npm install github:patch-gg/pixelfx
간단한 사용 예제는 다음과 같다.
import {
createFrame,
clearFrame,
createFx,
composite
} from "pixelfx";
import * as frostNova
from "pixelfx/fx/ice/frost-nova";
// 게임 해상도에 맞는 프레임 생성
const frame = createFrame(320, 180);
const img = new ImageData(320, 180);
// 얼음 폭발 효과 생성
const fx = createFx(frostNova, {
x: 160,
y: 140
});
function tick(dt) {
fx.update(dt);
clearFrame(frame);
// 캐릭터 뒤쪽에 이펙트 표시
fx.draw(frame, "back");
drawCharacters();
// 캐릭터 앞쪽에 이펙트 표시
fx.draw(frame, "front");
composite(frame, img.data, backgroundColor);
ctx.putImageData(img, 0, 0);
}
위 코드는 README에서 소개하는 기본적인 사용 구조다.
createFx()로 효과를 생성하고 update()로 시간에 따른 움직임을 갱신한다. 이후 draw()를 이용해 캐릭터 뒤나 앞에 이펙트를 배치할 수 있다.
마지막으로 composite()를 통해 색상과 빛을 합성하고 Canvas에 출력한다.
이런 구조는 Phaser, PixiJS, Kaplay, three.js 등 브라우저 기반 게임 환경에서 활용할 수 있다.
Godot, Unity 등 다른 게임 엔진에서도 사용 가능
pixelfx는 JavaScript 기반 라이브러리지만 다른 게임 엔진에서도 활용할 수 있다.
그 방법은 이펙트를 **스프라이트 시트(Sprite Sheet)**로 내보내는 것이다.
스프라이트 시트는 여러 애니메이션 프레임을 하나의 이미지에 격자 형태로 배치한 파일이다. 게임 엔진은 각 프레임의 위치와 재생 시간을 읽어 애니메이션으로 표현한다.
pixelfx는 렌더링 도구를 통해 투명 배경 PNG와 Aseprite 형식의 JSON 메타데이터를 함께 생성한다.
node tools/render.mjs ice/frost-nova --sheet
이 명령은 지정한 효과의 프레임을 스프라이트 시트로 출력하고, 각 프레임의 영역과 재생 시간 등을 담은 JSON 파일도 만든다.
이 방식으로 생성한 자료는 Phaser의 아틀라스 로더나 Godot, Unity의 Aseprite 가져오기 기능 등과 연계할 수 있다.
전체 라이브러리를 스프라이트 시트로 내보내려면 다음 명령을 사용할 수 있다.
node tools/sheets.mjs
따라서 JavaScript 게임이 아니더라도 기존 게임 엔진의 애니메이션 시스템에 맞춰 효과를 가져오는 것이 가능하다.
색상과 방향을 변경해 재활용
코드로 이펙트를 정의하는 방식의 또 다른 장점은 재사용성이다.
pixelfx의 효과는 팔레트, 위치, 방향, 회전, 시드, 밝기 등의 설정을 변경할 수 있다.
예를 들어 불꽃 효과를 푸른색 계열로 바꾸거나, 검격의 방향을 반대로 뒤집거나, 같은 효과를 다른 위치에서 재생할 수 있다.
node tools/render.mjs fire/torch --gif \
--opts '{"palette":["#102","#215","#43a","#8cf","#cff","#fff"]}'
위 예제는 불꽃의 색상 팔레트를 변경해 GIF로 렌더링하는 방법이다.
이런 설정을 활용하면 기본 효과를 그대로 반복해서 사용하는 대신 게임의 속성이나 캐릭터 콘셉트에 맞춰 변형할 수 있다.
Claude Code Skill로 새로운 이펙트 제작
pixelfx 저장소에는 라이브러리 외에도 Claude Code용 Skill이 포함되어 있다.
이 Skill은 기존 이펙트를 검색하고 활용하거나, 스프라이트 시트로 내보내고, 새로운 효과를 만드는 작업을 돕는다.
설치 방법은 Claude Code에서 다음 명령을 사용하는 것이다.
/plugin marketplace add patch-gg/pixelfx
/plugin install pixelfx@pixelfx
Skill을 설치한 뒤에는 자연어로 원하는 작업을 요청할 수 있다.
예를 들면 다음과 같다.
- 마법사의 궁극기에 얼음 폭발 효과 추가하기
- 코인 획득 효과를 여러 가지 형태로 만들어 비교하기
- 불꽃과 폭발 카테고리를 Godot용 스프라이트 시트로 내보내기
- 공격 이펙트의 타격감을 더 강하게 조정하기
- 공격 준비 동작과 적의 피격 반응을 연결하기
여기서 중요한 점은 Claude Code Skill 자체가 완성된 이펙트를 자동으로 생성하는 별도의 AI 모델은 아니라는 것이다.
프로젝트의 제작 도구와 작업 절차를 Claude Code가 활용하도록 안내하는 역할에 가깝다. 초안을 만들고, 렌더링한 결과를 확인한 뒤 수정하는 반복 작업을 지원한다.
직접 새로운 이펙트 만들기
기존 라이브러리에 원하는 효과가 없다면 새로운 효과를 추가할 수도 있다.
프로젝트에서는 새 효과를 시작할 수 있는 기본 파일을 생성하고 렌더링과 검증을 반복하는 제작 과정을 제공한다.
node tools/new.mjs arcane/my-spell
새로운 효과의 기본 구조를 생성한 다음 렌더링한다.
node tools/render.mjs arcane/my-spell
렌더링 결과를 확인한 뒤 품질 검사를 실행할 수 있다.
node tools/check.mjs arcane/my-spell
이 과정에서는 프레임 간 연결이 부자연스러운 부분, 반복 애니메이션의 이음새, 불규칙한 난수 사용, 느린 프레임 등을 점검한다.
즉, 단순히 AI에게 한 번 요청해서 결과물을 받는 방식이 아니라 제작 → 렌더링 → 시각적 확인 → 수정이라는 작업 흐름을 갖추고 있다.
라이선스와 사용 조건
pixelfx는 MIT 라이선스로 공개되어 있다.
MIT 라이선스는 비교적 제약이 적은 오픈소스 라이선스로 개인 프로젝트뿐 아니라 상업용 게임에도 사용할 수 있다. 수정하거나 다른 프로젝트에 포함하는 것도 가능하다.
다만 저장소의 모든 파일이 동일한 라이선스에 포함되는 것은 아니다.
README에서는 일부 코드가 다른 MIT 라이선스 프로젝트에서 수정·활용되었음을 밝히고 있으며, gallery/fonts에 포함된 Patch Pixel 폰트는 라이브러리의 MIT 라이선스 대상이 아니라고 별도로 안내한다.
따라서 게임에 적용할 때는 코드와 이펙트뿐 아니라 폰트 등 별도 리소스의 라이선스도 확인하는 것이 좋다.
pixelfx는 어떤 개발자에게 유용할까?
pixelfx는 픽셀아트 스타일의 게임을 제작하면서 다양한 시각 효과가 필요한 개발자에게 유용한 프로젝트다.
특히 다음과 같은 상황에서 활용할 만하다.
- Phaser, PixiJS 등으로 브라우저 게임을 개발하는 경우
- Godot나 Unity에서 사용할 픽셀아트 이펙트가 필요한 경우
- RPG나 액션 게임의 공격·피격 연출을 빠르게 구성하려는 경우
- UI 애니메이션과 아이템 획득 효과가 필요한 경우
- 기존 이펙트를 색상이나 방향에 맞게 변형하고 싶은 경우
- Claude Code를 활용해 새로운 게임 이펙트를 제작하려는 경우
다만 제공되는 효과가 모든 게임의 아트 스타일과 자연스럽게 어울리는 것은 아니다. 실제 프로젝트에 적용하기 전에는 갤러리에서 움직임과 색감, 크기를 확인하는 편이 좋다.
공식 사이트와 GitHub
pixelfx는 GitHub에서 소스 코드와 사용 방법을 확인할 수 있으며, 별도의 웹 갤러리에서 제공되는 이펙트를 직접 살펴볼 수 있다.
- GitHub 저장소: https://github.com/patch-gg/pixelfx
- 온라인 갤러리: https://patch-gg.github.io/pixelfx/
- 라이선스: MIT
픽셀아트 게임의 이펙트를 직접 제작하는 데 시간이 많이 걸리거나, 여러 게임 엔진에서 재사용할 수 있는 효과 라이브러리를 찾고 있다면 한 번 살펴볼 만한 프로젝트다.