-
See Optimization and profiling | Manual | Castle Game Engine for notes how to compare FPS.
-
If you really want to compare full FPS, disregaring the fact that some frames drawn were never actually displayed, be sure to set
ApplicationProperties.LimitFPSto 0, otherwise CGE limits them to 0. -
That being said, our Tiled drawing performance indeed can suck for larger maps. This is a larger TODO. The plan is to:
-
Advise loading Tiled maps to
TCastleScene -
Make
DynamicBatchinginclude more cases, such that Tiled maps inTCastleSceneget more optimized.
But that’s a larger work inside CGE.
There is no perfect solution right now that is easy. Some solutions:
A. You can “bake” a static map layers into big images, and rendering them as big images underneath
TCastleTiledMapControl.B. Or you can implement your own map rendering using
TDrawableImage.Drawwith batching.Both A and B of course are far from optimal, as they mean you’re not really “just loading Tiled map into
TCastleTiledMapControland that’s it”.I’m sure that with B, you can achieve the same speed as with ZenGL, as underneath these are really just simple OpenGL calls. As Eugene notes, ZenGL likely does batching as lower level, while our
TDrawableImage.Drawdoes not do automatic batching, you need to pass yourself an array of images to draw to oneTDrawableImage.Draw. In CGE, batching is done forTCastleSceneshapes. -