Demand project name and location at startup

Hi All,

When I think of what we want to implement in Pencil2D, and the feature requests that users give us, I end up with one thought: We’ve got to get a better hold of the user’s animation process, without the user notices it.

For the user, it should be a good and mostly intuitive software, that is easy to use, and gives a lot of possibilities. A software you would recommend to others.

For the programmers and maintainers, it should be a codebase that is easily maintained, and can be altered and expanded along the road, because we know the location of every information needed.

So - I think that we have to do like Unity, QtCreator and the like.

If we, when the user opens Pencil2D, require a project/scene name and location folder, which will be the root of the user project, we can more easily track all changes and save the needed information, without disturbing the user in his/hers work process. We should look at the user animation as a collection of assets. A layer is an asset, a key frame is an asset, a palette is an asset, and an audio file is an asset.

One example is instantiation of frames. Information of which frames are instantiated from which key frame can be kept in a file. We need the information, so the software works flawlessly, and the user will not notice that we save the information in a file.

We could have a ‘palette’ folder for user defined palettes, a ‘layer’ folder for layers and so on. Then we could save temporary files in the background, which could be good for both us and the user, and without the user noticing it.

In my view, this would lead to an easier maintainable codebase. What do you think?

@davidlamhauge we already do some of what you’re suggesting. A pclx file works as the root of a project to which holds all the information. It contains an .xml file which keeps references to all layers and keyframes. A palette.xml file which contains only information about the palette. Bitmap layers are stored in separate png files and vector uses its own .vec format.

Currently it looks like this:

We could move each thing into their own folders and it would probably also make sense to some extend but compared to say a Unity project or similar, the user is not supposed to want to look into their pencil project. They should only care about animating.

We’ve also talked about adding a splash screen/project setup when the application starts but we all like the fact that you can begin animating immediately, without the need to do any configuration. it should be about animating, not setting up the project. Want to give the software a quick spin? sure just fire it up and begin drawing immediately.

This is something we’re constantly working towards but it’s not a route 66 scenario, unfortunately. A lot of things need documentation and there are still parts of the codebase which none of us has touched yet, like the vector engine (well except breaking it)

I however don’t see the correlation here between the project structure and maintainability as a developer?

I too like the fact that you can start animating right away, but until the user saves his work into a file, you have to hold everything in memory. If we could persuade the user to spend 15 seconds to pick a name and location, we would have a place for temporary files, plus of course the pclx-file.
If this is something you have discussed, and you all like the current practice, then maybe we/I should let it rest.

No we actually save the content to a temporary location, which is different depending on the operation system. It is not stored in memory until you save.

1 Like

Hi David, since CandyFace has answered part of your suggestion (which is very interesting!) I’ll tackle the other part:

As always project organization this comes down to user choice. I agree that for a more professional setting we should ask the user how they want to format their scene and their project beforehand, particularly for more structurally complex projects, but sometimes even my colleagues once in a while just want to sit down and draw without worrying about the scene settings; this is because the volatile nature of creative ideas, where struggling with technical walls will make you lose track of them :stuck_out_tongue: but seriously, even Flash or Digicel’s Flipbook being as easy as they are, become mildly annoying at startup when you just want to draw pr show a potential idea to your work colleagues.

Sometimes I use Pencil2D as an annotation tool with animation capabilities to explain concepts to my colleagues during videochats for our current projects, and there’s nothing I hate most than having to fire-up Flash or Toonboom (which takeabout 5 minutes to launch) and then ask me what do I want my scene size to be when I just want to scribble how the path of action has to work in a given animation.

As a review of how other software handles project setup, Toonboom automatically sets the projects folders so it doesn’t become a chore to the artist, everything is handled by the software except for the custom made libraries in turn all the resources are moved to and referenced from these folders. Opentoonz handles this a bit differently, as you can define a starter project folder to start from, but you have to create a scene project everytime you open the program, and even if you cancel that you have to create a level (resource layer type) before starting to draw but also the resources are references from the folders and not imported as bloat for the main TNZ file.

TVPaint on the other hand starts automatically with a new untitled scene opened for you and a drawing layer ready, and you can customize how that default scene will start up everytime if you’re in a particular project, but the resources will be loaded into the final file which is a disadvantage. Lastly Flash does not have an outward project folder setup, in that sense Pencil2D behaves similarly, since .fla files are compressed zip packages that have all the resources inside of them, which is why those files also tend to corrupt so easily, but you do have the ability to use “external” flash files as libraries to alleviate the bloat.

Anyway as for possible solutions here’s my take:

I feel we DO need to ask the PRO user for project and scene settings for individual projects, and the latter has been considered on the proposal I made for having a preset manager to be asked at startup. Along with this we could also have:

  1. An optional toggle to switch between “quick startup” or “preset startup” on the preferences. If you know you’ll be wanting to sue Pencil2D fast and want to change the settings later, just toggle it oFF, otherwise leave it turned ON
  2. The possibility to have the resources organized in a more structured way, that is, in other folders, and adding more “official root folders” to the structure if we want to.
  3. Potentially tell Pencil2D in which root folder we want to store certain type of resource we bring into the editor or create inside it. Things like vector images, bitmap images (bgs, color models, character sheets, etc), sounds, palettes, timing + xsheets data (this is for another proposal I have to allow conversion between CSV data to keyframe data)

Note: The PCL format (when you save as you can use the legacy format instead of PCLX) is basically the same XML project file but it’s not packaged or “zipped” along the resources, so in that way as CandyFace mentioned it’s already a potential candidate for a project folder, think of PCLX more as the portable project folder as if you were to collect the files there in order to share it with colleagues to split up work.

I see Pencil2D as a software for both the pro and the amateur, and everybody in between. Everyone should feel welcome when they startup the software.
I don’t know the software’s you mention, but they are heavily referenced in the discussions, so I take it that they are a kind of industry standard.
I think it would be a good idea to have a Startup screen. In stead of enabling/disabling it in the preferences, I would prefer that Pencil2D started up with a full Startup screen, where you could choose your settings, name and location, before you press ‘OK’. Beneath this ‘OK’-button, there could be a button with the text ‘Not now. Let me animate…’, for those who just want to get ahead. Maybe that could please everyone?

1 Like

@davidlamhauge yes I agree, the software has been slowly envisioned to be just as you have described and hopefully we can maintain the same ease of use and accessibility while making it powerful and appealing enough for pro animators.

A startup screen would most definitely be required to accommodate presets and a starting location for the project (which would force the user to save for the first time as well), but when I mentioned the optional preference I didn’t mean it to abolish the startup screen. The optional setting would be similar to the classic “do not show at startup” checkbox which appears on most start-up screens in the aforementioned animation packages.

An artist might take some time to “discover” what kind of settings are most appropriate for the projects they create regularly. Each user will know best if they require the start-up screen to show up again or not so after they have the basic template figured out it becomes inefficient to ask them the same every time. That’s why I commented on the optional setting.

Of course if the user disables the start-up screen it won’t show anymore, so they also would require the ability to re-enable the option, and the best place would be on the preferences.

We could also go the extra mile and make it so when the user disables the start-up screen they are asked to use a custom preset so Pencil2D always open the same type of document (same size, fps, etc). If the start-up is enabled the custom preset won’t be used.

1 Like

@JoseMoreno A startup screen with the “Do not show at startup” could be a good solution.
To me, it is a must that Fps and Camera Width and Height are saved in Settings, before the startup screen is implemented - if it will be :wink:

@davidlamhauge As far as I know the FPS and Camera size is saved to the main.XML file. I’m looking at one I made just now and the tags are there to describe those values. Is this what you mean? or which specific settings are you referring to?

1 Like

@JoseMoreno No that is not what I mean - unfortunatly. I talk about the settings that are defined in a file called ‘pencildef.h’ in the project.
If I had saved your scene it would probably have <fps value=“25”/> and the the Camera layer would be 1280x720, but these values only relate to this scene. When I press Ctrl+N for my next scene, the fps will be back at 12 and the Camera layer would be 800x600.
I would like Pencil2D to recognize that “Oh, this guy works in 25 Fps and 1280x720 as Camera size. I’d better store these values for his next new scene”. We save many settings in Pencil2D, and I am puzzled that basic information like Camera/Video size and Fps is not in the Settings.
Not complaining - just wondering…

1 Like

I understand now. To have the default project creation settings be adjustable so a new file can be created with custom values and not hard-coded numbers.

Don’t worry we all have thought about that at some point (the ability to store a previously used setting). This is why it’s important to discuss these ideas with an open mind, and I feel it’s great to have different perspectives to bring fresh ideas into the creation process. Thank you for taking the time to carefully explain what you meant, and I agree with you that such values should be customizable in the file creation code :slightly_smiling_face:

1 Like

And when all these setting are saved from scene to scene, then the Startup screen will be easy to cope with.
There will be a box where you write your Scene name, and that could be it!
Pencil2D has a suggestions for your folder location, your Fps and your Camera size, based on the information stored in Settings. These suggestions should of course be editable.
Such a startup screen would not be a time consumable hell, and those who don’t want it can disable it.

If anything I’d rather have a startup like we have right now, with no interruption but the ability to enable “project setup” in preferences. it should be an option to enable more settings, not a setting to make first time users life easier.

We already have a popup that appears after making 20 or so strokes that reminds you to either save the project (to enable autosave) or disable nagging. UX wise I do not like that kind of obstruction myself because it comes out of nowhere and most users don’t read the explanation… they instead find it extremely annoying and keep drawing until it appears again, because they do not want to think about setting up the project, nor figure out a name or where to save it.

Some time ago we discussed the possibility of using a launch file, like Blender “use as startup file” to save the settings of a project. This avoids the whole dialog popup annoyance that will nag first time users and it enables the freedom of advanced users to set their preferred settings.

@CandyFace I too think this popup while you are working is annoying. If it is like you say, that Pencil2D saves a file anyway, in a temporary folder that is platform-dependent, then this annoying popup is doing nothing good.
I would like a startup screen as described above, but I could easily live with a startup screen that you had to enable yourself, or a section in Preferences that we call “Startup settings” or something like that.

1 Like

Just to complement this discussion please note that we have already discussed a startup screen, and all the important details that should be asked to the animator in this issue as well

I think instead of patching things up it might be better to draft a complete proposal for all of these interconnected necessities.

As you can surmise from the github discussion there were considerations even for “template” files, start-up screens and what not, so please consider this information for any future drafts for a more thorough proposal :slight_smile:

As for myself I don’t mind the start-up window as long as I can toggle it off AFTER I have learned the program and the software has learned what my “most used” requirements are, but when I need to change it it should be as easily changed from within the program as it was from the start-up screen (for example, don’t force me to re-start pencil2D just to get the startup screen again to change the settings)

I personally favor the template /start-up file because it’s a tangible element that people can prepare, but again this needs to be discussed once more with the objective of finalizing the proposal for future implementation