Выложите код например на
JSFiddle. Я попробовал его запустить, но ничего не произошло и начал жутко виснуть браузер. Поэтому решил написать простенький пример, но меня затянуло и просидел несколько часов за разработкой. Вот что
получилось и
код. Можете посмотреть как рисуется из массива объекты но для начала хочу сказать.
Во первых в любой игре должна быть основная функция у меня это gameLoop у вас это похоже updateGameField. В ней вызываются основные методы рисования и обработки физики. Иногда кстате разделяют делают 1 метод для рисования например на 60fps, а второй для обработки физики на 200fps если нужно точные просчеты( быстрые полеты пуль и т.п.).
Во вторых, вот такого
tm2 = setInterval (updateGameField, 10)
быть не должно, я вообще считаю лучше бы эту функцию в javascript не добавляли многие не понимают ее обратную сторону. Вы вообще выставили 10мс а это 100 фпс! Если ваша машина в какой-то момент не успеет обработать хотя 1 раз, то вызовется функция еще раз и одновременно будет выполнять 2, 3, 10 функций до тех пор пока у вас все не зависнет, javascript не будет ждать он просто будет вызывать ее по кд поэтому для игровой функции нужно использовать в крайнем случае
setTimeout(updateGameField,1000/60/*60фпс*/);
в конце функции. Но давно уже появилась отличная оптимизированная функция
requestAnimationFrame(gameLoop);
которая будет стараться поддерживать 60 fps вашей игры. Рекомендую использовать только ее.
В третьих рекомедую почитать статьи о созадании игр, проблемы разработки, Delta-time и независимость частоты кадров, коллизии и т.п.
Все это необходимо почти в каждой игре, поэтому это нужно понимать чтобы смочь написать хоть что-то.