Here's Chrome showing 100k objects in 3D, with very decent fps: https://m.youtube.com/watch?v=dKg5H1OtDK8 This should give some idea of what should be achievable.
I'm curious about actual metrics with regard to Chrome / Safari's garbage collector overhead. You still don't have a lot of "objects" in the video; when V8 is used server side it handles significantly more objects. (IE, assuming each sword is 1-5 objects.)
Are these engines canvas based, or are they generating HTML? Assuming they are generating HTML, are the elements removed from the screen when you are done with them?
In a lot of garbage collected environments, you still need to call some kind of close / remove method when you are done with some kinds of objects. (In C#, it's "Dispose.")
Sounds like reflow problems. And like OP is slowly discovering the 200% Problem.
As a senior game/graphics programmer looking at the screen caps, I see a game that should never be using more than 1% of the CPU and a few percent of the GPU.
The main down side is poor performance if you’re not targeting Safari and Chrome.
Only if you don't want to get your hands dirty with the layers you're using.
The trade-off with an abstraction layer is that every layer introduces bugs/decisions which may be a concern. But you can always (if it's open source) tweak the layer(s) below.
Moreover, why not finish the game and make your next project in something new.
- "When I set a FPS cap it seems to slow my game down to a halt, and I don't really know why, so I'm just going to shrug and disable it and it seems to fix it, so I'm not going to think about it anymore"
- "My game has worse performance on Mac but a library developer says they're fixing it, so I'm just going to shrug and hope it's eventually fixed"
- "The game performs better on Firefox than Chrome/Safari, I don't know why, who knows, moving on .."
- "I have horrible performance rendering text as an entity, so instead of fixing my entity system to be performant I'm going to just modify my game loop for text rendering to be its own thing"
- "I'm going to use pooling to re-use entities and it increases my performance by ~30%" (even though they have only a dozen entities on screen at once, only allocating a max of 1 or 2 objects per frame, and adding pooling for this is somehow a massive performance win?)
What value was I supposed to take from this article?