Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Когда сталкивался с этим вопросом, решал его именно простым условием
Кстати, requestAnimationFrame(loop) лучше вызывать перед телом loop.
Паузы в играх HTML5