Problem I've had with Pencil2D internal player

When using Pencil2D and building an animation the animator is directly working with the Editor. But when you need to look at the animation, we play the animation. The diagram below shows the data flows within and the input from external files and output to external files.

The existence of the external files is obvious, but the existence of the of the Player File is not. Users imagine that when the press the play button above the Timeline that the player simply displays the .pclx file on screen.

But using the .pclx file would be too complex and Pencil2D would struggle to display it fast enough. The Player File is the layers with the .pclx file compressed onto a single bitmapped layer. If there are Vector layers then these are converted to bitmapped format before being included.

Furthermore Pencil2D does not provide the user with any indication that the process of producing an internal version of the animation exists or when it is happening. The result can be confusion, because the user doesn’t see what they expect, when the play button is pressed.

If the animator makes a change, which may move an element in the animation a significant distance in a number of frames. They then press the Play button. The initial frames may reflect the change and the later ones may not. An experienced animator will probably realise that they’ve prematurely press the Play button and will then wait a suitable time and then press Play again. The less experience animator, may at this point panic. I my opinion it would be better to use an external player. There are many advantages to this, these include the playing of sound, which is properly synchronised with the drawings. The built in player, there is a delay between triggering the sound being played and when the sound is heard.

Some animators reduce this latency, by splitting the sound files into a larger number of much smaller one. But some then tell us that the limit of 64 sound files within a project needs to be increased.

If the user has a powerful computer, then the sound latency and problems specified below will not be a serious problem, but for users of less powerful systems, the problems will be more severe.


These problems include frames where editing is being done, the select lines will appear when the animation is played using the internal Pencil2D player. Further more if the animation is exported as a .Mp4 or Animated GIF file these lines will also be there. But if a second copy of Pencil2D is loaded, memory allowing and the .pclx or .pcl files from the animation are imported into the second copy of Pencil2D these glitches will not occur. This to me indicates the information which causes these problems are encoded in the temporary files.



The third problem area is that Pencil2D allows animators to edit frames within a layer which are not define. In the top images all the frames are define on the Bitmap layer and in the lower, we are working in two’s i.e. only every other frame is defined. The defined frames is marked on the timeline with a rectangle.

There is some confusion amongst Pencil2D animators, in that they refer to the defined frames as Keyframes. Keyframes are sometimes called Extremes. These are frames where the motion reaches and extreme of motion and then reverses, say a bouncing ball reaches the top of it’s bounce. All of the frames between this top of bounce and the point where the ball hits a hard surface are called Inbetweens, sometimes shortened to Tweens.

  1. If you edit these undefined frames, then Pencil2D won’t give you an error message, and when played using the internal player they play as if valid, or if you Scrub the Timeline with your pointer you’ll get what you expect to see.

  2. However if you save the projects as either a .plc or .pclx file and then leave Pencil2D, when you reload Pencil2D and then reload your saved file, the resulting animation will not be as seen before saving and exiting Pencil2D.

This is because in case 1 what you see is controlled by the internal files and in case 2 by what is saved in the .pcl or .pclx files.

A similar problem also occurs when the animator is using the Camera move to move a drawn image across the screen, if you want to adjust an intermediate frame, then you need to define an intermediate frame in a reliable manor. Then add an extra frame on the Camera layer and adjust the position on this.

If you want to see this motion using the internal player, my advice is add an additional layer, say called Dummy and add a frame in every position of the move. Without this hack, you’ll sometime play a sequence where you expect a smooth motion and instead get a jump from start to finish. If you export the animation as an Animated .GIF or .Mp4 the motion will be smooth. As an animator with plenty of experience of using Pencil2D, the above problems don’t cause me problems. This is because I’m aware of them and know how to overcome the problems they might cause a less experienced animator.

To me it is obvious that the problems exist in the information stored in the temporary files with Pencil2D. The images shown using the internal player appear to be screen grabs, as to the images incorporated into the .Mp4 files.

Just a thought, many early animation packages which ran on PC computers produced the video files using the control file and the other stored files. In the case of Pencil2D these would be Main.XML and the frame files in .Png or .Vec files. This would probably take a little longer, but the resulting animation would produce better results.

These are my thoughts and I realise that they are not a quick fix. I am in no way making a criticism of the Pencil2D group. The work around is to save the work as a .plc or .pclx file and then reload and then output as a final animation as a .Mp4 file.

Hi. I see you’ve taken plenty of time to write a very interesting commentary on these issues and how Pencil2D could be better. Thank you for that.

I have not been able to read entirely (I will later tomorrow hopefully), so for now I’ve only helped by removing the automatic timer to avoid this thread being locked by the system.

Personally, I think this is a discussion that needs to be had, since I myself have asked for a player-like feature for years to finally get rid of the plethora of user experience issues when delivering playback to a user.

That said while I’m understanding of technical terms, I’m not a programmer so I can’t answer you specifics, however I do think the PCL file and it’s layout of data resources is key regardless of whether raster or vector images are used as input for a potential player feature.

Most commercial software I’ve used have had a similar document structure to Pencil2D (XML Document + custom vector / raster image files). I’m specifically talking about apps like Adobe Animate, Toonboom Harmony, LostMarble’s Moho or even the freely distirbuted OpenToonz (Toonz being the commercial product from Italy)

Those apps also leverage vectors more efficiently to minimize the shortcomings of their architecture so they aren’t as apparent to users, but they always preload / prerender / cache, low res “screengrabs” (screen buffer dumps) or optimized data into a video format (swf for Animate) to create the animation preview in a dedicated internal player or window.

In the case of Pencil2D I would hope we could use, as you hinted, the actual raw files from the file as input for that as long as we transcode them to a compressed or smaller proxy version of themselves.

Let’s hope the devs can find some time to review this and reply in due time since, even though they’ve kept improving a few things over the past months, I know they have very little time to work on the project as they would like, myself included.

1 Like