Quote Originally Posted by Ñuño Martínez View Post
I think I don't understand your code. Extending TSprites will duplicate the sprite list, and I don't get benefits.
Not necessarily. It depends on how you are extending the TSprites class. If you are extending it by just adding additional methods to descendant class like in TMovableSprite it won't duplicate list since you are still accessing it through inherited methods or properties from parent class.

Quote Originally Posted by Ñuño Martínez View Post
And it's worst with the TPlayer class. I mean, create a "TPlayer" object will create a new list of sprites, doesn't it?
Yes in case of TPlayer I do create a new array to store additional information that is not being stored in ASprites array.

What is advantage of this?

For instance during rendering phase you only need information about sprites positions, size and orientation. You don't need additional information that you might be storing in your objects like in-game unit health.
Now if you are storing all that information in one array when the data from that array is put on stack the stack would contain the data that you need during the rendering phase and also the data that you don't need during rendering phase. So you will be able to fill the stack with information for limited number of units at once.
But if you have one array which basically contains only data that that is needed during rendering phase you would be able to store relevant data for greater number of in-game units at once.

On the other hand in a different part of your code you might only need data related to in-game units health (checking which units are dead, regenerating their health). Here it would also be beneficial if you only put relevant data about units health on the stack without other unneeded data like unit positions etc.

Perhaps it would be more understandable if I create a mind graph representation of the concept