Kitbash
Current Status: 🚧 Early Development (Initial version in progress)
Kitbash — A modular 2D character assembly tool for game developers.
| English | Simplified Chinese |
|---|---|
| English | ç®€ä½“ä¸æ–‡ |
Introduction
Kitbash is a specialized 2D asset compositing tool designed for game developers.
It solves the problem of assembling scattered sprite parts (like heads, bodies, weapons) into cohesive assets, allowing users to import, position, scale, and export them with pixel-perfect precision.
With Kitbash, you only need to drag and drop your assets, arrange them on the canvas, and export the result.
In the future, it may also support animation preview and spritesheet generation.
Features
- Batch Import: Load multiple images at once (
PNG,JPG,WEBP) via drag-and-drop or file dialog. - Pixel-Perfect Assembly: Nearest Neighbor Scaling ensures your pixel art remains crisp.
- Interactive Canvas: Middle-mouse drag to pan, scroll to zoom, integer snapping for precision.
- Layer Management: Visibility toggles, Z-Index reordering, and individual transform controls.
- Advanced Export:
- Export Scale: Output at 1x to 10x resolution.
- Scattered ZIP Export: Downloads a
.zipcontaining each layer as a separate, full-canvas-size PNG. - Metadata: Includes a
data.jsonpreserving original transform values.
How to Use
-
Install Rust (if not already installed):
| -
Clone the repository:
-
Run Locally (Native):
-
Run Locally (Web/WASM): Install Trunk:
Start server:
# orOpen
http://localhost:8080. -
Configuration: The UI panel provides settings for Canvas Size, Background Color, and Export Scale.
How to Build
Prerequisites
- Rust 1.75 or later
wasm32-unknown-unknowntarget (for Web)
Build Steps
-
Clone the repository:
-
Build (Native):
-
Build (Web):
Dependencies
This project uses the following crates:
| Crate | Version | Description |
|---|---|---|
| eframe | 0.30 | GUI framework (egui wrapper) |
| image | 0.25 | Image processing |
| zip | 0.6 | ZIP file generation |
| rfd | 0.15 | Native/Web file dialogs |
| wasm-bindgen | 0.2 | WASM JavaScript bindings |
Contributing
Contributions are welcome! Whether you want to fix a bug, add a feature, or improve documentation:
- Submit an Issue or Pull Request.
- Share ideas and discuss design or architecture.
License
This project is licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.