Color cycling effect?

I think this has been requested before, but I just want to specify that I’m looking to specifically shift colors around for a visual effect that could be exported as an animation. Everyone knows this effect:

It’s currently possible with some effort in ProMotion, but that’s about it without using dosbox and some older tools. Is this on the roadmap at all?

2 Likes

Related feature: sub-palettes and palette swaps, for effects such as palette swaps on the NES, where each sprite and tile used a 4-colour subset of the NES’s total palette. Being able to define sub-palettes (with specific order! two sub-palettes with the same colours in different orderings should be considered separate) and at least preview the effect of applying them in Aseprite would be pretty neat. Being able to assign different sub-palettes to frames would allow for great retro effects, as well as allow the palette cycling effects shown by the OP.

I’d imagine this would require a huge overhaul to how colour and animation are handled in Aseprite though (since now frames would need to be able to use just one image, and only change the sub-palette, and this all would need to work with existing features), and I wonder if perhaps this sort of work would be better-suited to a script that just makes an exportable preview of the effect, so that the source file could remain a single frame. As a script (or a series of them) that does one specific thing rather than generalise sub-palette workflows, it’s be much easier to implement.

Edit: While in the shower, I came up with two UI ideas for the general case, and this feature seems much less daunting now :D

Both allow specifying a palette for a given frame of animation. In both cases, the palette works as a palette-swap, meaning that it works based on the index of a colour in the palettes, so that the Nth colour in the new palette always replaces the Nth colour in the source palette. If the source palette has more colours than the new palette, colours in those extra indices are not replaced.

A. Palette Animation “Layer”, an approach more like DPaint
A special “layer” can be enabled in the “Show” menu. When enabled and visible, the palette swap effect is applied, and when disabled or hidden, the effect is not. Each cel of this layer, rather than containing image data, contains a palette. When a cel on this layer is clicked, a palette editor appears, which functions just like the regular side bar one, allowing changing colours, moving them around, adding, removing them, or even loading a different palette from file. Each cel can have its own palette, but they can be linked to share a palette. The default state for a cel is the palette associated with this file, and only changed states need be stored in the .ase file. Cels on this layer cannot be deleted.
To create a palette cycling effect with this, the palettes for each frame would just need to be arranged to cycle, which should be easy with the palette editor’s drag-and-dropping feature.

B. Palette Adjustment Layers, an approach more like Photoshop
Implement a new type of layer, an adjustment layer that allows palette swapping in the way described above (perhaps we could have other adjustment layers eventually xP). The layer properties contain the palette it changes to, and it affects everything below it. The layer’s pixel content is a mask (perhaps just pure black and white, or perhaps full greyscale to allow gradations of opacity). This means the layer’s adjustment can be applied just to parts of an image. The layer itself is just a regular layer, meaning its content (the mask) can be animated, but its properties (including the palette) are the same across each layer. This could allow for some very cool transitions between e.g. two palette-swapped versions of a scene.
To create palette cycling with this would require multiple palette adjustment layers, one for each step in the cycle.

A is more convenient for palette cycling and basic palette swaps, but B is more powerful and shares a basic approach with an already established convention in modern graphics editors (adjustment layers), which could possibly be expanded in Aseprite layer for other types of adjustment layers. Creating cycle effects in particular could be sped up/automated with scripts in both cases.

1 Like

Originally the feature to cycle colors was planned but never implemented, more information here: Per-frame palette support for animated .gifs; manual customization · Issue #1731 · aseprite/aseprite · GitHub and the original mockup of the new timeline back in 2013:

mockup

1 Like

Is it still planned or has the idea been abandoned? I thought it was mentioned at one time, thanks for posting it.

It’s planned, but for Aseprite v1.3

6 Likes

I’d love to see this feature as well.
Been trying to work on some effects lately, but i don’t see a way to cycle the colors.

I think I’ve seen this feature. I don’t know if it was added today on purpose, but when I converted Sonic’s sprite to png and imported the frames as animations to Aseprite, every frame had a unique palette. It’s so weird. This might work if you use File Viewer Plus to convert .PCX to .PNG. File: runseq.aseprite - Google Drive

Actually different palettes might be loaded (I don’t remember the situation, I think that just loading a sequence of png files with different palettes should work), but the problem at the moment is that there is no UI to edit (maybe a script could do it, but I’m not sure).

1 Like

Maybe could do it the same way you use the shade painting? Have an option for colour cycling and select the group of colours that will cycle with a timer for how quick you want it to do it? If I remember correctly, that’s the way Deluxe Paint did it?
Either way, it would be a good feature to have.

Is this still planned? After so many years I’d love a better color cycling technique than ProMotion :cry:

2 Likes

It is a very interesting question.
Color cycle is such a unique feature for pixel art, it is a real shame that a tool so refined to work with pixels hasn’t that embedded.

Up to this topic!

I would definitely use this feature; hopefully implemented similar [or even compatible :star_struck:]
with Deluxe Paint.

I would love to be able to render these in Aseprite.
Phlan_Deluge

2 Likes

I’m still here waiting for this feature TT

Any news on this? Version 1.3 released but it does not seem to contain the Color Cycle :confused: Tried to install the script but that failed.

3 Likes

well, ‘Palette changes in timeline’ is on the roadmap for v1.3, but i don’t think it made it there (at least not yet). i guess the main goal for v1.3 for now was to implement tile editing, because that’s one of the most requested features.

1 Like

Has there been any update to this?

Yes, an issue has been created and put under the 1.3 milestone

I think it’s been that way for 3 years at least: Color cycling effect? - #5 by dacap

Yes, unfortunately there is nothing we can do about that. It was added to the 1.3 milestone last year. You can view it here. As more versions of 1.3 come out, more features will be implemented including this one. You cannot do anything but wait.

… Of course for effective use this must also come with a brush mode that paints over time (during the stroke) with the animated color. :owl:

1 Like