kindergrimm
Procedural doodle characters drawn as if by hand on cream paper — and Kindergrimm, the game they live in
What is it?
What it is
A procedural doodle character generation system that creates hand‑drawn style characters, rigs each part to a bone, and exports them as reusable JSON assets for games.
Why it exists
To enable developers to generate animated, reusable characters for games without manually drawing each asset, by providing a modular, data‑driven pipeline.
Who should use it
Game developers, indie creators, procedural artists, and hobbyists interested in generative character art and animation rigs.
Who should avoid it
Users seeking polished commercial assets, those uncomfortable with JavaScript/p5, or expecting high-performance production-ready tools without further development.
Stars over time
No change stars in the last 1 day
How it works
A quick walkthrough in plain English
How kindergrimm works
Step 1 of 3
You interact with it
Open kindergrimm, send a request, or connect it to your stack.
Features
Advantages
- Highly modular architecture allows easy addition of new part types without touching core systems
- Deterministic generation ensures same recipe always produces identical character
- Separation of concerns between sketch rendering, media techniques, species data, and layout measurements
- Generic rigging system means new parts don't require modifications to animation infrastructure
- Multiple game implementations demonstrate practical use cases
- Comprehensive editor enables fine-tuning of generated characters
- No licensing restrictions allow use in any project for any purpose
- Pre-drawn animation states (like six eye states) enable efficient texture swapping
- Crowd system with autonomous behaviors adds life to generated characters
- Contact sheet view facilitates art review and quality control
Disadvantages
- Limited to 2D hand-drawn style characters, not suitable for 3D applications
- JavaScript-based implementation may have performance limitations for large crowds
- Unlicense means no legal protection or warranty for users
- No built-in export formats mentioned beyond JSON recipes
- Dependency on Python for serving may complicate deployment
- No mention of mobile responsiveness or touch interface support
- Limited documentation outside of ARCHITECTURE.md reference
- No built-in character customization UI beyond the editor
- Potentially steep learning curve for extending the part system
- No version control or update mechanism mentioned
Installation
cloud
No cloud deployment instructions provided in README
docker
Not documented in README - requires custom Docker setup
native
Run `python3 serve.py` to start the development server
compose
Not documented in README - requires custom Docker Compose setup
FAQ
How do I run the project locally?
Run `python3 serve.py` from the project root, then open the generated local server URL in your browser. This serves all the HTML scenes (index.html, editor.html, crowd.html, etc.) and the JavaScript sources.
What is a face recipe and why does it matter?
A face is defined by a recipe object: `{seed, media, color, parts:{...}}`. This JSON is the only state needed to redraw a face, so recipes can be saved, shared, and rebuilt at runtime inside games. The same recipe always produces the identical face.
How do I add a new part type?
Read ARCHITECTURE.md first. Part families live in `src/parts/*.js`, and `src/parts/index.js` is the registry that lists which parts are switched on. Adding a part is data-driven and does not require touching `src/rig.js`.
How are characters animated?
Animation is handled by `src/anim.js`, which provides boil, blink, gaze saccades, talk, sway, and breath. Eyes pre-draw six states so a glance is just a texture swap. `src/crowd.js` adds a life director that triggers glances, mutters, and emotes on a timer.
Is the code open source and can I use it in my own game?
Yes. The project is released into the public domain under the Unlicense. You can use it anywhere, for anything, with no attribution required (though a link back is appreciated).
What is the difference between the various HTML files?
`index.html` is the menu linking all scenes. `editor.html` lets you tune a single face. `crowd.html` shows a 7x5 grid of living faces. `orla.html` is a class photo poker-hand scorer. `game.html` is Kindergrimm, `marbles.html` is the Marbles game, and `items.html` is the toy shop contact sheet.
Featured in Videos
YouTube tutorials and walkthroughs for kindergrimm
Alternatives
Similar projects ranked by category, topics, and text overlap.