4ian / GDevelop

🎮 Open-source, cross-platform 2D/3D/multiplayer game engine designed for everyone.
https://gdevelop.io
Other
10.65k stars 844 forks source link

Bulk import animations and frames #4987

Closed LuniMoon closed 8 months ago

LuniMoon commented 1 year ago

Hello y'all, The core team is evaluating the implications of re designing the asset animation panel (how to add, manage and edit animation frames). Informed by the feedback received on the forum topic, we're taking a big chunk on UI tweaking for the panel's timeline, but there is one functionality in which we'd like your help: importing pngs in bulk in the Sprite dialog. 🚀

Description

----- Topic on the forum https://forum.gdevelop.io/t/bulk-import-local-animations-and-frames/44593/5

What we've found thanks to the feedback shared by DasBilligeAlien, Rasterisko, and ZachjuKamashi is that adding pngs per animation can be time consuming. Today, the system forces the user to import numerous frames into one animation status (animation 1, animation 2...) at a time. This is great to add 2 or 3 new frames to a single animation, but this way of functioning isn't efficient for users who'd like to import frames into multiple animations at once.

Solution suggested

We want to allow users to be able to import pngs in bulk and automatically categorise them in different animations:

"Must-haves": (Mandatory scope of the solution):

"Nice to Haves": (Optional scope for the solution. Extras)

Design notes for implementation:

arthuro555 commented 1 year ago

It would be good to also add a way to import animations from a sprite sheet. Many formats, such as the pixi sprite sheet format, allow to define the different animations present within a sheet, and many experienced gamdevs from other engines are used to the flow of creating their animations as a sprite sheet directly, or composing the frames into animations through a tool that exports them as a sprite sheet with animations. Allowing to import animations from such a sprite sheet would ease new users from other engines in by allowing them to use the same workflows they are confortable with, and more generally allow users to compose their animations with other tools if they find them more confortable to use & just use the exported animations in GDevelop directly.

LuniMoon commented 1 year ago

Agree. I haven't add it to the list of requirements because I am still collecting input on that.

The quick poll (not representative in any way, but at least gives us an idea) says that we still have more frame by frame animation than spread sheets (there's still the question about who produces what, on which kind of context):

Screenshot 2023-02-23 at 10 34 44

BUT I'm still digging because we have that feature request on the forum, so there is clearly something here.

Anyway, for now I would focus on single file import while we define the problem space (and implementation complexity) for sprite sheets. As soon as I have "conclusive input" I'll create the issue with the list of requirements.

arthuro555 commented 1 year ago

I think this poll is kind of a "self fulfilling prophecy" if that makes sense:

I know many gamedevs that are interested in GDevelop - it's fast for prototyping, it's lightweightness, its accessibility to game designers and artists, its productivity etc. are very intereting for non-beginners too. That potential userbase, although it is currently not very representative of our actual userbase, is in my opinion not to be ignored. If we work towards making GDevelop more adapted for everyone, including experienced gamedevs, GDevelop could gain a lot of users, and a larger portfolio of great games built with it.

Maybe you could try to post those (and other) polls onto broader game dev communities to get insights into the needs and wishes of the general audience (and potential users that we are missing out on) rather than the existing users? (i.a. HelperWesley's Fireside, Games From Scratch, Goodgis's discord server...)

LuniMoon commented 1 year ago

That is completely true. That's why I want to scratch this subject: The who produces what under which context applies to what you mention: if the tool doesn't support X, then people will do their best to work with Y, because X is not supported... which could make advanced users perceive the tool as "for prototyping only". As you can imagine, that's a parallel subject/discussion that I follow when it pops... (there is nothing wrong to be a "prototyping tool". The question is "what makes a prototyping tool a kick ass prototyping tool?"). As we also want to support advanced "not only prototyping" usage.

What I am trying to say is (because we're leaving the "Bulk import" subject):

Silver-Streak commented 1 year ago

Honestly, a "perfect world" solution would be GDevelop's format for sprites in exports/builds to always be some kind of sprite atlas/spritesheet via both of the following:

LuniMoon commented 1 year ago

Update: A discussion is going on in the forum about sprite sheets and frame by frame. I encourage future readers to head to that topic for an updated version. End of february 2023: users seem to export their animations mainly frame by frame.

Indeed, a solution that integrates both (importing frame by frame and/or sprite sheets) would be great, but we still have to find a way to slice the sprites evenly without having to be too technical (aka an 8 year-old kid could do it).

Until then, the bulk import's scope will apply to frame by frame only.

D8H commented 10 months ago

Solution suggested

We want to allow users to be able to import pngs in bulk and automatically categorise them in different animations:

"Must-haves": (Mandatory scope of the solution):

  • Users should be able to import their local files

    • The system should be able to work with different naming conventions. _Indeed, when we're Contributing assets to the GDevelop Asset Store , the technological solution demands a specific naming convention. The problem is that artists are not always following these rules, OR their animation softwares export with a completely different naming convention (often starting frames with "00" instead of GDevelop's "1")._
  • The system should be able to recognise if the animation has only 1 frame or more, and categorise them accordingly. We've observed that animations can have from 1 (used to manage backgrounds, environments, or GUI status) to more frames (traditional frame by frame animation). Here's an example of animations with a single frame:

Importing frames of an animation is already possible in one go:

image

Importing animations (or even objects) automatically could work by detecting repetitions in the files names to guess object names. It only works if the object has several animations. For objects with only one animation a specific separator must be given by users or they would have to fix the names manually if it's not cut correctly. But, I guess objects have often several animation or are a still image so it should be fine.

iondiode commented 8 months ago

Does this work with the asset store? it doesn't appear to in a recent version, shift-click, or ctrl-click all seem to add just a single frame at a time. It would be great if we could do bulk import from the asset store.

image

D8H commented 8 months ago

Does this work with the asset store? it doesn't appear to in a recent version, shift-click, or ctrl-click all seem to add just a single frame at a time. It would be great if we could do bulk import from the asset store.

No, it's easier to get a full object from here:

image

iondiode commented 8 months ago

@D8H Thank you!

LuniMoon commented 8 months ago

@D8H I am closing this issue because the solution that you implemented for frame import resolved this request. 👍