var toData = function(){return {id: id,data: data}};This can't be simply: var toData = {id:id,data:data}; ?Or i misunderstood something?
Some fix for tileMove and Controls.
I haven't yet tried this, but there are some threads that talk about scrolling and such if you search for them. If you could write a jsfiddle with a minimum implementation of your scrolling code then you could probably get some input from the more experienced crafty folk
In the game I'm working on, the viewport is following the player on a 2048x2048 map with 10-20 entities on screen at once, using DOM with Crafty.canvas.init not being called. I've been playing it for a few months now, and I rarely see viewport lag - unless there is some other section of code that is slowing everything down. So, I'd guess it's not the viewport causing the lag in your game, but it may be how many entities there are on screen. How many entities are on screen?
Or do you have a jsfiddle of viewport lag?