"they have officially stopped Paper2d development " what ???
That’s not official. Lol. Let’s not get to wrong assumptions.
Noland is not working with it due to Paragon business but that does mean it’s dead. There are still tons of stuff to do at 3D so.
Also the problem you have is a general bug I believe, not something related to paper2d.
Yes it does the exact same thing in 4.11 as well. I dont think that there is a reason to create another bug report. More unnecessary work for the guys at answerhub.
It would be better if you just contributed to the existing report: 4.10 Vram consuption. - UE4 AnswerHub
And although i like to see things as grey rather than black or white, its been more than 5 months(if i am not mistaken) without a single improvement commit… For a engine that moves in the speed of light that seems like an eternity. And we still do not know when they will finish Paragon. It might as well be another 5 months. And even then nothing is guaranteed :(.
Only time will tell!
Don’t worry. The thing is, your problem is not related to Paper2D, but related to texture streaming in general.
Now here are the stuff that I have tested on 4.11 so far;
Even if I delete everything in the streaming levels, I still get the error as if the textures are still used. But if I close and reopen the editor, the error goes away.
Even if I delete the maps themselves, the error is still there. Again closing and reopening the editor fixes it for me.
Deleting the half of the textures gets rid of the warning without closing and reopening the editor.
I DO NOT GET WARNINGS with “play as standalone game”. Everything seems to be working great. Even when I don’t make the streamed levels unload, I still do NOT get the warning.
I do NOT get crashes by any means.
Unused textures are still unused for me. As I mentioned before, having all levels empty does not cause the warning for me. I am sitting at 30mb max usage with your project. Ofcourse as mentioned before again, I had to close and reopen the editor.
— Personal Conclusion —
It seems the bug seems to be only related to Editor only. Raising the pool limit for the sake of being able to package might be a good solution.
I am still packaging right now though so I dont know if that would work etc.
- Though I do not know why it crashes for you. You might need to give your game to Epic eventually, regardless of it being large or small so they can see the crash themselves.
Edit: I was able to package the project, ofcourse 9000+ warnings of the sprites that it already gives when you open the project, but other than that, it seems fine.
Edit 2: I think the biggest reason why you get those warning is, there must be a bug with streaming levels, just a guess. A wild one.
Thanks for taking the time to investigate this! Really appreciate it.
Problem is that although i managed to kind of replicate this and came to the same conclusions as you, in my actual project nothing of the above happens. In 4.10 i still haven’t managed to build or play as standalone game without crashing.
My game in its current state has more than 7000 textures, dozens upon dozens of BP’s/UMG’s , Media textures, plugins, 12+ levels etc. Everything is referencing one another and it is a nightmare just to even try and delete anything.
One day i got so mad that i spend 6 hours(!!) trying to delete assets and even down to the bare minimum (gazilion warnings of course) it still had the same issues.
I am in an rather unfortunate situation that my game is starting to become so big (for a 2 man team that is) and because Paper2d has never been battle tested before in a “real” game, this results that i have no guidance or feedback from anyone. I have to create my game and in the same time debug the engine.
I will keep trying.
I feel you.
I had the problem with my own project and I had to send over to them to check it out. Even if your game is 10 GB, I really think you should send it.
I hate to tell it that, the template you gave us won’t fix your problem. Because it is obvious that the warning is there because all the streamed levels are loaded instead of, well, being streamed. So every texture is used. The warning makes sense then. It even lets me package regardless of the warning, which is fixed in standalone mode. So what you need to do is having the fix for your own game.
I am not the guy to tell what to do, I know little. But I am sure Epic can handle it. I suggest finding a way to send your FULL game so they can get the crash themselves.
Only tested the editor behavior regarding texture resources, I can confirm that once texture been loaded into editor for editing, it will stay in memory until editor restarted.
- Fresh opened editor, texture memory usage is normal
2) Open or simply right click on 100 textures, texture memory usage up 400M, and stay that way
3) Hacking engine source to force GC those in-memory textures, texture memory usage back to normal
It seems that behavior is actually by design (to boost editor performance by minimize loading time is my guess), so it might be too much work to change it in engine level. I would image a resource tracking plugin would be the solution: to track and unload resource when necessary.
Thank you Nate!
If this is an editor only issue then i dont mind since i have plenty of RAM to spear. Thing is that i get crashes from my GPU not my OS.
I still haven’t figured out if these two are related but in any case could you please do me a favor and select all 2000+ assets? Then Right click>Bulk Edit. When the window opens up (it will take a while) change everything to UserInterface2d? (under compression settings).
I want to see if it crashes on your system too.
Mr Roccinio, I know you are expecting results from Mr Nate, though until he gives his own results, I want to give mine.
I do not get crashes, but it might be because my laptop is a high end one. I get screen freezes and response skips from laptop if I do what you request. So it is like the laptop is barely hanging on instead of crashing.
It is also correct that if I select 2000+ textures I get 12x more memory usage which is the screen freeze limit for me. It also does not get back to normal as long as I don’t restart.
I assume your crash is due to low memory. Maybe you should have an empty level opened up just for the sake of packaging after you open the editor.
Thank you Mr.Achilleon! I do really enjoy the kindness and class of this community!
I have 32GB of Ram. A gtx980 with 4GB of Vram and an 8 core processor. I believe that mine is crashing because i work on a 6000x1080p resolution. So the extra Vram needed to run this resolution is missing from my system and not from yours.
I cant think of another logical explanation why it would crash on a high end PC and not on a high end laptop.
In either case there is something clearly wrong here because Unreal shouldnt keep in memory all those textures regardless if it resets after an exit.
I can imagine buying 64GB of RAM soon if i continue to add more artwork
And if any of the Devs is reading this please note that i am creating a 2d game and not the next Skyrim! XD
Emm… I got 8GB Ram xD
Video card is cool though. Ofcourse I don’t know how much that resolution needs, but I stand at 1900x1080, classic screen.
It is true that if I work for hours without closing the editor, I get to see 10k memory usage. So maybe you shoud package right after starting the editor and doing nothing.
My video card die while try to load 2000 textures into memory! Clearly that action triggers hardware failure: Video memory integrity test discrepancy. Sorry that I might not be able to help until my new video card arrived.
But before that drama happen, I did manage tested the memory behavior in standalone mode. I tested switching level between 2 levels, one with 1000 paper sprites, another is the default empty level came with paper2d template, and the memory will reset to normal each time switch to empty level. (Tested in 4.11)
Nate i am so sorry! I feel so bad now. I never though that this could cause hardware failure.
Please forgive me.
Roccinio, please dont feel bad, it’s definetly not ur fault, actually I am glad it happened when my PC still got warrnty.
Now i am relieved!
Hopefully they will get this fixed soon, before more innocent GPU blood is in their hands!
Back to topic, one thing you might aleady know, nevr trust the texturememory usage number inside editor PIE for it includes every textues you happen to edited, only in packaged game or at least in standaone play mode that value reflecting what really used in game.
If you do want to use texure streaming, make sure you setup mip maps for all the textures which might help on reducing vram usage.
And is your level relly need all 5000 textures?
It is a 2d game. By default all of my settings (2Dpixels,No mipmaps,UserInterface2d) do not use them anyways.
My game has currently 12+ levels. Every level uses a percentage of the textures i have on my project. For example the Snow world does not use the lava and mountain textures.Nor does the enemies.
I have a persistent level that holds all levels inside it.I load and unload the levels that are not needed for gameplay, leaving me with only one map at a time (and the persistent level that is empty) I never wanted to go this way because it is retarded for a 2d game but i had no choice since i cannot play a video or music because loading in Unreal is not asynchronous. Everything would freeze.
I tried to explain to them that for smaller games this is not ideal but to no avail. So i went with the only solution that worked. Level streaming.
And this is where everything goes south. Because the system holds everything into memory and it has to load my persistent level when the game begins everything goes to …hell! The persistent level has ALL the levels that use ALL the textures. But each level uses a small percentage of them.
The first thing i do on the persistent levels BP is . Event Begin Play>Unload (everything that is not needed so i can keep my main menu) and then all the rest. But it keeps everything regardless resulting in a Vram crash!
And even if i figured out a way to load an empty map in the beginning as Ach suggested it wouldn’t matter because after a few levels it would still crash because IT NEVER RELEASES THE FREAKING TEXTURES FROM MEMORY! (on the same play-through)
Do i make any sense?
EDIT: I cannot package my game or run it as standalone game. It crashes. If i had to guess it is because of the above issue. But who knows?
I believe what you need to do is this:
Do not make the persistent level stream all the levels. Instead use the persistent level to load an empty level that can stream other levels. This way the streamer level can also be unloaded. If you need to change your level, then you can pop up the empty level to fetch the new level you want to play again, then unload it back.
Use the now-empty persistent level to play your loading videos etc.
Maybe this would work? I never worked on streaming levels but, I just think the way you do is wrong for sure. A persistent level should not load everything in the first place.
Also to add, if you don’t mind getting a little C++ on your hands… you can try doing this
I dunno how long it takes to load your levels but this gives you access to a loading screen to display something in motion while the user waits. might be a good alternative to level streaming if you’re just using it for loading purposes.
Yes I’ve seen that a couple of weeks ago. It just got released. It is a year too late for me now and the problem is that I will need to spend days to change everything back to a single map per level logic. And I am running the risk of breaking stuff. You cant just go from a 60% completed project to square one again. I am just one person doing this. And in all honesty I think that I will just quit. I had enough of constantly re creating my game because Unreal is half finished (for paper2d that is).
And lets say I byte the bullet and go for it. How can I be sure that this is the problem and not something else??
But i really appreciate the suggestion.