code: function() {
          if (!Crafty.DebugCanvas.context) {
              //check if canvas is supported
              if (!Crafty.support.canvas) {
                  Crafty.trigger("NoCanvas");
                  Crafty.stop();
                  return;
              }
  
              //create an empty canvas element
              var c;
              c = document.createElement("canvas");
              c.width = Crafty.viewport.width;
              c.height = Crafty.viewport.height;
              c.style.position = "absolute";
              c.style.left = "0px";
              c.style.top = "0px";
              c.id = "debug-canvas";
              // The debug canvas should be on the very top; the highest a regular zindex can get is ~10000
              c.style.zIndex = 100000;
  
              Crafty.stage.elem.appendChild(c);
              Crafty.DebugCanvas.context = c.getContext("2d");
              Crafty.DebugCanvas._canvas = c;
          }
          //Bind rendering of canvas context (see drawing.js)
          Crafty.unbind("RenderScene", Crafty.DebugCanvas.renderScene);
          Crafty.bind("RenderScene", Crafty.DebugCanvas.renderScene);
      }
docs: Mostly copied from canvas.init() Called the first time a "DebugCanvas" component is added to an entity We should consider how to abstract the idea of multiple canvases