Hello greg886,
A) Corona SDK will only efficiently handle a certain number of display objects at a time, depending on the device in use. In general, culling becomes important once you pass a few thousand tiles on modern devices. As you approach the performance limits you will have less and less available for other tasks in your app, such as running AI or calculating movement. If your tiles are scaled such that 10 x 15 fit onscreen, a map 3 screens high and 6 screens wide could contain as many as 2700 tiles. Many current devices would have trouble with such a map without the use of culling.
B )Yes, MTE is the tiling engine, Tiled is the app in which you design the actual maps.
C) The display scale of maps is set by the blockScale parameter sent to goto(). BlockScale is a pixel value relative to Corona’s content scaling. As long as the width and height properties in the config.lua stay the same, the map will display with the same scale across all screen sizes. If 10 x15 tiles filled in an iPhone screen, 10 x 15 tiles would fill a 7 inch tablet screen (assuming identical aspect ratios).
I have not explicitly tested the dynamic content scaling using “@2x”, “@3x”, etc, myself, however other MTE users have used it successfully.
D) The primary focus of MTE is displaying and managing tile maps, however as a BETA product it continues to evolve and change. With the release of version 0.844 developers can position tiles with pixel precision in the tile map by using Tiled Objects with the correct properties, so long as those objects are configured to load as Physics Objects at runtime. As the engine grows it will support more and more flexible functionality.
Sprites can be any size or shape you desire. You can move them on a tile-by-tile basis like older RPG’s, or you can move them with pixel precision like newer RPG’s, Zelda, platforming games like Mario, and so forth.
E) Corona’s graphical culling simply avoids rendering offscreen objects, but those objects continue to occupy memory and continue to require a certain overhead simply because they are there (even if you hide them, even if they don’t move). If you have a thousand display objects, or ten thousand, or a hundred thousand, you require more and more memory and resources to maintain all that. In my experience this form of culling is insufficient for the kinds of tile maps MTE was built to handle. The Million Tile Engine entirely removes the tile display objects when they leave the screen. There is no residual overhead left to handle, no load on the CPU, because the display objects cease to exist.
The Million Tile Engine is more than a simple tool for throwing tiles on a screen. A lot goes on behind the scenes to simplify and remove problems which developers would otherwise have to tackle themselves. For example, say you set up movement through a map with a tile scale of 32. If you decide you’d rather display the map with a scale of 72, normally you would have to go through and alter all of your movement code to match the new scale. The Million Tile Engine knows the true scale of the tiles and always moves the sprites and camera accordingly. Changing the display scale of a map is as easy as changing the blockScale parameter.
You can setup your map so that map layers appear “closer” to the camera to create a pseudo-3D effect. Movement in MTE takes account of this. If a certain command moves a sprite by 1 tile in 1 second, it will always move by 1 tile in 1 second, whether that tile appears huge on the screen or tiny, near or far.
For it’s price you’re getting 12,000 lines of code packed with features and functionality, and you’re buying into a product which continues to grow more powerful.