System Memory error.

inkBotinkBot Posts: 39
edited May 8 in Bug reports
So I was working on my big animation file, and was going to save another iteration of it. But the program gave me an error prompt and refused to save the file. When trying to remove parts of the file I no longer need (selecting them all at once and deleting them) the program outright crashed on me.

This is the error in question (the second time it gave me the error. I didn't have the wherewithal to expand the "Show details" at that time ).



When it crashed I described the same thing in the crash report. My computer's memory at the time was at 34% and of that ~5% was taken up by Pyxel.

Considering the size of sprites that I'm currently working on (including the effects for their attacks and what-have-you, necessitating large tile sizes, making really big canvases), this is a severe flaw for me.

This makes me want to question, is there any possibility of making Pyxel able to handle animations differently if necessary? I know that using the tile functionality to handle the animation in Pyxel is sort of integral to the program, and also kind of the big selling point, but it's simply not viable when you go beyond a certain size. I really like the workflow in Pyxel, but this is a limitation in Pyxels animation handling that I've been running into issues with for a while.

Comments

  • DanikDanik Posts: 634
    Adobe Air has a limit of around 1GB on the total memory that can be used by the program, and sadly I don't think there is any way around it. Very large canvases and many layers can make it go above that, and saving takes quite a bit of memory too when compressing the image data.

    I could add a way to save documents uncompressed to avoid the spike when compressing, but that would just help when saving. Maybe when running out of memory when saving a dialog box could ask if the user wants to save uncompressed instead, because I can imagine it's very frustrating not being able to save.

    I see you have rather many layers, so one thing you could do would be to try to keep the number down as much as possible since the memory used by the canvas is multiplied by that number.

    As you say optionally handling animations differently would probably help, for example a second mode for animations that keeps only the necessary frame data per animation frame and layer, but that would be a lot of work and make the program more complex. I will think about it and see if I can find another solution. 

    Sorry about the trouble this causes.
  • CandyFaceCandyFace Posts: 507
    edited May 13
    @Danik ;
    I assume that the memory limit is because AIR is 32bit? maybe you could provide a 64bit build too, although it's in beta, Adobe did release AIR 64 bit, a few months ago.
    Download Adobe AIR 25 Beta - Adobe Labs
  • inkBotinkBot Posts: 39
    @Danik Yeah, I have quite a few layers. I have my reasons for that, but you're right.

    Does the memory usage from saving count towards the inherent limit in AIR? I imagine it would, but I wouldn't actually know.

    I realize that I'm likely an outlier when it comes to what I'm using Pyxel for at this point, so I very much appreciate that you're so responsive to these topics. If a 64bit version of AIR would increase the memory limit this issue might be moot.
  • DanikDanik Posts: 634
    Thanks @CandyFace, I wasn't aware there was a 64 bit version for Windows in the works, hopefully it will help with the issue!

    @inkBot, yes, there is a memory spike when saving since the compression is pretty demanding.

    I will look into the possibility of making a 64 bit build when I get a chance.
  • I've had the same problem on a 32x32 image. So, less annoying, but if this program can barely handle this...
    ...then I don't know what else to say. :neutral: 
  • gautch Posts: 1
    Im getting an error as well

    Error #2038: File I/O Error.


    Error: Error #2038: File I/O Error.

    at pyx.io::PyxelSaver$/doWriteZipFile()

    at pyx.io::PyxelSaver$/saveDocument()

    at Function/<anonymous>()

    at Function/<anonymous>()


    Any ideas on what i can do?
Sign In or Register to comment.