Orama-Interactive / Pixelorama

Unleash your creativity with Pixelorama, a powerful and accessible open-source pixel art multitool. Whether you want to create sprites, tiles, animations, or just express yourself in the language of pixel art, this software will realize your pixel-perfect dreams with a vast toolbox of features. Available on Windows, Linux, macOS and the Web!
https://orama-interactive.itch.io/pixelorama
MIT License
7.01k stars 380 forks source link

Playback and Preview of Selected Frame Gifs and APNGs are Slower Than They Should Be #1001

Closed gruelingpine185 closed 6 months ago

gruelingpine185 commented 6 months ago

Pixelorama version:

Pixelorama v0.11.3-stabe

OS/device including version:

MacOS Sonoma (v14.3)

Issue description:

I'm making a sprite sheet for game with other people an frequently export GIFs (all frames) so they can see the progress and give me feedback. I've gotten to the point were I have multiple animations that I'd like to present separately so they wont have to watch an idle animation and some others before being able to see the animation I wish for them to see. Ideally, I would need to go to File > Export as... > Image > set frames to "Selected frames" and set filetype as GIF. Afterwards I can preview the GIF or export it and the frame rate stays consistent with what I see in-editor and when the "All frames" option is selected. The issue is that when using the "selected frames" item on the dropdown menu, the frame rate drops as if the animation is playing in slow motion. This occurs both in preview and in the GIF after exporting. Using "All frames" does't do this at all. Even after toggling between "All frames" to "Selected frames".

https://github.com/Orama-Interactive/Pixelorama/assets/66073333/495e934e-830a-455b-9674-1d6d05ed08e9

Steps to reproduce:

See above.


On a side note, being able to see the desktop and images you have as references without having to switch between applications is a really cool feature. I just found out about it while trying to find a solution to this.

Screenshot 2024-03-29 at 3 39 02 PM
Variable-ind commented 6 months ago

Hy, i tried on online version, it seems to be working fine there, could you check it as well?

https://github.com/Orama-Interactive/Pixelorama/assets/77773850/0180e83d-1ad9-46dd-8f0b-d807d35f51ca

gruelingpine185 commented 6 months ago

I deleted Pixelorama and reinstalled it (v0.11.3-stable) via Homebrew. I believe got my former Pixelorama from the itch.io page. I don't have this issue anymore

Variable-ind commented 6 months ago

I deleted Pixelorama and reinstalled it (v0.11.3-stable) via Homebrew. I believe got my former Pixelorama from the itch.io page. I don't have this issue anymore

nice, i'm curious, both of them should be identical (code wise), could you re install and tell me if itch version still has this bug or not?

gruelingpine185 commented 6 months ago

sure I'll do the browser version first.

gruelingpine185 commented 6 months ago

Ok. The browser version works fine. Now for the desktop version from itch.io...

gruelingpine185 commented 6 months ago

The itch.io desktop version has the issue with the frame rate.

https://github.com/Orama-Interactive/Pixelorama/assets/66073333/fd423183-292d-48e4-80aa-6252cde1e059

Variable-ind commented 6 months ago

The itch.io desktop version has the issue with the frame rate. Screen.Recording.2024-03-30.at.3.19.50.AM.mov

interesting..., what about 0.11.4? https://nightly.link/Orama-Interactive/Pixelorama/workflows/dev-desktop-builds/0.x

gruelingpine185 commented 6 months ago

The v0.11.4 build works just fine.

Variable-ind commented 6 months ago

The v0.11.4 build works just fine.

Nice, then we can close this safely Note: For the record, i just tried the 0.11.3 offline version as well (on linux), it didn't seem to have the bug, so i assume this is something specific to MacOS (but we currently lack the means to test this thoroughly on that platform). I also don't know what changed that fixed the bug, so this may need investigating.

https://github.com/Orama-Interactive/Pixelorama/assets/77773850/a1c6b00f-8505-4843-8f16-5dd950d31b30

gruelingpine185 commented 6 months ago

Sounds good. Btw Your suicide explorer game is fun :)

gruelingpine185 commented 6 months ago

The v0.11.4 build works just fine.

Correction* I'm still using v0.11.4-rc2, but it turns out that the issue persists. It's odd that it didn't happen when I tried earlier. I'll probably have to try the web version again also to make sure it doesn't happen there. I do understand that testing for MacOS isn't where you'd like it to be right now, so if you'k like me to check on a few things for you let me know.

gruelingpine185 commented 6 months ago

I just discovered that frames are being duplicated when using Selected frames:

sprites main !? ➜ ls frames
player_0001.png player_0007.png player_0013.png player_0019.png player_0025.png player_0031.png player_0037.png player_0043.png player_0049.png player_0055.png
player_0002.png player_0008.png player_0014.png player_0020.png player_0026.png player_0032.png player_0038.png player_0044.png player_0050.png player_0056.png
player_0003.png player_0009.png player_0015.png player_0021.png player_0027.png player_0033.png player_0039.png player_0045.png player_0051.png player_0057.png
player_0004.png player_0010.png player_0016.png player_0022.png player_0028.png player_0034.png player_0040.png player_0046.png player_0052.png player_0058.png
player_0005.png player_0011.png player_0017.png player_0023.png player_0029.png player_0035.png player_0041.png player_0047.png player_0053.png player_0059.png
player_0006.png player_0012.png player_0018.png player_0024.png player_0030.png player_0036.png player_0042.png player_0048.png player_0054.png player_0060.png

I only have 9 frames in my project. My guess would be that the other 51 are used to fill a full second (1 fps). When using All frames, it only creates 9 frame (one for each in frame in the timeline) and plays at the specified frame rate (6fps in my case). This would explain why the gifs are different.

I haven't tried to see if the browser version or the itch.io version does the same.

Variable-ind commented 6 months ago

I just discovered that frames are being duplicated when using Selected frames:

sprites main !? ➜ ls frames
player_0001.png   player_0007.png player_0013.png player_0019.png player_0025.png player_0031.png player_0037.png player_0043.png player_0049.png player_0055.png
player_0002.png   player_0008.png player_0014.png player_0020.png player_0026.png player_0032.png player_0038.png player_0044.png player_0050.png player_0056.png
player_0003.png   player_0009.png player_0015.png player_0021.png player_0027.png player_0033.png player_0039.png player_0045.png player_0051.png player_0057.png
player_0004.png   player_0010.png player_0016.png player_0022.png player_0028.png player_0034.png player_0040.png player_0046.png player_0052.png player_0058.png
player_0005.png   player_0011.png player_0017.png player_0023.png player_0029.png player_0035.png player_0041.png player_0047.png player_0053.png player_0059.png
player_0006.png   player_0012.png player_0018.png player_0024.png player_0030.png player_0036.png player_0042.png player_0048.png player_0054.png player_0060.png

I only have 9 frames in my project. My guess would be that the other 51 are used to fill a full second (1 fps). When using All frames, it only creates 9 frame (one for each in frame in the timeline) and plays at the specified frame rate (6fps in my case). This would explain why the gifs are different.

I haven't tried to see if the browser version or the itch.io version does the same.

By this I can say that it isn't the speed that's changing, it's the frames that are duplicating when selected frames is turned on, which is giving the illusion that the frame is taking longer time than it should (when it's actually multiple duplicates of the same frame)

Variable-ind commented 6 months ago

I just discovered that frames are being duplicated when using Selected frames:

sprites main !? ➜ ls frames
player_0001.png   player_0007.png player_0013.png player_0019.png player_0025.png player_0031.png player_0037.png player_0043.png player_0049.png player_0055.png
player_0002.png   player_0008.png player_0014.png player_0020.png player_0026.png player_0032.png player_0038.png player_0044.png player_0050.png player_0056.png
player_0003.png   player_0009.png player_0015.png player_0021.png player_0027.png player_0033.png player_0039.png player_0045.png player_0051.png player_0057.png
player_0004.png   player_0010.png player_0016.png player_0022.png player_0028.png player_0034.png player_0040.png player_0046.png player_0052.png player_0058.png
player_0005.png   player_0011.png player_0017.png player_0023.png player_0029.png player_0035.png player_0041.png player_0047.png player_0053.png player_0059.png
player_0006.png   player_0012.png player_0018.png player_0024.png player_0030.png player_0036.png player_0042.png player_0048.png player_0054.png player_0060.png

I only have 9 frames in my project. My guess would be that the other 51 are used to fill a full second (1 fps). When using All frames, it only creates 9 frame (one for each in frame in the timeline) and plays at the specified frame rate (6fps in my case). This would explain why the gifs are different.

I haven't tried to see if the browser version or the itch.io version does the same.

Do the 51 images appear in preview as well? Also, what about spritesheets? Do they also show 51 images when that happens?

gruelingpine185 commented 6 months ago

Do the 51 images appear in preview as well?

For sprite sheets, if I use All frames, only 9 frames appear. Many more appear for Selected frames

Screenshot 2024-03-30 at 3 42 06 PM
gruelingpine185 commented 6 months ago

Do the 51 images appear in preview as well?

This is for exporting images: 60 images appear in the preview when using selected frames. Only 9 show when using all frames.

Variable-ind commented 6 months ago

Do the 51 images appear in preview as well?

For sprite sheets, if I use All frames, only 9 frames appear. Many more appear for Selected frames

Screenshot 2024-03-30 at 3 42 06 PM

interesting, so my theory is correct, are you on discord? if so, then you could join the pixelorama's discord (https://discord.gg/GTMtr8s). i'll be easier for me to work from there :smile:

gruelingpine185 commented 6 months ago

I am.

gruelingpine185 commented 6 months ago

Resolved and made reproducible. Bug was squashed over Discord.