Ну в целом верно. Еще кое что заметил - условия если есть какое то свойство. ЕМНИП что бы найти проперти js движок каждый раз шерстит всю цепочку наследования прототипа до object, что очень дорого если каждый кадр так делать.

Если объекты не часто меняются я бы распихал их по отдельным коллекциям и сделал бы для итерации по каждой коллекции свой метод. Отдельная коллекция для объектов с update, отдельная для anim и т.д. Но таким путем можно прийти к переписыванию всего под ECS архитектуру, это опасная дорожка))
Думаю можно выжать больше фпс. Я бегло пробежался по коду, признаюсь не вчитывался, и на вскидку заметил несколько мест для быстрой оптимизации.
Например в цикле отрисовки заменить проверку и присвоение флагов на переход к следующему элементу if (not ok) continue; и скипнуть все проверки ниже которые уже заведомо не if (ok).
Сделать отдельный режим отрисовки по целым пикселям для производительности и второй с дробными для качества. Я помню когда писал игру на js сглаживание для дробных пикселей пожирало производительность.
Надо проштудировать MDN на тему оптимизации, думаю там должны быть какие-нибудь перформанс типс.
Ты мужик! Что бы браться за движок надо иметь стержень, ствол, нефри... простите понесло. В общем я считаю это очень круто)

По движкам ничего не скажу, чукча – не читатель, чукча – писатель, но вот что точно я бы сделал, так это разбил проект на отдельные классы (простите джаваскриптизеры, на прототипы/модули). Потом если нужно все можно склеить при помощи webpack обратно в один файл. Будет в разы проще вести разработку.

Сейчас проект сложно читать потому что все в одном файле, и жизненный цикл, и загрузка ресурсов.
Сложно по обрезку судить, но кажется что там в цикле создается по файлу и в каждый отдельно пишется негриндекс
До 10 вроде, но это для файлов с компа. При загрузке по ссылке ограничения больше
Лишний тег удалил. Гифка оказалась не такая уж и большая после заливки. Похудела с 40 до 8 мб.
Это спутниковая тарелка. Может автор просто подумывает в этом милом доме взять ипотеку на 40 лет.
Lada 2077

З.Ы. Теперь что бы доказать что это не нейросеть рисовала артистам приходится выкладывать работы вместе со скетчами? I see this as an absolute win)
while true do git clone git@yandex.com
Один чип потребляет 1 Вт энергии в процессе работы и при этом позволяет отвести 5 Вт тепла, потому на данный момент производителям придется использовать 4 таких чипа для нормальной работы охлаждения...
https://www.notebookcheck-ru.com/Innovacionnoe-okhlazhdenie-dlja-noutbukov-Frore-prodemonstrirovala-besshumnye-chipy-AirJet.683379.0.html

Я вроде как слышал что уже в 2023 ожидаются ноутбуки с этим охладом. Там и посмотрим циферки на практике.