Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Разработка игры: отрисовка карты - CANVAS vs SVG (https://javascript.ru/forum/dom-window/73619-razrabotka-igry-otrisovka-karty-canvas-vs-svg.html)

Роман Андреевич 29.04.2018 04:10

Разработка игры: отрисовка карты - CANVAS vs SVG
 
Коллеги, доброго времени суток, собственно вопрос исходит из темы.

Работаю надо разработкой игры. И процесс остановился на рендере карты локации. Карта представляет собой набор объектов, каждый отвечает за свой участок, например "завод", "стадион" (пример) и так далее. Соответственно каждый объект имеет свое изображение, координаты, по сценарию изображения делаются в формате svg, пример:

const map_objects = {

factory: {
name: '/*some name*/',
image: '<svg>.......</svg>',
coords: /*.......*/
},
shop: {
//...

},
gym: {
//...

}

// other ....
}

При инициализации игры, из объектов таких, собирается карта локации. Карту масштабируется и можно ее двигать. С этим нет проблем.
Вопрос собственно в том, если делать через canvas, то по сути будет вставка картинок svg внутрь и несколько слоев canvas. Но ведь можно собрать карту и просто сгенерировав элемент например <gamemap></gamemap> в него вставить объекты и получится то же самое. При том у svg больше возможностей обработки событий, интерактивность ...

Вопрос производительности. При росте игры будет и увеличиваться число объектов.

Что будет быстрее отрисовка в canvas или сборка большой SVG из маленьких???

Rise 04.05.2018 09:41

Цитата:

Сообщение от Роман Андреевич
несколько слоев canvas

Обычно один слой.
Цитата:

Сообщение от Роман Андреевич
ведь можно собрать карту и просто сгенерировав элемент

Например из div можно тоже собрать карту.
Цитата:

Сообщение от Роман Андреевич
у svg больше возможностей обработки событий, интерактивность

У обычных элементов не меньше, а canvas при желании можно сделать интерактивным.
Цитата:

Сообщение от Роман Андреевич
отрисовка в canvas или сборка большой SVG из маленьких?

Вообще помимо SVG и Canvas есть еще CSS. Используйте что вам больше нравится, будет тормозить перепишите в Canvas)


Часовой пояс GMT +3, время: 04:08.