Introduction to Timelines

  • This looks like a major step forward! It's nice to see Construct finally getting a proper timeline function like Godot, Unreal, and Unity. It opens up SO many possibilities!

    Couple of questions:

    • Are nested timelines possible?
    • The animation interpolation control is quite rudimentary. Are you planning to add a graph editor of sorts?
    • Will bones/segmented characters be implemented? The competition allows for these, and it opens up many possibilities. Construct still relies on Spriter, which is less than ideal.
    • Will motion paths be integrated with the timeline?
    • Which parts of Construct's functionality can be keyframed/used in a timeline exactly? Everything, including event sheets and functions, and parameters for any object that is inserted in the layout? How far does the integration go?

    Anway, good job so far. One of the primary reasons why I did not consider Construct in the past was the lack of a timeline. I'll be looking forward to see where this goes.

  • IJCT

    scrubbing preview should be a button on the interface, like "enable scrubbing preview" while dragging the timeline, its not obvious that we need to press CTRL (cmd)

    This, along with other keyboard shortcuts will be outlined in the manual, when it is written. I think that once you know about it, it's pretty easy to use.

    also please add dark theme for the timeline.

    This should come in time, otherwise it looks pretty ugly in any theme other than the default one. While we don't have this the whole feature will remain behind the experimental flag.

    onion skinning its a needed feature for this.

    What exactly are you thinking about? I picture a few different things.

    1) A translucent preview of how an instance looks in each keyframe. So you can more or less tell how the animation will take place.

    2) Several translucent previews of how the instance looks as it is animated. Something like this maybe?

    I have the feeling you are thinking of the second option. While I think it would look nice, I don't think it is absolutely crucial to creating an animation. The scrubbing preview already serves the purpose of giving you a feel of how the animation is turning out.

  • justifun

    I get very confused what i'm doing with the whole edit mode on/off, remember / forget stuff.

    My mind makes me think that any changes i make while edit mode is on, should be setting keyframes etc, but it only sometimes does? then i try and scrub my animation and it starts off at a different location to where I thought i set the keyframe? It feels very inconsistent.

    I have found a couple of cases in which only a master keyframe (black dot) is created, with no related property keyframes (blue squares). This can be confusing, because the master keyframes by themselves don't have any information to do an animation.

    And i can't set keyframes at frame 0 for some reason.

    Every track in a timeline needs the first keyframe, you can't remove it, and you can't change it's time. The only way to change them is to update their values.

    Enabling "edit mode" makes me think i should be able to edit the objects, but according to your description, turning it off afterwards reverts any changes you did. I don't follow.

    I was wondering if the explanation was good, I guess it wasn't, I'll try again :P

    "Edit Mode" allows you to make changes to the instances in the Layout without loosing their original state before entering "Edit Mode".

    This way you can preview the animation and mess with positions, sizes and other properties while you are creating your keyframes for the animation, without worrying about loosing the initial state, which you might want to keep. Ej. You want all the instances in a specific place at the start of the layout, but you also want to move them around while you are creating the animation. "Edit Mode" solves this problem.

    When you are done, turning "Edit Mode" off will revert all the changes as far as the layout is concerned, so you can continue working with the rest of the features of Construct normally.

    The changes you made to the timeline you where working on will not be reverted though, all the keyframes remain there with their respective values.

    I hope that makes more sense.

    Also when you goto a keyframe that already exists, we are forced to use the "update keyframe" button instead of the "add keyframe" button, which its odd that its two different buttons, "set keyframe" on a keyframe that's already there should just update the keys.

    This is a fair point. Under the hood these two are very different features, so it was natural to separate them. This is why we need user feedback, to notice this kind of things. I'll remember this one. I don't think is a deal breaker though.

  • Thank you Diego for working with us to make the timeline experience more streamlined.

    I will attempt to make a video of the issue i'm seeing, but here's a write up at least.

    1) add a sprite to a time line

    2) goto frame 0

    3) the timeline bar is red (not in edit mode), so i can't add any keyframes

    4) turn on edit mode, and now the "add keyframes button" is an option of the right click menu - but selecting it doesn't any any x/y values etc to the timeline

    5)turning off edit mode (leaves only the visiblilty/lock/checkmark options red (the keyframe area is no longer red) - but still cant add keyframes at frame 0

    6) the only way i can add a keyframe at frame 0, is to now turn on edit mode, and move the object from where it started (which i dont want to do, i want it to stay where it currently is in my environment - then right click and add keyframe. (now i have a keyframe on frame 0

    7) now i goto a new keyframe (the red line is missing btw, probably still hiding on frame 0) and move the sprite to a new location and pick "add keyframe", but now the box pops back to the very original location for frame 0 from that offset location i had to move it to to be able to key frame 0

    So what's happened here, is since i couldnt set a keyframe on frame 0 to begin with, then i had to offset the object to get it to add a keyframe, but that keyframe isnt where i moved the object to, its back where it didn't want to save it. so now when i scrub this two new keyframes, its moving from the very first location, and not where i visually see the sprite. but i have 2 keyframes at least now.

    8) so then i scrub my animation and it looks likes it working now, with 2 keyframes etc. And so i turn off edit mode, and my sprite is no longer working at all, but there's keyframes on the timeline but nothing is happening when i scrub (it no longer moves. the only way to see it move is now to hit the play button.

    this is why the experience is really confusing.

  • DiegoM - Here is a video of me showing the workflow i was trying to explain above.

    my.pcloud.com/publink/show

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • Delenne

    Are nested timelines possible?

    At the moment this is not possible, I was thinking about it just yesterday though. But I don't think I will be able to start working on it any time soon.

    The animation interpolation control is quite rudimentary. Are you planning to add a graph editor of sorts?

    I am planning to add the option to create custom ease functions. These feature would come with a special editor to build your custom easing curve. You should then be able to assign that custom curve in the same way you assign the built in ones. Is that what you mean?

    Will bones/segmented characters be implemented? The competition allows for these, and it opens up many possibilities. Construct still relies on Spriter, which is less than ideal.

    At the moment there are no plans to support bone structures. That is a completely different feature which just happens to work very well with the concept of a timeline, so they are often assumed to go hand in hand.

    Will motion paths be integrated with the timeline?

    I Have thought about this too, but I am not too sure when I will be able to start work on this.

    Which parts of Construct's functionality can be keyframed/used in a timeline exactly? Everything, including event sheets and functions, and parameters for any object that is inserted in the layout? How far does the integration go?

    At the moment you can create keyframes for almost all properties that can belong to an instance. This includes the common properties, instance variables, behavior properties, effect parameters, and plugin properties.

    Some properties don't make sense to be interpolated, so those are not available. Ej. Sprite's Initial Frame can not be interpolated.

    There are some properties which are missing, because they are not part of Construct at all. For instance at the moment it is no possible to set the current frame of an animation from a timeline. That is a missing feature I would like to add.

    I have though about the possibility to interpolate Layout and Layer properties, Event Sheet global variables and the ability to trigger an event sheet action from a timeline, but those things are just in my TODO list. There is no estimated time of even when will I start with any of that.

  • Delenne

    > Are nested timelines possible?

    At the moment this is not possible, I was thinking about it just yesterday though. But I don't think I will be able to start working on it any time soon.

    Too bad, but it is encouraging that you have thought about this. Nesting timelines simplifies a lot of animation work.

    > The animation interpolation control is quite rudimentary. Are you planning to add a graph editor of sorts?

    I am planning to add the option to create custom ease functions. These feature would come with a special editor to build your custom easing curve. You should then be able to assign that custom curve in the same way you assign the built in ones. Is that what you mean?

    Sort of. In animation software like Maya and Blender a graph editor allows for full control over the timing and easing of your animation.

    For example, here is the one that just got added to Godot 3.1 (beta):

    In the top is the keys timeline. Click on the little curve icon, and it opens the graph editor. I am used to 2d and 3d animation graph editors, and it is an essential part to fine-tune your animation. In Toonboom it is handled with an awkward mini dialog.

    In Anime Studio it works with an identical graph editor:

    > Will bones/segmented characters be implemented? The competition allows for these, and it opens up many possibilities. Construct still relies on Spriter, which is less than ideal.

    At the moment there are no plans to support bone structures. That is a completely different feature which just happens to work very well with the concept of a timeline, so they are often assumed to go hand in hand.

    Understandable. It is a huge undertaking all by itself. But seeing that you are working on this timeline I see a glimmer of hope at the end of the tunnel that might perhaps hint to having bones implemented sometime in the future.

    > Will motion paths be integrated with the timeline?

    I Have thought about this too, but I am not too sure when I will be able to start work on this.

    Again, great to know you have already been thinking about integrating these.

    > Which parts of Construct's functionality can be keyframed/used in a timeline exactly? Everything, including event sheets and functions, and parameters for any object that is inserted in the layout? How far does the integration go?

    At the moment you can create keyframes for almost all properties that can belong to an instance. This includes the common properties, instance variables, behavior properties, effect parameters, and plugin properties.

    Some properties don't make sense to be interpolated, so those are not available. Ej. Sprite's Initial Frame can not be interpolated.

    There are some properties which are missing, because they are not part of Construct at all. For instance at the moment it is no possible to set the current frame of an animation from a timeline. That is a missing feature I would like to add.

    Yes, that is what I meant. This opens up a huge number of possibilities!

    I have though about the possibility to interpolate Layout and Layer properties, Event Sheet global variables and the ability to trigger an event sheet action from a timeline, but those things are just in my TODO list. There is no estimated time of even when will I start with any of that.

    Looking forward to future timeline features in Construct.

    One more question: will users have access to properties of plugins? For example, will it be possible to control Spriter object parameters with the timeline? Or will it be limited to the standard Construct objects?

  • Delenne

    One more question: will users have access to properties of plugins? For example, will it be possible to control Spriter object parameters with the timeline? Or will it be limited to the standard Construct objects?

    In order to be able to animate C3's built-in plugin properties I had to do a little bit of work, because there was no way to update the values asides from event actions. The way it works is that each plugin needs to define which of it's properties are animatable and then implement the appropriate logic to react to changes at runtime. By default a plugin property is not animatable.

    All of that means that each plugin creator needs to update their plugin if they want to support animation of properties through a timeline.

    The details on how exactly to update a plugin will be released later, when the whole feature is more stable.

    So to answer the question, at the moment only the built in plugins support timelines. In the future it will be possible to modify existing plugins to do so aswell.

  • Niiice!

  • DiegoM - What's the hotkey for adding keyframes? You mention there is one but not what to press.

  • Keyboard Shortcuts

    Recently a bunch of basic keyboard shortcuts where added to the Timeline Bar.

    S

    This is the same as the Set keyframes option that can be found in the layout context menu or the timeline bar context menu. It will set keyframes at the current position in the timeline, with values according to the current state of the instances in the layout. If there already are keyframes at the current time in the timeline, they will be updated.

    Delete

    Deletes the current selection, be it of keyframes or tracks.

    D

    Disable the current selection, be it of keyframes or tracks.

    Disabled keyframes are not are not taken into account when animating. Disabling a master keyframe will disable all corresponding property keyframes. Disabling a track will disable all of it's keyframes.

    E

    Enable the current selection, be it of keyframes or tracks.

    M

    Add missing property keyframes of all the selected master keyframes. The new property keyframes are given the current instance value. If a master keyframe is not missing any property keyframes, nothing will happen.

    M + Ctrl/Cmd

    Add the the missing property keyframes of all the selected master keyframes. The new property keyframes are given a value that fits into the timeline with out causing any changes.

    SPACE

    Preview the timeline

    LEFT ARROW + Ctrl/Cmd

    Move the current time marker to the next master keyframe

    RIGHT ARROW + Ctrl/Cmd

    Move the current time marker to the next master keyframe

  • Did you think about doing it with BEZIER CURVES?

  • Is it theoretically possible for a plug-in developer to write something that could convert motion data from a Json or xml sheet into the timeline format so that construct could play it back? Would it be hard for timeline to have a load Json function?

  • rodimus111

    Did you think about doing it with BEZIER CURVES?

    I realize that is a very popular request, so at some point I should be working on adding the functionality to use a bezier curve to edit the path an instance takes as it animates. I can't give any estimates as to when that work will start though, but it definitely is in the plans.

  • justifun

    Is it theoretically possible for a plug-in developer to write something that could convert motion data from a Json or xml sheet into the timeline format so that construct could play it back? Would it be hard for timeline to have a load Json function?

    I suppose it would be technically possible. I haven't tried this myself so I'm sure there are lots of caveats, but a plugin should be able to create a timeline programmatically at runtime, this is pretty much what the Tween Behavior does under the hood.

    But I suppose that you are thinking of importing data from other animations tools so C3 can just play it back. At the moment this would be very difficult because the feature is just not mature enough, so it just doesn't understand a lot of features present in other animation software.

Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)