A way to make different layers have different lengths

(I have no idea how programs like Aseprite are made and what would be too hard to implement, this is just an idea and I got no clue if this is even possible.)

I was looking at tutorials and I found this interesting one:

And I want to focus on the top panel.

I know it can be mimicked, but I think it would be neat for it to be a layer option. It would remove some repetitive tasks and allow for new export options.
This can also be useful for scenes with many moving parts, since syncing that up without it looking really repetitive is a pain.
You could use it for many things, having a blink cycle be independent from other animations thus making it look more natural, or having the walk cycle and the background not be synced up, thus creating more a better illusion of distance travelled since you wont notice “oh each time he lifts his right leg those birds move in that way”.

Here is a quick mock-up i made. once the frame hits the arrow it simply plays again. You could also select an option for ping-pong mode or reverse mode by clicking on the arrow icon or something like that! :slight_smile:

If the option for different lengths is enabled there can be an option on the export screen for the desired length of the GIF, either in a perfect loop or not.
And a separate option so you can make it so each layer can export as a different GIF. (I think being able to export layers separately would also be a nice feature but there are scripts for that.)

I am not a native English speaker, this is my first post on here and I am bad at this so sorry that this definitely sounds awkward! :sweat:

hi, Florisness, welcome!

to simplify, what you’re asking for is additional type of loop bounded to specific layer (or layers). that’s not a bad idea at all.

i’d only add that there should be some way to designate in and out points of such loops, so you wouldn’t need separate layers just for looping. and of course there should be a way to tell aseprite when to start those loops (offset) and when to stop them. because sometimes you may not want everything to be looping constantly all the time.

anyway, i don’t think this is impossible, similar ‘stand-alone’ loops are quite common in compositing software.
how hard it would be to actually implement this feature in aseprite is another question.

I struggle to imagine how this could work within Aseprite’s purely frame-based approach. Some software allow working with either frames or a timeline though, perhaps one day Aseprite will get something like that. That would allow adding a lot of features similar to this one that people have asked for.

Timelines would make certain tasks, such as frames that span across numerous layers, more work, but allow additional things like asynchronous loops as suggested in this thread, easier management of multiple separate motions in general, and automatic tweening (e.g. panning across a background) so I think there’s value in having both options. Without timelines, complex animations are difficult to build and preview in Aseprite, requiring constant exports to preview in a timeline-based editor or in-engine.

i was thinking about it and this could work even with cels. a loop in layer would create a set of linked ghost copies, which couldn’t be rearranged, but remained editable as regular linked cels.
but yes, having both cel-based and keyframe-based timelines would be the best option for many reasons.

also i would love to have nested sprites - like photoshop’s smart objects or ae’s compositions.

1 Like

what would be more plausible under the frame aproach, would be a setting in the layer menu that, unless you create a new keyframe yourself it when you create a new frame in another layer it would just insted copy one of your alredy made keyframes in that layer and then the next and the next looping automatically while you work on other layers

That could work if all the frames have the same duration, but what if you have an animation like this?

Frame:    1 2 3 4 5 6 7 8 9
Duration: 2 2 2 2 5 5 5 5 2
Layer 1:  O O O O O O O O O
Layer 2:    O O O O <

Repeating the frames, whether automatically or manually, gets incorrect timing as soon as there’s any variation in the frame duration. Some frames that should last for 2 units last for 5 and vice versa. This is true even when you’re not trying to loop things independently, but instead just have two different motions with different speeds within a single one, and currently doing this requires manually calculating the greatest common factor duration and haing a bunch of linked cels, e.g.

It would be very cool if Aseprite could handle that automatically, but at that point it just feels like a weird workaround for timeline-based animation.

Of course, I imagine that a large proportion of animations made in Aseprite have uniform durations, and for them, an option to auto-repeat key frames would be quite useful. Aseprite’s export options would probably need an option that calculates the shortest possible smooth loop of all these animations though. I also wonder how this would relate to tags…

1 Like

the duration doest matter the only thing it needs to do is to copy keyframes in a certain order, what im theoretically it needs to do is just to copy frames in order it including the timing in the frame insted of copying one specific its however the program would need to be able to analyse the entire timeline to keep consistency in extended frames.

basically its copying a set of frames in order, doest sound that dificult but i know nothing

In the past there was an attempt to create an time-based timeline (I think I should have a partial patch in some place in my disk).

There are other related features I guess: