Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics


pixel art character maker maker · By 0x72

Help Sticky

A topic by 0x72 created 79 days ago Views: 100
Viewing posts 1 to 1



PDMM is a tool for making procedural generators of (particular kind of) pixel-art characters. You can think of it as an upgraded pixeldudesmaker.

It is provided "as is", without warranty of any kind.

Actually it is all buggy right now so consider yourself warned!

You can use characters generated with the config for whatever you like - I don't care. If you use it some evil way - I still don't care, it's all on you.

Other rules might apply for different configs - contact their author to find out about their characters license.


In order to start using PDMM you need to first load a config file that defines rules of some set of characters. You can do this by clicking load config button and selecting file from your drive. If you don't have any you can try the example one by clicking example button.

Then keep clicking randomize and tweak sliders until you get a character you like. When you're ready click export to get your spritesheet so you can use it in a game engine of your choice.

PDMM exports both - spritesheet as well as separate frames in png format. This should be easy to import in most game engines.

Making your own config file

PDMM config file is a .png that starts with some encoded JSON data and then the image of your character and their parts. Any fully red or non-opaque pixel ends the encoded JSON data.

In order to upload your config image just click load config button. In order to start editing loaded config just hit toggle config


The provided image aside should consist of encoded JSON data, the base animations (each one in its own line) and parts - (each part type in its own line). If you skip the JSON data and you want to edit it inside the app just pass an image that starts with either red or non-opaque pixel).

example config image

As you can see in the example above there are 3 animations - each in its own line. Afterwards two sets of parts. Notice that the first column of both are empty - this way the part might be disabled.

Below 4th element of 2nd part kind there is an additional version of it. Those are parts' frames and can be used to animate each part version separately


Basics section just allow you to change the width and height of single frame. All the frames are the same size


This section lets you add/remove/modify animations. length is a number of frames of particular animation. ox/oy let you specify default offset for parts for the given animation (in pixels).


Each palette is just a comma-separated list of colors in format either #fff or #ffffff

Palettes are used in the colors section


This section let you specify a map between a color in your source image to a palette. Each entry will result in a single slider. Multiple maps driven by one slider are useful for related colors - e.g. darker versions for indicating shadow.


Each part has a name, starting position in the image file xy and length representing number of versions available. And it will result in a slider available to the user of the generator.

Parts are rendered from top to bottom over the base animation so the order is important. Additionally you can use bg? toggle to render the part behind the base character (so you can add wings, backpacks, capes etc).

Frames let you specify animations of parts in context of animation of character. You can provide comma-separated list for offsets e.g. 0,0,1,1 would be appropriate for an animation of length 4 for an item that should for the first part of animation show default frame and later the frame that is one height below in the input image file. You can specify those numbers for each of the part variants separately. all may be used as a fallback.

Offsets are similar to frames but instead of changing what is rendered in each animations' frame they change where it's rendered (offset specified in pixels). Most commonly when the base character moves up and down the parts should move along - possibly with a slight lag.