Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What are the advantages/disadvantages of Canvas vs. DOM in JavaScript game development? [closed]

What are advantages and disadvantages of creating games in 'pure' DOM as compared to using canvas?

like image 470
budzor Avatar asked Feb 15 '10 14:02

budzor


People also ask

Why is canvas better than DOM?

In short, the canvas and WebGL are more performant than the DOM, and with third-party libraries, its ease-of-use is comparable; furthermore, growing browser support for additional web standards have the potential to further boost canvas performance.


2 Answers

canvas pros :

  1. could manipulate pixel and apply filter effect, so easy for image processing;
  2. very efficient for small size but hundreds of elements in the game
  3. many libraries for game could be found using canvas, such as box2dweb, and could make awesome games such as angry bird

cons:

  1. it's stateless, so you have to record the states of the elements in the canvas, and handle the hit test by yourself.
  2. low efficient for very large size but with one a few elements in the game
  3. great ability, great responsibility. the freedom to draw, brings in you have to charge of all the drawing staff. Fortunately, there are many libraries there, such as cocos2d-html5, IvanK.

DOM pros:

  1. rendering by the browser, so less error-prone;

cons:

  1. could do simple animation with CSS only, that makes the game not fluent;
  2. no good for manipulating hundreds of DOM elements;  
like image 165
tristan Avatar answered Sep 21 '22 05:09

tristan


When you develop with Canvas you will have to use the GameLoop technique which is very painful because you will have to redraw all elements all the time.

When you develop with DOM you will be able to redraw only the objects that have been modified and will leave the hard work for the browser implementation.

If your game has a few modifications per frame then you can use the DOM, otherwise use the Canvas, please! It is so much faster!

like image 33
melanke Avatar answered Sep 21 '22 05:09

melanke