Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

Objectified/Nested animations

A topic by thejinx created Sep 09, 2021 Views: 214 Replies: 5
Viewing posts 1 to 3
(1 edit) (+1)

Please consider allowing animations to be objects which can be nested inside one another.

As an example: the user could create animation 'shooting', which would be a gun sprite recoiling, producing a muzzle flare, etc

The shooting animation would be listed in a 'project animations' panel or some such library for the project.
User can drag/drop this shooting animation object into the timeline of any other animation they are currently editing.

The shooting animation object's timeline will be triggered on the frame it is inserted into the parent's timeline.

Macromedia/Adobe flash had this type of system and it was an invaluable addition for time saving in even moderately complex animation sequences. I'm big on modularity and re-using things I've already made if for nothing else than visual consistency when wanting to use an animation in different contexts. Edit: Also dramatically simplifies each individual timeline, separation of concerns and all that.

Thanks!

(2 edits)

Oh, this feature didn't even cross my mind, but it would be totally amazing! :D

The only thing that I think the program is lacking a bit is the ease of handling the timeline when the complexity of the animations increases (it can be pretty hard when you have several things moving around).

For the next release Deakcor has improved this a little by letting the user to decrease the line space (this way the timeline space can double the info contained in the same vertical space), but the use of "objects" having each one its own timeline (in the style of "Flash" movieclip symbols), would be a real game changer! :D

(+2)

Yes this is a good idea, I thought about that but I was bit not sure when the animation saved use multiple objects and shader, because if we can save the anim and use for an other project. Maybe just a system of "object missing" and ability to remap, should be nice to always have ability to change the animated object btw.

(2 edits) (+2)

I was originally thinking that having re-usable animations just within the one project would have been great, but having them be truly common and able to be shared would be amazing.

I haven't taken the time unfortunately to inspect how the project internals are arranged, so some if not all of this probably won't be applicable, but it might stimulate some thought at least?:

  • A Timeline is an arbitrary range used to define the length of an animation.
  • A Track is an array of property changes, one for each property type; x position, y position, rotation, shader property xyz plotted against a Timeline.
  • An Animation is a collection of Tracks, properties of which are interpolated between when 'played'. These are stored to disk as json or other human readable file type x.anim.
  • A Sequence is a collection of Animations with an optional list of conditions to play, loop or stop a given animation within the sequence. These are optionally stored to disk as json .seq files.

The animations and sequences can either be stored in a shared library location that is system-wide or project-wide, and will be automatically nested inside a folder structure which makes sense canonically.

In the user interface, a Sequence is what the user interacts with. When an Animation or Sequence is either imported or created, their usual properties are exposed in addition to new ones for retargeting/offsetting. This allows the user to specify the sprite to be used and manually align its origin to the vector path of the animation(s) it will act in. [essentially in the background gives all sprites a bone which can be bound to the vector path of an animation]

Mappings to sprites for use within animations and sequences will be retained within the project file itself.

Any animation or sequence files on disk should remain up to date. A file watcher could observe changes and warn of outdatedness / offer to update to latest versions for each given animation.

If not already the case to make projects more portable, used sprites could be imported into the project folder and linked relatively. Would be kinda cool for collaborative animation.


What do you think?

(1 edit) (+2)

Already got a pretty similar system for handling animations but yes quite same idea. About importation of animations, your first idea wasn't to import as sub animation ? Should be a great to choose like :  merge with current animation, load as new animation or import as sub animation. 

But ye I will work on that for a future release. Thank you for the nice idea !

Deleted 3 years ago

Yeah originally I was thinking it would be nice to use an animation multiple times within the same project, then you'd avoid most the pitfalls of resources being unavailable.

I hadn't thought initially about exporting animations from the project and allowing for them to be imported/edited/used in other projects or shared/collaborated on until this dialog started.

As its developed further, the concept of making animations available cross-project is really compelling. I can just see a vibrant marketplace or user community openly exchanging animations. Pretty cool stuff!

I'm Looking forward to seeing what you come up with if its a feature that can make it onto the roadmap! :)