kindergrimm logo

kindergrimm

Procedural doodle characters drawn as if by hand on cream paper — and Kindergrimm, the game they live in

Developer ToolsJavaScriptUnlicense 161 28
Website GitHub

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

161161
Aug 30, 2026Aug 31, 2026

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

Procedural generation of hand-drawn doodle characters
Characters rendered to look like they were drawn on cream paper
Rigged with one part per bone for animation support
Face recipes stored as JSON for saving, sharing, and rebuilding
Multiple drawing media techniques (hatch, scribble, stipple, graphite, wash, oil daubs, chalk, marker)
Species system using loaded dice tables for animal variations
Modular part system with one file per feature family
Generic rigging system that converts recipes to bones and meshes
Built-in animations (boil, blink, gaze, talk, sway, breath)
Crowd generation with life director for autonomous character behaviors
Multiple game modes including Kindergrimm, Marbles, and class photo poker
Interactive editor for tuning individual character parts
Toy shop contact sheet for reviewing all object families and ranks
Public domain licensing with no attribution requirements

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.

Loading documentation…
View on GitHub

Featured in Videos

YouTube tutorials and walkthroughs for kindergrimm

Alternatives

Similar projects ranked by category, topics, and text overlap.

Compare
kindergrimm | MushyBook