I realize there are many tutorials and sites and everything answering "Which is better for game applications?" They all say that SVG is not suited towards game applications, that canvas is. But this confuses me.
- Once something is drawn to the canvas, it is forgotten.
- SVG elements can be changed after creation, without touching any other visual items in the game.
- Canvas does not have built in animation
- SVG has built in animations
So let's say I'm making a platformer. I want the main character to walk across the stage with a beautifully painted background. In Canvas, I either have to recreate her entire hitbox (repainting the spot of every moving entity), or make a separate canvas element and use maybe ctxChar, ctxBG, ctxItems
etc. With SVG, on the other hand, it's built in. And I can even just put an <animate>
tag inside her <use>
tag that changes her x position (or manually change it via js), and another <animate>
tag to change her sprite. And then the background never has to be touched.
As for animating a bunch of elements simultaneously, I don't see how that's any faster in Canvas than in SVG. What's wrong with putting svg elements in groups? Can it be any slower than redrawing the hitboxes's backgrounds and redrawing the entities themselves for all entities?
Edit: I think my real question is not if SVG could work, but why people think it couldn't.