Мы разрабатываем игру «прыгай и беги» с HTML5 и JavaScript, и для этого нужно создать собственную игровую среду. Здесь у нас есть некоторые трудности, и мы хотели бы попросить у вас совета:
У нас есть объект "Stage", который представляет корень нашей игры и является глобальной оболочкой div. Этап может содержать несколько «сцен», которые также являются div-элементами. Мы реализуем сцену для игрового задания, для паузы и т. Д. И переключаемся между ними. Поэтому каждая сцена может содержать несколько «слоев», представляющих холст. Эти Слои содержат «ObjectEntities», которые представляют изображения или другие фигуры, такие как прямоугольники и т. Д. Каждый объект имеет собственный временный канал, чтобы иметь возможность рисовать изображения для одного объекта, тогда как другой содержит прямоугольник.
Мы устанавливаем activeScene в нашей сцене, поэтому, когда игра идет, рисуется только активная сцена. Вызов activeScene.draw(), вызывает все подслои для рисования, которые рисуют их сущности (вызов drawImage(entity.canvas)). Но разве это хорошая практика? Наличие нескольких холстов для рисования? Каждый игровой цикл, каждый слой-контекст очищается и рисуется снова. Например, у нас просто есть неподвижный фоновый слой ... разве не было бы более полезно нарисовать это один раз, а не очищать каждый раз и перерисовывать? Или мы должны использовать глобальный холст, например, в сцене и просто использовать этот холст для рисования? Но мы думали, что это будет дорого ...