Comments 5
Все вот эти системы тонкости это конечно интересно. Но интересует вопрос: когда игры начиная от Heartstone, валхейма заканчивая танковым перестанут лагать? Вообще любые игры на юнити на любом компе лагают.
Хорошая статья, поддерживаю стремление двигать ECS в массы, про монолинки очень понравился подход, возьму, пожалуй, на вооружение, спасибо!
P.S. Путаете связность и связанность
Unity Technologies известна тем, что старается разработать универсальный движок для создания любых игр: от казуальных match-3 до фотореалистичных AAA-проектов.
Честно говоря, ААА игр на юнити около нуля (возможно чуть меньше) и Unity не собираются с этим ничего делать, да и у них вряд ли выйдет без выкладывания исходников в опенсоурс. Основное приемуществf Unity это относительная простота, поддержка кучи платформ и большое камюнити, так вообщем-то они себя и рекламируют. Про движок, на котором фотореалистичные ААА игры можно делать, они точно не заявляют.
Спасибо автору, годная статья.
Есть вопрос автору: у Вас spawn объектов происходит через подтягивание заранее заготовленных префабов из ресурсов. А Вы отдельную обертку (что-то типа конвертера из DOTS) не стали прикручивать уже для тех объектов, которые и компоненты используют, и уже расположены на сцене?
Вообще это очень просто. Достаточно разместить ECS-монобехи в родительском трансформе какого-нибудь public Transform EcsEntity;
, который стоит сохранить в SceneData
. А потом завести систему, которая при инициализации будет запрашивать все MonoEntity
из SceneData
. Что-то типа такого:
public MonoEntity[] FindEntity()
{
return EcsEntity.GetComponentsInChildren<MonoEntity>();
}
А потом просто инициализировать их все в отдельной системе:
public void Init()
{
var monoEntities = _scene.FindEntity();
foreach (MonoEntity monoEntity in monoEntities)
{
EcsEntity entity = _world.NewEntity();
monoEntity.Make(ref entity);
}
}
Конечно стоит это делать на этапе сборки уровня в редакторе. Кешировать внутри SceneData
, подтягивая через кастомную тулу-редактора все новые MonoEntity
, которые размещаются на сцене, но это уже тянет на отдельную статью на тему написания собственных редакторов для Unity)
Что такое ECS и с чем его компилят