Skip to main content

On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Before night fell I think I accidentally collected all the wood so I wasnt able to keep the fire or the lanterns going at all despite basically searching the entire area probably. The graphics were good and coherent to your theme. I wonder how you can procedurally generate crayon style sprites as said in your description? Is it just a filter you added on top of an existing artwork, or did you generate them from scratch? That is very interesting to me.

(+1)

Thanks for playing, and sorry about the wood! Running out before night is a real balance flaw, and I'll fix it in the next version (a guaranteed wood supply so the fire and lanterns can't be soft-locked).

As for the art: it's all generated from scratch, there's no hand-drawn artwork underneath and no filter on top of existing images. Every sprite is made by small Python scripts (numpy + Pillow):

1. Shapes: each object (cat, tree, tent, lantern...) is described as geometry: polygons, ellipses, capsules and splines, rasterised into plain black-and-white masks.

2. Crayon look: a custom mini-engine turns each mask into "crayon": the edge is roughened with noise so it looks wobbly like a wax stroke, the fill gets paper-like grain, a shifted darker shade gives a bit of volume, and a darker rim acts as the outline.

3. Packing: all the finished sprites are packed into one texture atlas plus a small JSON file with their positions.

4. Godot: the game loads the atlas and builds the world from textured quads (the world is 3D, but characters and props are flat crayon sprites facing the camera). Even the cat is assembled from separate generated parts (body, 4 legs with knees, 3 tail segments, head, ears) and animated in code, which is why it can walk, crouch and pounce smoothly.

So it's procedural generation first (Python), then assembly and animation in the engine (Godot). Changing a colour or shape in a script and re-running it redraws the whole set in the same style, which kept the look coherent.

Thanks for the thorough explanation!