ECSY — легковесный ECS фреймворк для JavaScript

Команда, работающая над A-Frame Mixed Reality, опубликовала ECSY - легковесный экспериментальный Entity Component System фреймворк для JavaScript.

ECSY — легковесный ECS фреймворк для JavaScript

Особенности:

  • Не завязан на конкретный фреймворк.
  • Ориентирован на предоставление простого, но эффективного API.
  • Разработан с идеей сократить нагрузку на сборщик мусора.
  • Системы, сущности и компоненты находятся в инстансе world.
  • Несколько запросов на систему.
  • Реактивный.
  • Предсказуемость:
  • - Системы работают в порядке регистрации или на основе заданного при регистрации приоритета.
  • - Реактивные события не будут генерировать случайные колбеки при вызове, но будут поставлены в очередь и будут обрабатываться по порядку.
  • Современный Javascript: ES6, классы, модули, ...
  • Пул для компонентов и сущностей.

Распространяется по MIT лицензии, весь код на гитхабе.

Примеры:

Более подробно можно почитать в анонсе Mozilla.

2121
34 комментария

Идея вызывает серьезный скепсис. С виду половина технических идей ECS - по оптимизации кеша процессора и минимизаций обращении к памяти для объектов на js выглядит малореализуемой.
Наверное подход сможет что-то улучшить, но банально - без низкоуровневых операций нет возможностей оптимизировать систему обслуживания компонентов. Оверхед самой компонентной системы может быть больше, чем если просто писать минимальный js код, оптимизированный под конкретные нужные вам алгоритмы.
Web Assembly видится более подходящей платформой под такие штуки.
Хотя авторы наверняка потестировали свой подход, но выглядит похожим на hype driven development

7

И так понятно ,что никаким DoD тут и не пахнет. Языки интерпретируемые или те у которых творится с памятью то же, что в C# могут только в ECS подход на уровне шаблона. Да, это может быть удобно и читабельно, но никак не в десятки раз производительнее.

По факту DOD\ECS возможен только на С и С++.

1

Меня эта тема с кешем и CPU в js тоже весьма смутила. Но я пока особо не вчитывался. Чуть позже может про кишки их ECS отдельную статью напишу.

1

Разработан с идеей сократить нагрузку на сборщик мусора.
> Системы, объекты и компоненты находятся в инстансе world.Довольно противоречиво

4

Про "объекты" мой косяк. В оригинале там "entities".

Ненавижу JS, но я попробую фреймворк, спасибо за наводку.

После JS любой язык кажется паскалем.
Кодишь и думаешь, как люди вообще без спреад-оператора живут :)

4