You are absolutely right Batvink, so I went back in!
This time I implemented a simple garbage collection system so that dead items are removed every 5 seconds. I use AGK2s arrays within arrays feature to create game object entities consistings of a bunch of assets like so:
Which lets me add new stuff quickly. Some entities have a lot of sprites - the Player entites have sprites for stomp detection, punch detection, item pickup etc. Other entities like the bomb have more spine animations. Every asset position is slaved to the position of the physics sprite every frame. Does anyone else use a system like this?
Anyway, I went back a did a new test - one bomb generated every frame from the position of the mouse cursor. It falls down, hits a platform (which plays an animation), plays its 'bounce' animation, counts down its timer, explodes (which produces 6 explosion animations and 3 particles, and shakes nearby platforms) and is hidden. Once all the animations and particles have stopped, its deleted from the system.
I started recording the video when over
10,000 bombs had already been dropped and then dropped a few more; the framerate returns to normal after everything has been garbage collected; 60fps when Fraps isn't running, 48 when it is. This running Windows 7 in a VM on a Macbook Air!
And now, I do think I'll move on