Tilemap performance is lacking? [SOLVED AS HELL]


(John Andersson) #21

lmao

Very informative and enjoyable read. Thanks a lot for that :slight_smile:


(Ultima2876) #22

Note that although Stage3D may help here, it will not instantly solve all of your performance worries. It has performance bottlenecks of its own (particularly uploading textures) so be aware of that when I do finally get Stage3DPunk up here.


(John Andersson) #23

Are those bottlenecks ever going to be fixed? :slight_smile:


(Ultima2876) #24

Well, in terms of Stage3DPunk a LOT of stuff is going on behind the scenes to minimize the impact of the bottlenecks so it’s not likely to get much more optimized on that level, however Adobe have been known to improve Stage3D performance with some runtime updates (or offer new techniques to improve performance, such as RectangleTextures in Air 3.8). So I guess it’s not impossible that those bottlenecks will be reduced, but generally they are just implicit in how Stage3D/Hardware acceleration works; uploading textures and changing GPU state is just limited by the way the GPU pipeline is designed. This is no different to programming natively with OpenGL and C++; you have the same performance bottlenecks (though to a lesser degree in most cases).

Basically, those bottlenecks tend to be the same bottlenecks you’d face making games on any platform, with any engine. The real ‘fix’ for them is simply more powerful hardware.

But it means that in some cases software rendering performance will actually be better than using Stage3D. A good example of this is text that constantly uploads to the GPU; in regular blitted FlashPunk this doesn’t really have a penalty since FlashPunk blits everything to a buffer anyway so it’s just doing its normal thing. But with Stage3D it will crush your framerate fairly quickly because the GPU prefers to draw stuff uninterrupted. If you start uploading textures every frame or having a lot of state/texture changes, it stalls the GPU and things can get slow. But if you treat it right, you’ll be able to destroy software blitting performance in terms of raw muscle (it’s easy to get 10000+ sprites going in Stage3D on modern hardware if you have thought it through).

Stage3DPunk itself tries its best to abstract these more difficult concepts away from you, the developer, so you don’t have to worry about it but it can’t do that in every situation.