I'm really curious about this one! I think I'll need the tutorial card to really get my head around it, but I'm definitely interested in checking it out when that's ready.
ahmwma
Creator of
Recent community posts
No, it's pretty much all scummy.
I get that it's popular with young teens for the social media aspect and the fact that their school firewalls don't seem to block the site. I don't blame kids for using it when so much of the web is not built with them in mind.
But the person running the site is absolutely scummy.
The paid subscription costs $49 per year if you want access to Decker's other built in patterns and colors (which are free), color palettes they took off of lospec (which are free) and a tiny, tiny amount of cloud storage (which people probably already have for free).
The site uses generative AI all over the place including the AI-generated fake "pixel art" that they use as highlight images on the color palettes which just seems extra insulting to the real pixel artists they took the color palettes from. They even promoted an AI service as the top banner on the website before they got their subscription system set up.
And they don't allow users in the social media area to post the name "internetjanitor". The automated review that happens when people post there will not let the creator of wigglypaint's username be posted on their site.
I don't think they want to be a fun, honest social media site for wigglypaint enjoyers. I wish they did. I think they want to fool people and make sure that their community stays fooled so they can keep making money off of young artists.
I think the black screen is because there's a new kind of image encoding that keeps the file size lower when a project has lots of color images like this one does.
It should open normally in a newer version of Decker. But if it doesn't, please let me know!
P.S. You're welcome! It was fun to find your site on there.

If you attempted to save a .deck file then you should probably search your device for it. Searching for "*.deck" should give you a list of every decker file you have on your device. If you saved the file while your drawing was on screen it'll still be there when you open it again.
(If you find it you can open it with File > Open... here on the web upload, or in your own copy of Decker.)
Thank you :D And yeah, I think it was itch's forum software that did you wrong. There was definitely an <img> in the post, it just didn't point to anything for some reason.
I'm still doing a little bit more reading on possible fixes for tablet issues (in general, when they don't seem to be getting along with specific programs) but it might be a good idea to go into your Wacom Center and set up a profile for Decker so you can tweak how your tablet interacts with it specifically.
I have a Huion so I'm not completely sure what's possible, but I'm thinking of things like turning off Windows Ink for Decker's profile so your computer will switch to the Wintab API instead. But there may be other options in there that could be helpful for bridging the gap like turning off pen pressure. (Decker doesn't currently support pen pressure, so you wouldn't be losing anything. The handful of variable-width brushes we have in the supplemental "all about brushes" deck and in wigglypaint use other methods.)
Hi there!
Decker is definitely intended as a drawing program! And it usually works fine with tablets. I draw all my art directly in Decker with a tablet for my projects here on itch. (And I have an old speedpaint of doing exactly that, made while recording my display tablet)
So the problem isn't inherent to the program... and I really hope we can find a fix for you and your tablet.
If you don't mind, as a starting point... Your image didn't load for me so I gotta this ask for clarification:
Are you experiencing line delay while using Wigglypaint in the Decker application (wigglypaint tools, drawing on the wigglypaint drawing area)?
Or are you experiencing this while using the general Decker drawing tools (selecting the drawing tool from Decker's menu or toolbars and using it to draw directly on a card)?
(Or both?)
And also what operating system are you using?
(There will probably be follow-up questions from me or others but this is helpful info for people to start with)
Hi. I understand the license pedantry, but I don't think you understand the effect this has on the artist community.
You're correct to call Wigglypaint "a gift" but these people take the gift out of artist's hands and sell it back to us worse.
These sites popped up all at once, with nearly identical llm-generated text, ads and dodgy links. They usually obfuscate the origin of the program or imply the original creator is involved.
Some outright lied about being "the developer of Wigglypaint".
Artists generally don't have a lot of spare cash but even so, we'll throw a few dollars at something useful to support the original creator when we can. And a lot of people did not realize the site asking for donations is just... some random person who clumsily generated a webpage to make some quick cash when a free program went viral.
Some of these sites have committed direct art theft, too. Taking people's wigglypaint artwork from social media and posting it unlinked and uncredited on their sites to show off the work of "Their Community".
People do make Wigglypaint modifications all the time, I've done it, my friends have done it! I've spent hours of my life teaching other artists how. But we're not trying to rip off our communities with these tiny changes. (And our tiny changes are still more than most of these sites will ever do. They just reupload an unchanged version 1.3 from when the program went viral and walk away.)
"Beware of Scams" is for us. The Artists.
A lot of people are upset when they find out that the site they use or the app they bought was being deceptive about who did the work to create it because "Well, I want to support the creator..." was a major part of their decision to spend their time and money there.
Wigglypaint is free. But a lot of people have been misled so mystery scammers could make a quick buck. (And "well, it's technically legal for people to deceive you to get your cash" doesn't make it feel any better.)
It's not currently possible... So, widgets can have one .pattern attribute at a time. In the case of basic buttons we have that one color + black (or whatever else you've changed pattern 1 to be).
But there's still some options to get the result you want.
If this happens to be a visual direction you like... it might be good to know that the black lines and the inside color swap locations if you set the button to have inverted visibility:

And then there are the "Make a button look like anything" options.
The first one is to have the appearance of a button as an image on the surface of the card and place an invisible button on top of it.
Or, if you want your customized button to have a specific click animation... you could paste images of your ideal button inside of the animButton contraption and use that. (It's the second contraption in the linked post)
If you want to copy an image of a standard button, select it and use [Edit > Copy Image] in the menu. This will copy the appearance of the widget into an image on the clipboard that you can paste anywhere else, to edit it or use it for other purposes.
If one of these options sounds good but it's unclear how to do something, please let me know.
1) The columns headers reorder all of the rows of the table according to the contents of their own column. In this case, they reorder everything alphabetically. It's just happens to switch the two rows in the tiny example. I admit it's not super clear why the rows are are changing when all of the example words are so similar to each other... I might try to make things clearer in the future. Hmm!
2) Oops! There should be a button with a butterfly on it to unlock the phone, but it seems like all the phone buttons went missing....

Everything should be all fixed now! Thank you so much for commenting when you ran into a problem, I really appreciate it a lot!
No problem! :D
With the unlock deck shortcut (CTRL + U + L + D) sometimes I forget to hold a letter until the end and that's why it doesn't work on the first try for me.
And if I had to guess about other hotkey difficulties people might have (not assuming in your case, just general advice):
Sometimes people aren't familiar with the "^c" notation in the menus. Where the ^ means "CTRL on Windows and Linux"/"CMD on mac"
Or if someone is using web decker, I believe some of the hotkeys are effectively blocked by web browsers because browsers use those shortcuts too and they take priority.
If you're having trouble/weirdness that don't seem related to any of that stuff then it might be worth making a bug report about it?
This kind of thing is easiest to do with the Listener, I think.
Go to [Decker > Listener] in the menu, type the snippet of code and then use Shift+Enter to run it.
(Or you can just put the script inside a button and click it in interact mode, if that's easier!)
For anyone finding this post later, this is about the rounded corners you see at the edge of decks published online.
You can use deck.corners:0 to remove the rounded corners from your project (this works by setting them to pattern 0/transparent) or you can use another pattern index number instead of '0' to change the corners to that color or pattern instead!
You're off about canvases, unfortunately... they're so much more basic that you're currently thinking.
(Though there is something else that you an look inside... I'll come back to that)
A Canvas doesn't really store any data except for the image that is currently displayed on it.
But canvases are very flexible and convenient as the display component of anything interactive or animated that uses images.
This might be a weird metaphor but if we were trying to play a film in Decker.... a canvas is like a projection screen.
It's not the projector (that's probably the script, wherever it lives) or the film (your stored images).
---
Okay! So! In Phinxel's Field Notes almost all of the extra images are stored in separate canvases on a card named 'storage'.
This card can't be navigated to while flipping through the book in interact mode because I prevented that... but you can find it by arrow key navigating around in widget mode or by opening up [ File > Cards ] to see the full list of cards and navigate to it that way("storage" is near the very bottom of the list) if you want to see all the stuff in there.
Inside of the script for the cookie slider example you mentioned there's a snippet that looks like this:
plate.paste[ storage.widgets[x].copy[] ]
What this does is copy an image from a canvas on my storage card onto the canvas on the same card that we're on now... the relevant canvas on this slider example card is named 'plate'.
storage.widgets[] is telling Decker to look at the widgets on my "storage" card and 'x' is a temporary variable combining the naming pattern I used for my stored canvases and the current number that the slider is set to. Don't worry about that part... I think I was trying to make my own example a little more compact.
If I was going to rewrite it to copy from a single specific named canvas it might look like this:
plate.paste[ storage.widgets["cookie3"].copy[] ]
# or, alternatively #
plate.paste[ storage.widgets.cookie3.copy[] ]
# or if I was copying from a canvas on the same card as the one I'm pasting on...#
plate.paste[ cookie3.copy[] ]
So... we have to store our extra image data somewhere else that isn't just on the 'projector screen' and there's a few options:
Canvases
Storing images in other canvases is totally fine! Depending on how many images you're storing it might not be ideal but it works. Canvases are built for displaying images and they have easy to use .copy[] and .paste[] functions to move those images around.
Fields
When you make a new field it'll be set to "rich text" by default, which is exactly what we need for it to be able to store images. If we put some images into a field we can use the .images attribute to refer to them in scripts.
You can see some examples of this on one of the pages about Fields in Phinxel's Field Notes (here's a direct link to the page) but it probably warrants more discussion here on the forums because it's very handy! This is a particularly good method for storing lots of animation frames in one place.
Other Places ....
Images can be stored in grid widgets as text (image data correctly stored this way would begin with %%IMG) or maybe also as pasted images if the grid column format is set to support rich text (this is not the default for grids).
(I've never really used grids for storing images for animations, honestly. I just know that it should technically be possible....)
You can also store images directly on a card and refer to the card.image or even use a widget as a marker for a smaller area on the card that you'd like to use. Someone can probably explain more about this if it sounds appealing.
But I personally tend to use canvases and fields for most things.
---
The other thing I wanted to mention is Contraptions, which do actually have an "Inside". Contraptions are custom widgets made of the 5 basic types of widgets + scripts (see the contraption bazaar thread to tour some of the community contributed contraptions).
Going back to the idea of a projector... a contraption could be made of a canvas to play your sequence of images and a field to store the full collection of frames. And you'd definitely also need a script to tell the widgets how to relate to each other.
This could absolutely just be built directly on a card (or split across a display card and a storage card...) without getting contraptions involved but sometimes it's handy to package these combinations of widgets together. And this is the concept that exists in Decker where a widget does actually have a secret "inside" area so I wanted to mention it. :) It's a much bigger topic though so I'll stop here.
Hopefully this made a little sense.
Yeah, there's a way to do it! We'll be using the font editor in examples/fonts.deck to modify the menu font.
The one slightly fussy element is that "menu" is not a font that can be transferred between decks through the DA/Font mover... but after making the change you can save the editor deck as a new file and empty it out to use it as a starting point for future projects.
(There might be other ways to move the font around, but I'm less sure about how....)
If that sounds okay to you then this is how I'd do it: We're going to copy the glyphs of an existing font and apply them to the menu font.
Step one would be to open examples/fonts.deck and hit the button for the Font Editor. Look through the list to find a font you like. A lot of them tend towards whimsical or deliberately handwritten but perhaps there's something in there that would work for you.
There's also the option of using something from this font pack which has some very nice ones but you'd probably want to edit them to have less empty space above the glyphs. (I can explain more if you find one that you prefer in there)
I'm going to use 'ahmCasual' from fonts.deck for my example here. The existing 'menu' font is 16 by 13 pixels, and ahmCasual is 16 by 16. The difference in width might cause a letter to get cut of in some places where 'menu' is currently used but... it's probably okay? It's close enough.
At the top right of this card you'll find a couple of sliders labeled 'font properties' and a button labeled 'set grid overlay to font dimensions' -- the button may be grayed out if the grid overlay already matches the font dimensions listed.

We want to set the grid overlay to match the dimensions of the font we're taking our new glyphs from. So after you find a font you like you should click that button (if it isn't gray already).
Now click the Sheet button at the bottom of the card.
Go into Widgets mode and use the View menu to turn on 'Snap to Grid'. (You can also turn on 'Show Grid Overlay' if you'd like to see what's going on.)
With 'Snap to Grid' active the positions and sizes of widgets will snap to the dots on the grid overlay whenever we move or resize them.
And because we're in Widgets mode you'll also be see the hidden widget that marks the area where the glyphs are drawn on the card. (the widget is named 'workzone')

(an image of the workzone widget as I found it..... not at all aligned with my new grid overlay dimensions but that's fine)
Drag 'workzone' around once to make the top left corner snap to a point on the grid near the top left of the card. Then resize 'workzone' once so the widget is moderately large on the card and the other dimensions will snap to the grid too. You don't need to be too specific about the size or position.
If it's not big enough during the next step you can resize it and try again. It's also okay if there are still unrelated glyphs on the card -- they'll be erased automatically in a moment.
Go back to Interact mode on this same card and click the 'Load' button. The glyphs of the font you selected should now be shown on the card inside the space marked by the 'workzone' widget.
Click the Font button at the bottom of this card to go back to the card with the font list and select 'menu' towards the top of the list.
Use the arrows on the 'font properties' sliders to match the grid overlay dimensions of the other font we're using (in the case of my example, ahmCasual, that's 16 by 16). The 'set grid overlay to font dimensions' button (which we're not clicking now) should become gray/locked automatically when your selected dimensions in the sliders match the current grid overlay.
And now we go back to the Sheet editor card one last time and click the Apply button.
The glyphs that were on the card in the 'workzone' should be applied to the menu font. :)

Save this deck as a new file and enjoy?
















