Local web app that turns a text description or reference image into pixel-art 2D game character sprite sheets — generated on your own GPU with Stable Diffusion XL.
sheet.png (one row per direction+movement)
with sheet.json metadata (cell size, rows, frame counts, fps, loop).Generation speed on an RTX 5060 Ti: base candidates ~40 s each; turnaround views and movement frames ~3.5 min each (FLUX 12B at 28 steps — fewer steps were tested and degrade pose accuracy, so quality wins). An 8-frame run cycle takes ~30 min. The two engines share the GPU and are swapped automatically.
python -m venv .venv
.venv\Scripts\pip install torch torchvision --index-url https://download.pytorch.org/whl/cu128
.venv\Scripts\pip install -r requirements.txt
Double-click start.bat, or:
.venv\Scripts\python -m uvicorn backend.main:app --port 8000
Open http://localhost:8000. The first generation loads/downloads the models (one time, ~13 GB); after that a movement of 6 frames takes a couple of minutes.
Set ASSETS_CREATOR_FULL_GPU=1 to keep all models resident on the GPU
(faster, needs the full 16 GB free).
output/<character_id>/
character.json # full state (resumable from the UI)
base_raw.png # approved 1024px base (identity anchor)
base_sprite.png # pixel-art base sprite
views/ # 8-direction turnaround (raw + sprite)
anims/<DIR_movement>/ # frames f0..fN.png, raw frames, preview.gif
sheet.png, sheet.json # packed export
| Model | Role |
|---|---|
| stabilityai/stable-diffusion-xl-base-1.0 | base-character generator |
| nerijs/pixel-art-xl (LoRA) | pixel-art style |
| xinsir/controlnet-openpose-sdxl-1.0 | base-character pose control |
| h94/IP-Adapter (ViT-H, SDXL) | reference-image conditioning |
| FLUX.1 Kontext dev (QuantStack GGUF Q4_K_S) | identity-preserving views + frames |
| shuttleai/shuttle-3-diffusion | FLUX VAE/CLIP/T5 components (un-gated) |
| thedeoxen RefControl LoRA | pose transfer (reference + skeleton) |
| rembg u2net | background removal |
Movements are pure data: add an entry in
backend/poses/animations.py (build()) using the parametric Pose
rig — it automatically works for all 8 directions.
.venv\Scripts\python scripts\smoke_test.py
Generates a base knight + one East run frame into scripts/smoke_out/.
1 commits
Python
77.6%
JavaScript
12.6%
CSS
5.7%
HTML
4.0%
Local web app that turns a text description or reference image into pixel-art 2D game character sprite sheets — generated on your own GPU with Stable Diffusion XL.
sheet.png (one row per direction+movement)
with sheet.json metadata (cell size, rows, frame counts, fps, loop).Generation speed on an RTX 5060 Ti: base candidates ~40 s each; turnaround views and movement frames ~3.5 min each (FLUX 12B at 28 steps — fewer steps were tested and degrade pose accuracy, so quality wins). An 8-frame run cycle takes ~30 min. The two engines share the GPU and are swapped automatically.
python -m venv .venv
.venv\Scripts\pip install torch torchvision --index-url https://download.pytorch.org/whl/cu128
.venv\Scripts\pip install -r requirements.txt
Double-click start.bat, or:
.venv\Scripts\python -m uvicorn backend.main:app --port 8000
Open http://localhost:8000. The first generation loads/downloads the models (one time, ~13 GB); after that a movement of 6 frames takes a couple of minutes.
Set ASSETS_CREATOR_FULL_GPU=1 to keep all models resident on the GPU
(faster, needs the full 16 GB free).
output/<character_id>/
character.json # full state (resumable from the UI)
base_raw.png # approved 1024px base (identity anchor)
base_sprite.png # pixel-art base sprite
views/ # 8-direction turnaround (raw + sprite)
anims/<DIR_movement>/ # frames f0..fN.png, raw frames, preview.gif
sheet.png, sheet.json # packed export
| Model | Role |
|---|---|
| stabilityai/stable-diffusion-xl-base-1.0 | base-character generator |
| nerijs/pixel-art-xl (LoRA) | pixel-art style |
| xinsir/controlnet-openpose-sdxl-1.0 | base-character pose control |
| h94/IP-Adapter (ViT-H, SDXL) | reference-image conditioning |
| FLUX.1 Kontext dev (QuantStack GGUF Q4_K_S) | identity-preserving views + frames |
| shuttleai/shuttle-3-diffusion | FLUX VAE/CLIP/T5 components (un-gated) |
| thedeoxen RefControl LoRA | pose transfer (reference + skeleton) |
| rembg u2net | background removal |
Movements are pure data: add an entry in
backend/poses/animations.py (build()) using the parametric Pose
rig — it automatically works for all 8 directions.
.venv\Scripts\python scripts\smoke_test.py
Generates a base knight + one East run frame into scripts/smoke_out/.
1 commits
Python
77.6%
JavaScript
12.6%
CSS
5.7%
HTML
4.0%