A downloadable tool for Windows, macOS, and Linux

Download NowName your own price

You can find the in-progress new version at github! It doesn't have exactly the same range of features but is overall prettier and easier to use.

A tool for creating distinctive sprites of different heights and appearances, to prototype Renpy code. Sprites include multiple expressions by default, and the tool lets you create custom expressions. 

A python script allows you to create png files of your sprite, with separate images for the expressions. Photoshop and Clip Studio Paint files are also provided, with all the base images.

The tool is accessible for screenreaders, and has colour descriptions for colourblind users. Although intended for use by Renpy developers, it is possible to create sprites for other Visual Novel engines. The contents are released under a Creative Commons attribution license. 

This project is currently in development. Please let me know if you encounter any bugs, or if you have any suggestions or requests.

Uses code from Baiyu's Layeredimage tutorial and art from dejinyucu's Agustina sprite.

Rated 5.0 out of 5 stars
(4 total ratings)
AuthorSpiral Atlas
TagsRen'Py, tool, Tutorial


Download NowName your own price

Click download now to get access to the following files:

RenpySpriteCreator-1.13-pc.zip 55 MB
RenpySpriteCreator-1.13-linux.tar.bz2 28 MB
RenpySpriteCreator-1.13-mac.zip 21 MB
spritecreator.psd 13 MB
spritecreator.clip 25 MB

Development log


Log in with itch.io to leave a comment.

It's me again. I have performed modifications of the internals such that when you finish it will automatically save over the pre-existing sprite code from within the Renpy app. Would you be interested in seeing these changes and incorporating them?

Hi! Sorry for the slow reply, I was having trouble grasping what you were describing and thought it might be clearer if I waited a little but I'm still not quite getting it. However, I am indeed very interested to see your code, and am sure I'll understand it better once I experiment with it. Thank you for going to so much effort! 

Saving works-in-progress appear to work, but loading them doesn’t? It would be a great feature if it worked, as you could make a minor tweak to a character later without re-entering everything. (I mean, there’s so many settings!)

I think the “randomize at startup” functionality (which I love!) may be conflicting with it.

If that’s the case, though, would it be possible to lock the initial randomization down to a one-time-flag so loading the file doesn’t retrigger it?

The problem isn't the randomisation, it's that the various dollmaker variables are elements of an array, which Renpy doesn't store in save files. I finally figured out how to store dollmaker variables in a way Renpy will save for Pride or Prejudice, and have been meaning to edit this project to use the same technique, but hadn't gotten around to it. It'll require some fiddly editing so may take me a little while to edit in and then test, but it's definitely on my to do list!

Fantastic! I’m looking forward to it!

I just wanted to say how much I love the “random” buttons! I especially love how easy it is to make interesting, gender-nonconforming characters using it!

That’s functionality I need for the stories I want to tell! <3

Ah, that's great to hear! Whenever I test the feature I keep seeing characters I can imagine having fun stories written about them :)

You have some great examples of the sprites. I have three suggestions there:

  1. Those examples are most useful the first time you run the game. It would be great if they didn’t show automatically except for the first time it was started. Then there could be an option to see it, or to clear the “already seen” flag or something if people want to see it again.

  2. The game itself doesn’t have a title screen. That would be a great place to showcase a few of the best example sprites where they can always be seen but never get in the way. It would also minimize the need to show the examples every time.

  3. Could you turn those example sprite pages in to a functional demo of how to use the copy/pasted code? Like a RenPy project we could either use for research, or even paste our new characters in to and directly base new novels off of. It would lower the barrier of entry for new users.

Thanks again for such a nice program!

Oh wow using examples in the title screen is such a good idea, I can't believe I didn't think of it! I did this in the version I just uploaded. 

I'll poke at making the examples only show up on a first playthrough. 

The example sprites are intended as, well, examples, since they use dollmaker output and you can see how they're called in script.rpy. But I guess some people could find the fact that there's also code to run the dollmaker in there confusing/intimidating, and it wouldn't be too hard to make a little example project. I'll see if I can make something that feels useful.

Thanks for the great suggestions!

The title screen looks great!

Personally, I think an example project would be a lot more interesting if it could have an MC that used the dollmaker and had everything get saved. ;) Seriously, though, that’s functionality that other sprite creators don’t support, so being able to demonstrate that would be great.

If it demonstrated one dollmaker MC, one static NPC, and one gender-flippable NPC that would be ideal. I’d love to know best practices around having gender-flippable NPCs. (But then I think it would be fun to have a dating sim where the player decides whether it is yaoi or yuri, but the story is the same regardless… and maybe it could default to “neither” and have all NPCs be agender/genderfluid/nonbinary…)

I have written two games that do things like that: Pride or Prejudice and Northanger Abbey, and you are welcome to use the code if you can untangle the mess. But unfortunately I can't easily make an example game with this sort of functionality using Sprite Maker code.

Sprite Maker uses layeredimages, because they make the code relatively easy to read. But I couldn't figure out how to get a layeredimage to do all the things I wanted, such as changing based on a gender toggle. So Northanger Abbey, Pride or Prejudice, and the dollmaker within Sprite Maker, all use DynamicDisplayables instead of layeredimages.

You could turn a Sprite Maker sprite into a DynamicDisplayable but it would be a bit fiddly, and the final code would end up looking pretty different. I should probably write that up, along with how I use DynamicDisplayables in general, since some people might find it useful.

It's quite possible that there is a way to do things like this with layeredimages, I just don't know it myself.

Ooo… I’m “welcome to use the code if I can untangle the mess”? Thank you. I may have to give that a shot.

You will be the first to know if I succeed. :)

Good luck! Also if you're changing pronouns in text I found this useful: https://npckc.itch.io/pronoun-tool

I found a reproducible error. The in-game “Settings” button currently throws this error. The log here is from starting the game, getting through the intro screens, then pressing the “Settings” button.

I'm sorry, but an uncaught exception occurred.

While running game code:
  File "game/spritecreator_scripts/spritecreator dollmaker.rpy", line 126, in script
    $askcolor(parent=self, title='Pick a color')
  File "game/spritecreator_scripts/spritecreator dollmaker.rpy", line 126, in <module>
    $askcolor(parent=self, title='Pick a color')
NameError: name 'askcolor' is not defined

-- Full Traceback ------------------------------------------------------------

Full traceback:
  File "game/spritecreator_scripts/spritecreator dollmaker.rpy", line 126, in script
    $askcolor(parent=self, title='Pick a color')
  File "C:\Users\New User\OneDrive\Documents\Itch Resources\renpy-sprite-creator\RenpySpriteCreator-1.12-pc\renpy\ast.py", line 912, in execute
    renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
  File "C:\Users\New User\OneDrive\Documents\Itch Resources\renpy-sprite-creator\RenpySpriteCreator-1.12-pc\renpy\python.py", line 2004, in py_exec_bytecode
    exec bytecode in globals, locals
  File "game/spritecreator_scripts/spritecreator dollmaker.rpy", line 126, in <module>
    $askcolor(parent=self, title='Pick a color')
NameError: name 'askcolor' is not defined

Renpy Sprite Creator 1.12
Sat Jun 12 11:49:51 2021

Thanks for this! After poking my code I remembered that I actually fixed this months ago but forgot to upload the fixed version, so I'm grateful you pointed it out.  It should work now.

Yay! It’s nice when they’re easy. :)

Could you please mark the executables with the correct platform? Right now, if you're using the Itch application it will default to downloading the first one -- which is the Mac version -- even though I'm running on Windows.

Oh sorry about that! I've fixed it. Thanks for your other suggestions, too, those'll require some more thought but I am definitely going to poke at them.


Itch didn’t quite know what to make of the change. It said there was an “Update” but then didn’t know what it was. I just uninstalled and reinstalled it and it was all sorted out.

Excuse me developers but I made some modifications to your script. Would you like to look at it? Do you have a place where I can send it?

I would be interested to see it, yes! My email address is fractalbestiary at gmail.

I am having problems running the generate_image script. I get an error that says TypeError: 'range' object does not support item assignment. Can you help me figure out what I did wrong?

Sorry about the script not working! Is it working on the default sprite_code.txt file? If it is, can you cut and paste the sprite_code.txt file that breaks it or put it on gdocs or something? If it's not working on the default sprite_code.txt either figuring out the problem may be trickier but I'll do my best :)

Hello. I have used your generator. It's very good! However, I don't quite understand the process of transferring the sprites to my game. Could you explain it to me?


I'll do my best! What part are you stuck on?