Комментарии 15
В таких статьях всегда хорошо с начала увидеть причину написания чего-то своего - это чисто техническое упражнение или способ преодолеть недостатки существующих движков (какие именно?). И результаты сравнения нового движка с популярными.
Не понятно с чем сравнивать, не с unity же. Уверен главный недостаток современных движков в их универсальности и производительности. Особенно в производительности, но это плата за универсальность.
Все сразу. И не растерять навыки и научится чем-нибудь, и написать, что-нибудь интересное.
Не хотелось противопоставлять свой проект другим js-движкам, внешне(с точки зрения пользователя) все очень похоже. Производительность также, наверняка, похожая. Я делал эксперименты со слоями, web assembly, ООП и приватности, про это писал.
бывают сложности с рендерингом, когда карта большая. Пишут костыли, чтобы обойти эту проблему и/или дробят карту. В моем движке можно рендерить карту любого размера
Не совсем так. Размер карты сам по себе не имеет большого значения, важнее количество объектов на ней, которые приходится обсчитывать. Естественно, чтобы запихать больше объектов, нужны бОльшие карты, но это скорее следствие, а не причина.
У вас в примере на codepen я действительно увидел карту с небольшим числом объектов, с которыми современные процессоры (то есть наверное всё, что выпущено за последние 10 лет) могут справится простым перебором. А вот если объектов будет на порядки больше, то уже и самому топовому железу придётся не сладко. А уж тем более если расчёты идут на JS и в один поток (игнорируется наличие многаядер, работать будет только одно).
Можно провести простой эксперимент: сделайте такую карту, чтобы на ней было хотя бы 10 000 отдельных объектов, для которых считаются коллизии.
Верно, поэтому придумали и BSP деревья в том числе
Для тайловой карты сделать оптимизацию проще. Там нет коллизий в привычном смысле. Рисуем только, то что попадает на экран. Всё остальные векторное рисование, требует уже других структур.
В карте 800х800 не пустых ячеек, это 640 000 объектов для перебора, плюс для стен(я думаю их больше 10 000) считаются колизии.
У меня есть ретро ПК pentium 4 1500 mhz и 2.5 Гб ОЗУ. Видеокарта geforce 6600 gt. Попробую протестировать ваш движок. Только процессор 32 битный. Поставить windows 10 или Linux с современным браузером.
Я его использую для тестирования производительности своей библиотеки, она написана на С++.
В моем движке можно рендерить карту любого размера, при условии стандартного увеличения(scale).
Вы отсекает и не рисуете невидимые тайлы?
Вы ещё упомянули работу в 60 fps на старом железе, напишите какое это железо.
2d движок для игр Javascript Game Engine (JsGE)