Оптимизация игры на Unity. Entity Component System, LeoECS

Поділитися
Вставка
  • Опубліковано 25 лип 2024

КОМЕНТАРІ • 167

  • @Digildon
    @Digildon 2 роки тому +8

    Чел, спасибо.
    Твой тутор прям как вода в пустыне. Сейчас нигде нет, но капец как нужно.

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      На здоровье, рад, что помог)

  • @entity5148
    @entity5148 2 роки тому +2

    Большое спасибо тебе за полезный контент!)
    Желаю тебе много подписчиков!

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      На здоровье 🍰
      Большое спасибо 😎😜

  • @adengard3473
    @adengard3473 2 роки тому +29

    Хотелось бы режиссерскую версию подлиннее с обзором лео ецс (какие методы есть, что делают, за что отвечают, как использовать... Чтобы прям совсем для чайников). Видео супер, канал бомбезный, автор попадет в вальхаллу для прогеров ))) хотелось бы такое года 3 назад

    • @NightTrainCode
      @NightTrainCode  2 роки тому +3

      Спасибо 🍰😜
      Можешь написать про те моменты, с которыми есть непонятки в ECS. После того, как остальные ролики по плану смастерю, возможно, ещё более подробный урок выпущу)
      А пока в этом попытался собрать максимум того, что точно пригодится при разработке или используется чаще всего 🍨

    • @adengard3473
      @adengard3473 2 роки тому +9

      @@NightTrainCode Проблема в том, что ecs считается как бы не для новичков и про неё может рассказать два с половиной человека, которые говорят уже на непонятном языке, оперируя терминами которые иногда за гранью понимания ( а если и понятны, то только в теории... да и то с натяжкой. Плюс это еще на пятой скорости речи, так что мозги пухнут). Понятное дело, что можно на паузу ставить и короткие ролики чаще смотрят, но бывает тяжко воспринимать не линейную инфу, да еще и без пояснений или без представления полной картины (чего мы хотим добиться, почему именно так, какие проблемы нас могли бы подстерегать). ВВодный урок на мой взгляд должен рассказать как работает лео (имеется ввиду методы которыми мы можем оперировать, их назначение, порядок применения с пояснениями (Что мы делаем и почему в таком порядке. Казалось бы это очевидно, но думаю не всем).

    • @NightTrainCode
      @NightTrainCode  2 роки тому +10

      @Aden Gard Конечно, далеко не всем это очевидно, если даже про монобехи мне пишут люди, что не всё понятно
      Сначала только все к ООП привыкли, а тут ECS со своим дата ориентед с ноги влетает)
      Если будет время и желание, разжую LeoECS для новичков 🔥

    • @adengard3473
      @adengard3473 2 роки тому +4

      @@NightTrainCode Просто по юнити тонны видео где каждый кто, что то пишет, говорит это вот первое что вы видите, метод старт и обдейт. В других еще скажут, что есть Авейк и ОнЕнейбл, в третьем Фиксед и Ласт обдейты, расскажут для чего все это... И так по крупицам собираешь картину, а с лео есть 3 видео и черная магия ))). Не понятно , что прописывать, что там делается, что можно прописать.

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      @@adengard3473 Там по документации всё достаточно просто. А тем, кто в ООП шарит - будет куда легче разобраться без видосов

  • @vovanchik_ru4208
    @vovanchik_ru4208 2 роки тому +19

    слишком быстро. Я достаточно хорошо знаком с материалом, но даже для меня всё просто какое-то мелькание картинки.

    • @NightTrainCode
      @NightTrainCode  2 роки тому +2

      Спасибо за замечание, учту в следующих роликах 🤙

  • @zitskycom
    @zitskycom 2 роки тому +4

    Ох е, ток сегодня узнал про ecs, думал старое видео смотрю, а оно 6 часов назад вышло 😂

    • @NightTrainCode
      @NightTrainCode  2 роки тому +2

      Это я всё предусмотрел 😄🔥

  • @KingoSr
    @KingoSr Рік тому +1

    Что делать, если ошибка при добавлении проекта из git с помощью package manager?

  • @grandsunhar
    @grandsunhar 2 роки тому

    Супер

  • @user-jc3go7mf2n
    @user-jc3go7mf2n 4 місяці тому

    Проморгал я момент с entity reference, думал думал как решить, в итоге сделал через сравнивание позиции коллайдера и всех энтити, но твое решение куда лучше

  • @user-zf7fl8xq5m
    @user-zf7fl8xq5m 2 роки тому +1

    А что лучше использовать? Night cache или Ecs для андроидов? И ещё, проверять постоянно например jumpEvent не затратно? или лучше сделать Action в структуре и через него методы подписывать

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      Ecs в том случае, если уверен, что справишься с этим паттерном и хорошо в нём шаришь
      А так вместо Ecs и NightCache рекомендую обратить внимание на мой MonoCache 2.0:
      github.com/MeeXaSiK/MonoCache
      Системка из моего первого видео, которую я обновил и довёл до ума. Документация имеется (версия в видео устарела), там всё проще, чем с NightCache

  • @Kealstex
    @Kealstex 2 роки тому +4

    Думаю, пора попробовать ECS. Псмотрела видос.
    " ну да,вроде всё понятно"
    *через полтора часа..*
    " ДА БЛ№№Ь ЧО ОН НЕ ПРЫГАЕТ"
    боже дай сил не сойти с ума.

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Если нервов не хватает, то можно и дальше на монобехах кодить)
      Тем более если ты любитель и не требуют этого на работе

    • @Kealstex
      @Kealstex 2 роки тому +4

      @@NightTrainCode уже разобралась:D спасибо.
      да на работе не требует, но для самообразования явно полезно. так глядишь, через полгода и сферу деятельности сменить можно будет в качестве джуна)

    • @pengw1negames
      @pengw1negames Рік тому

      @@NightTrainCode Такая же проблема, ну не прыгает и все. К тому же зависаю в воздухе и rigidbody не помогает. Гравитации будто не существует. Думал что прыжки помогут это исправить, однако нет, все так же в воздухе, так еще и не прыгает

  • @PurpleDaemon_
    @PurpleDaemon_ 2 роки тому

    Подскажи, пожалуйста, по логике этого подхода я в системе "выстрел" должен обработать все связанное с ним, то есть заспавнить пулю, начать анимацию, звук. Или наоборот все анимации в системе анимаций, и все звуки в системе звуков?

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Да, всё по отдельным системам, конечно
      Системы на каждый чих
      Но никто не мешает и всё в одну засунуть)

  • @great8814
    @great8814 2 роки тому +2

    Привет! Скоро допишу одну из своих игр и недавно узнал про ecs. Думаю следующую свою +- крупную игру написать с помощью ecs. Но мне интересно, если я разберусь в esc, то мне нужно будет всю игру писать с помощью ecs? Это как архитектура или вокруг ecs нужно выстраивать какую-то архитектуру для ecs? Спасибо!

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Можешь что-то на монобехах писать, можешь что-то на ECS, никто не запрещает)
      В ECS кучу систем и компонентов пиши на каждый чих, вот и получится архитектура. Но, конечно, всё делать надо с умом и думать на будущее

  • @user-jc3go7mf2n
    @user-jc3go7mf2n 4 місяці тому +1

    Отдельное спасибо за 18:16 пол дня тупил

  • @_EnVyUs
    @_EnVyUs 2 роки тому +4

    У меня вот такой вопрос, не затратно ли каждый раз использовать фильтры и возможно ли хеширование в ecs?

    • @NightTrainCode
      @NightTrainCode  2 роки тому +2

      Нет, не затратно, фильтры обновляются только при изменении компонентов на entity, а компоненты достаются по интам

    • @vovanchik_ru4208
      @vovanchik_ru4208 2 роки тому +4

      нет, не затратно. Фильтры это просто "ключи" к определённой области памяти. А вот циклы в run должны вызывать больше вопросов :) Если у Вас заведомо единственный компонент в фильтре, то рациональней использовать просто условие if(filter.Length>0)...
      Но на самом деле это всё же экономия на спичках. Систем может быть сотни и тысячи при правильном их использовании, ведь они не обязаны всегда все использоваться. За остальные мелочи отвечают оптимизаторы при подготовке кода для виртуальной машины(JIT-компиляция, CLR и даже burst можно использовать :)). Короче, просто пишите код, а там разберётесь с производительностью. При сколь-либо правильном использовании ecs подхода - запас прочности производительности будет достаточным :) Ну а если что, то не стесняйтесь использовать стандартный профилировщик unity для большего понимание на что надо пенять :) Удачи!

  • @OlegRonaldo9
    @OlegRonaldo9 2 роки тому +3

    Спасибо за видео. Есть замечание по поводу скорости, с которой ты объясняешь. В некоторых моментах приходиться на 0.75 ставить.
    И у меня вопросик, менять значения в рантайме никак нельзя? Например чувствительность мыши.

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      На здоровье)
      Спасибо за конструктивную критику
      Почему нельзя то?) Всё можно. Персонажи иначе как бы двигались?)

    • @OlegRonaldo9
      @OlegRonaldo9 2 роки тому

      @@NightTrainCode Я имел в виду в ручную в инспекторе. Просто когда запускаешь, то все провайдеры пропадают же.

    • @OlegRonaldo9
      @OlegRonaldo9 2 роки тому

      @@NightTrainCode И ещё можно вопрос. foreach воспринимать как обычный update? На 9:18 ты вынес методы за пределы foreach. Можно было же lookComponent.direction.x = Input.GetAxis("Mouse X); ? Просто для читабельности сделано или есть какой-то сакральный смысл?

    • @NightTrainCode
      @NightTrainCode  2 роки тому +2

      @@OlegRonaldo9 Можно, никто же не запрещает совмещать Ecs и МоноБехи

    • @NightTrainCode
      @NightTrainCode  2 роки тому +2

      @@OlegRonaldo9 Input.GetAxis не нужно вызывать больше, чем один раз за кадр. Если бы подходящих для этого Entity было бы не 1, а 100, то метод вызвался бы лишних 99 раз, выдав везде одинаковый результат
      Оптимизация)

  • @daemonstergames716
    @daemonstergames716 2 роки тому

    А scriptable objects можно использовать с ECS? Нет у них побочных конфликтов?

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Можно, всё там окей)
      Им там не из-за чего возникать, на ECS можно творить всё то же самое, что и на монобехах, просто немного по-другому
      Так как это паттерн проектирования, а не какая-то иная магическая штука)

  • @ncinsli
    @ncinsli 2 роки тому +2

    Отличный ролик, большое спасибо за часть с провайдерами! Почти нет инфы про нее

  • @Hellscaner
    @Hellscaner 2 роки тому +1

    Стоит ли сразу учится писать на ECS, или использовать ваш NightCache? А то привык уже к классике.

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      Да всё по желанию, я и на работе, и у себя NightCache юзаю и иногда подгружаю его обновления на GitHub
      Производительность в итоге не уступает ECS, да и больше всё равно нагрузка идёт на рендеринг, а не на вычисления, так что не парься

  • @intrigazTV
    @intrigazTV 2 роки тому +1

    Как называется эта тема оформления (синтаксиса)? Офигенная

  • @1pampers13aby7
    @1pampers13aby7 2 роки тому

    А будет все работать в 2D? Не могу реализовать прыжок в своей 2д игре. Телепортируется и все(

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      LeoECS будет работать везде)
      Значит где-то допустил ошибку, либо в 2D это немного по-другому реализуется

  • @vicktoriashepard
    @vicktoriashepard 2 роки тому +3

    Основной плюс ecs не в одном update и не в представлении всех сущностей простыми float, а в не дефрагментации памяти вроде как.

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      Да в принципе в простоте и отсутствии кучи лишних методов, полей и свойств, как у монобехов, которые нужны далеко не каждому объекту. Энтитюхи, компоненты и системы используют только то, что им нужно, что тоже плюс
      И да. В ECS всё лежит где-то рядышком в памяти

  • @user-be2cy2fb9u
    @user-be2cy2fb9u 2 роки тому +1

    думаю PlayerInputSystem должна генерировать команды управления для ентити, а уже в нужной системе эти команды преобразуются в логику передвижения ;)

    • @user-be2cy2fb9u
      @user-be2cy2fb9u Рік тому

      @Дарий сделать "запись" игры например

  • @user-wv4cz4ls4l
    @user-wv4cz4ls4l 2 роки тому +2

    Привет) Спасибо за видос. Лайк и подписка! Понимаю, что рекомендации ютуба, но всё-таки довольно быстро всё происходит в видео. Пришлось пересматривать с паузами) У меня есть несколько вопросов:
    1) По идее связывание с монобехами будет в любом случае. Может вообще выйти так, что из-за кучи связываний производительность станет даже хуже, чем просто на бехах?) Довольно странный вопрос, но мало ли был опыт.
    2) Немного не понял, почему именно система игрока должна быть первой, а потом уже движение?

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Привет, спасибо)
      1) Нет, особенно если все ссылки на классы кэшировать в переменные)
      2) Сначала идёт система ввода направления игрока (задаётся Direction), а потом система передвижения двигает игрока в этот самый Direction

    • @user-wv4cz4ls4l
      @user-wv4cz4ls4l 2 роки тому

      @@NightTrainCode Чтобы открыть сцены из архива нужен юнити последней версии? А то у меня что-то не открывает

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      @@user-wv4cz4ls4l Я на 2021 работаю, но, думаю, и на 2020 должно завестись

  • @user-zo7ob4wf8p
    @user-zo7ob4wf8p 13 днів тому

    Привет, можешь, пожалуйста, сделать ролик про Ecs lite? Там я пробовал совместить Ecs lite и Voody UniLeo, но выдавало ошибку(поменял на leoEcs и все заработало). Но том с 22 года заморозили проект и сейчас развивается только ECS Lite, так что было бы круто узнать как именно с этой версией работать и что можно добавить вместо Voody UniLeo. Спасибо)

  • @dmitry711
    @dmitry711 10 місяців тому

    Спасибо. Планируешь ли ролик про ECS от Unity (DOTS)?

    • @NightTrainCode
      @NightTrainCode  10 місяців тому +1

      На здоровье. Нет, пока не вижу смысла в DOTS. Лучше уж Morpeh

    • @denisgoodman4492
      @denisgoodman4492 10 місяців тому

      @@NightTrainCode Compile Burst

  • @victorvoiz8839
    @victorvoiz8839 2 роки тому +1

    Блин, сделай подобный видосик по Entitas. На просторах не нашел ни одного нормального

  • @janitor13
    @janitor13 11 місяців тому

    Когда стоит использовать для классов internal а когда public?

    • @NightTrainCode
      @NightTrainCode  11 місяців тому

      Да забей, пиши public, это я молодой был, глупый)

  • @MarePlayZ
    @MarePlayZ Рік тому +1

    Начинающий юнити программист... Ещё даже нет своих проектов. Вот сейчас работаю над собственным маленьким шмапом, чисто в юнити без фреймворком и т.д., т.к. не умею пока что. Хочу двигатся и совершенствоваться. С чем стоит знакомится чтобы улучшать свой код? На счёт ролика очень интересно но совсем ничего непонятно😅 надо будет пересмотреть несколько раз

    • @BlackHole-ei9mi
      @BlackHole-ei9mi Рік тому

      Бро нет смысла, я сам сижу пытаюсь в фреймворки, но LeoEcs обновился и он сейчас работает со структурами, пока не видел туториалов по нему абсолютно, только документацию на гите смотреть.

  • @IgorKu-m4o
    @IgorKu-m4o Рік тому

    Куда движется Юнити? ECS в будущем заменит Монобихейвер? Или они они будут существовать параллельно?

    • @NightTrainCode
      @NightTrainCode  Рік тому

      Не думаю, что MonoBehaviour исчезнут. А так, Unity рекламируют системки DOTS и Jobs. Многопоток, привет

  • @bananosplt7368
    @bananosplt7368 2 роки тому

    не пойму, если мы обращаемся к струтурам по ссылкам, не становится она как класс ?

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Класс - это класс, а структура - это струкура
      Структура собой представляет значение, а класс - ссылку
      Например, Vector3 - это структура
      Можешь глянуть разницу в справке

    • @walson4708
      @walson4708 2 роки тому +1

      Нет, ты просто не создатель копию объекта структуры, а работаешь напрямую с её первоначальным объектом.

  • @OlegRonaldo9
    @OlegRonaldo9 2 роки тому

    Вопрос про удаление объекта. Глянул другие проекты на ECS и почему-то некоторые не удаляют объект, а просто выключает его через SetActive(). Т.е. тут по большому счету это на личное усмотрение? Если не учитывать того, что просто засирается иерархия выключенных объектов.

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      Возможно в этих проектах работает пул объектов, иначе проще объект просто удалить, а не отключить
      Если объект просто отключить и не удалить Entity, то системы продолжат его обрабатывать, даже если он выключен

    • @OlegRonaldo9
      @OlegRonaldo9 2 роки тому +1

      @@NightTrainCode Спасибо. Про пул объектов не знал.

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      @@OlegRonaldo9 На здоровье. У меня есть ролик про Object Pooling

    • @OlegRonaldo9
      @OlegRonaldo9 2 роки тому +1

      @@NightTrainCode Хорошо, гляну.

  • @mihanikgames3304
    @mihanikgames3304 2 роки тому

    быстро пролистал, но вывода о повышении производительности не увидел. Подскажите какой выигрыш по производительности получается и на какой минуте это показано?

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Глянь мой ролик про кэширование апдейтов. Там смысл тот же самый в приросте производительности (25%)

    • @mihanikgames3304
      @mihanikgames3304 2 роки тому

      @@NightTrainCode Но ведь это другой метод. Вы хотите сказать, что выигрыш будет такой же?

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      @@mihanikgames3304 Да, на ECS выигрыш будет чуть-чуть больше, но не заметно
      Так как везде смысл в том, что будет один апдейт, вместо огромной кучи

    • @nouaksomtac6782
      @nouaksomtac6782 2 роки тому

      ну я толка пробую Ecs но по моему легкасть распаралеливания наверное просто когда ти проходеш по масиву "обектов" то ти мозеш давать тот момент каздому обекту по патоку вот теперь будет исползаваса болше много поточности (но ето мои догадки)

  • @firstvf
    @firstvf 3 місяці тому +2

    За ролик, конечно, спасибо, но единственное, что я не могу понять - зачем делать спидран по ролику-туториалу? Даже если в названии нет ни одного упоминания о том, что это учебный материал, в любом случае с первых секунд он себя позиционирует как обучающий. Невероятно трудно пытаться извлечь какую-то информацию, когда она скипается буквально за 1-2 секунды.. приходится >Постоянно< отматывать назад.
    Надеюсь, если будут еще гайды по ECS, то чуть-чуть по-медленнее и без скипа некоторых новосозданных классов/структур😵‍💫
    Но еще раз спасибо! материала по этой теме действительно мало :(

    • @NightTrainCode
      @NightTrainCode  3 місяці тому +1

      Старый ролик, в новых не спидраню)
      Спасибо за коммент

  • @user-to5pt1nq6p
    @user-to5pt1nq6p Рік тому

    Как я понял, любые Run системы существуют всегда и Run запускается каждый кадр. Поэтому событий как таковых нету, только создание новых энтити или компонентов. Не существует подписок. Это немного ломает мозг и смущает. Я верно это понимаю?

    • @NightTrainCode
      @NightTrainCode  Рік тому

      События есть и я про это тоже говорил в видео)
      Подписки тоже никто не запрещал

  • @psy_gamer
    @psy_gamer 2 роки тому +4

    Что тут можно сказать - мой мозг однозначно сломался!
    Интересный вариант, но к нему нужно привыкать не одну неделю.

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Что тут можно сказать - ставь мою системку NightCache (есть видос на канале) и не парься 😎🔥

    • @psy_gamer
      @psy_gamer 2 роки тому +1

      @@NightTrainCode Люблю сам писать системы, чтобы потом легче было с ними разбираться, чем использовать чужой фраемворк)
      Но спасибо!

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      @@psy_gamer Это отлично)
      Но бывают случаи, в которых точно не нужно изобретать велосипед, например, свою ECS писать, как это по приколу недавно делал я 😆

  • @karimkimsanbaev7932
    @karimkimsanbaev7932 9 місяців тому +3

    Монобэхах)
    Кто использует монобэхи - не забывайте включать поворотники!
    По тутору:
    1. internal в компонентах можно оставить, если провайдеры тоже делать интернал
    2. Time.deltaTime нету в видео - пока не посмотрел в исходник проекта, не понял, что он там нужен. Да, ты об этом сказал)
    3. Камеру обновлять лучше в LateUpdate
    4. Нотация приватных членов класса без _ смотрится не привычно - вкусовщина

  • @user-ml5tn8qn8j
    @user-ml5tn8qn8j 2 роки тому

    Не понимаю почему у меня нет доступа к пространству имен Voody.Unileo хотя я все пакеты установил

    • @pengw1negames
      @pengw1negames Рік тому

      Добрый день, решили ли вы эту проблему? Если да то как?

    • @user-ml5tn8qn8j
      @user-ml5tn8qn8j Рік тому

      @@pengw1negames это устаревшая информация

    • @user-ml5tn8qn8j
      @user-ml5tn8qn8j Рік тому

      @@pengw1negames нужно установить все пакеты Лео
      Стандартный, di и т.д.

  • @cmldev
    @cmldev 5 місяців тому +1

    Такой бы тутор по LeoEcs lite, было бы супер. Тут уже многое устарело

  • @HeyWhoTheFuckAreYou
    @HeyWhoTheFuckAreYou 2 роки тому +1

    А как быть если у менять есть условный плагин написанный стандартным ООП, нужно ли самому всё переписывать под ECS в таком случае или стоит отказаться от его использования если этих плагинов достаточно много, а тратить время на то, чтобы адаптировать чужой код не особо хочется???

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      Никто не запрещает полностью отказываться от монобехов)
      Если свой плагин использует апдейты, в которых что-то тяжёлое и их много на сцене, то советую перебазироваться на ECS. Если он не требует много ресурсов, то забей, максимум на мой NightCache перекинь, если хочешь. Там архитектуру менять не надо 🤙
      Чужой монобех код переписывать на ECS - да кому оно надо 😄

    • @vovanchik_ru4208
      @vovanchik_ru4208 2 роки тому +1

      хочешь писать на ecs - код надо в любом случае декомпозировать(разделить на мелкие системы) и никуда от этого не деться

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      @@vovanchik_ru4208 В идеале, конечно, чтобы было так. Но надо оценивать и время, которое уйдёт на снос монобехов под корень

    • @HeyWhoTheFuckAreYou
      @HeyWhoTheFuckAreYou 2 роки тому +1

      @@NightTrainCode Ну я хз, он использует Jobs это вроде как ECS и плюс там несколько ассетов которые я использую, потому что не компитентный в таких вопросах, чтобы самому сделать собственный. Это Motion Matching и Final IK, а разбираться с Motion Matching'ом особо желания нет, информации как он работает не особо много да и затраты на разработку собственного того не стоят. Да и про IK не особо много инфы.

    • @vovanchik_ru4208
      @vovanchik_ru4208 2 роки тому +1

      @@HeyWhoTheFuckAreYou Jobs - это всего-лишь попытка внедрить многопоточность в unity. А то что связано с нативным ECS в unity, назывfется DOTS в котором используются Jobs, ECS, BURST и вообще они настолько отделили эту ветку, что даже свои физические движки и рендерер отдельный для работы с DOTS используют. Короче, забудь пока про нативный ecs в Unity. Они слишком заморочились и стабильная версия будет нескоро :) leoecs пока самый удобный способ в c#, чтобы начать его осваивать.

  • @1pampers13aby7
    @1pampers13aby7 2 роки тому

    А вы пользовались leoecs-physics?

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Да, там тот же смысл в отправке ивента о том, что игрок зашёл в триггер, как и в ролике

    • @1pampers13aby7
      @1pampers13aby7 2 роки тому

      @@NightTrainCode, спс
      но я так понял что в этом копаться и копаться, жаль токо что инфы не так много в инете, особенно на русском (чтоб все возможные нюансы). Вот тоже сделал противника - сделал несколько его копий и при попадании снаряда, они по какой то своей очередности удаляються со сцены. Стреляешь в одного, а умирает тот - что рядом с ним)
      Но конечно ОГРОМНЫЙ + этого всего - производительность и отсутствие макарон, достаточно легко ориентироваться

    • @1pampers13aby7
      @1pampers13aby7 2 роки тому

      @@NightTrainCode, интерестно поитересоваться: как у вас (исходя из вашего опыта) с Виндовсом и МакОС? На чем предпочтительней разрабатывать?

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      @@1pampers13aby7 Тому, кто в ООП не чувствует себя, как рыба в воде, тяжело самому без гайдов разобраться в ECS будет, как и мне в своё время
      Всё с опытом приходит, здесь главное принцип работы паттерна уловить и дело в шляпе
      При попадании можешь сделать реквест (OneFrame компонент) и в него передавать отправителя с дамагом (Unit sender, float damage), чтобы понимать кто кому урон наносит)

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      @@1pampers13aby7 Я всю жизнь на Windows сижу, коллега на Маке работает, ему там удобнее (+ мобильность, если MacBook)
      Я предпочтение стационарному компьютеру на шиндовсе отдаю (хоть ни разу на Маке и не работал), так как запихал себе железо какое захотел и радуешься жизни
      Скорее всего, на МакОС, работать удобнее, но если разработка будет упираться в его железо, то беда

  • @walson4708
    @walson4708 2 роки тому

    Всё, Лео екс пришёл кабздец

    • @nightlycat2525
      @nightlycat2525 2 роки тому

      А что с ним?

    • @walson4708
      @walson4708 2 роки тому

      @@nightlycat2525 Уже ничего. Лео просто недавно пригорел и снёс свою репу. Правда, спустя пару дней всё вернул)

  • @user-hq2wg8pg1l
    @user-hq2wg8pg1l Рік тому

    Я в 2D игре, bullet hell. Использовал твой MonoCache
    - передвижение пуль
    - передвижение врагов
    Попробовал реализовать их на LeoEcs, фпс остался одинаковый.
    При 350 обьектах на экране, фпс дропался до 15-20, на обоих системах.

    • @NightTrainCode
      @NightTrainCode  Рік тому

      Странно, что фпс так сильно дропался в 2D игре, мб батчинг не настроен и текстуры пуль не сжаты.
      Я, кстати, тоже проводил такой тест и фпс был одинаковый. Поэтому отказался от ECS в своём проекте.

    • @user-hq2wg8pg1l
      @user-hq2wg8pg1l Рік тому

      @@NightTrainCode это был тест на Redmi 7 кирпиче, спецально храню его для таких целей, пусть знает как он плох
      п.с. там было 350 пуль, с box colider и rigidbody на каждой

    • @user-hq2wg8pg1l
      @user-hq2wg8pg1l Рік тому

      @@NightTrainCode я проверил, хз в чем дело, вообщем на слабенькой мобилке (Redmi7) именно с mono cache - 3 фпс, при 350 выстрелах в секунду из пистолета. без mono cache (то есть пулю наследую от обычно монобеха) 40 фпс

    • @MrLuckyLISS
      @MrLuckyLISS Рік тому

      @@NightTrainCode Вот эта инфа мне действительно нужна была. Думал, целесообразно ли упороться в ECS или юзать старые добрые Моно, особенно после перерыва в 4 года в Unity

    • @NightTrainCode
      @NightTrainCode  Рік тому

      @@MrLuckyLISS Производительность ± одинаковая, но на ECS игра будет меньше памяти потреблять. Для мобилок мб критично, но на Mono ни разу не было проблем

  • @asvirido
    @asvirido 2 роки тому

    Кто-то пробовал на ECS создавать быстро мобильные проекты которые рассчитаны на 2-3 недели разработки полностью игры?

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Можно одинаково быстро, что на монобехах, что на ECS игры сделать
      Всё дело привычки и скиллов

  • @georgii_chubov
    @georgii_chubov 2 роки тому +3

    ECS для передвижения игрока выглядит как оверинжиниринг. На примере врагов был бы очевиднее смысл ecs, а именно - заметный выигрыш по производительности. Ведь в остальном классический ООП дизайн лучше

    • @NightTrainCode
      @NightTrainCode  2 роки тому +2

      Никто не запрещает и монобехи юзать
      Даже такие системки лучше делать системками, чтобы одни выполнялись в одном потоке в Update и можно было контролировать порядок вызовов

  • @4rtochka
    @4rtochka Рік тому +2

    Замедлил до х 0.75 но всеравно слишком быстро

  • @nightkot4917
    @nightkot4917 9 місяців тому +1

    Хорошо бы еще помедленнее, без всего этого "мелькания" и "запредельного скакания по скриптам".

    • @NightTrainCode
      @NightTrainCode  9 місяців тому

      Уже сотый, кто это пишет, это мой старый видос :)

  • @bibyter6451
    @bibyter6451 2 роки тому +1

    Оптимизация какого рода, чойта не понял (

  • @SeempleIQ
    @SeempleIQ Рік тому

    Я чего-то не понимаю, или ты наоборот, когда используешь ref: "ref a = ref filter.,Get1();" берешь структуру, запихиваешь ее в кучу, пораждаю аллокацию, вместо того, чтобы забрать копию структуры выделенную в куче не используя ref?

    • @NightTrainCode
      @NightTrainCode  Рік тому

      Если не использовать ref, то структура каждый раз будет копироваться и не будет передана по ссылке.
      Это значит, что изменения будут внесены в её КОПИЮ, а нам этого не надо

    • @SeempleIQ
      @SeempleIQ Рік тому

      @@NightTrainCode На этом я сильно задумался. Если структуры лежат внутри класса(а это скорее всего так, т.к. их время жизни не внутри scope), то они уже находятся в куче, и с помощью ref ты не создаешь дополнительную копию в стеке, но тогда какой смысл от использования структур?

    • @NightTrainCode
      @NightTrainCode  Рік тому

      @@SeempleIQ Акт передачи объекта по ссылке не приводит к его перемещению в памяти из стека в кучу или наоборот

    • @NightTrainCode
      @NightTrainCode  Рік тому

      @@SeempleIQ К тому же, мы не создаём мусор, когда создаём структуру с помощью new, в отличие от класса

  • @denisgoodman4492
    @denisgoodman4492 10 місяців тому

    Все классно, но скорость записи нужно меньше - не комфортно смотреть.
    И не понятно зачем везде при инициализации объектов (например World) ставить =null первый раз вижу такое требование/рекомендации ничего в документации нет?

    • @NightTrainCode
      @NightTrainCode  10 місяців тому +1

      Конечно, надо полагать, это мои старые видосы)

    • @denisgoodman4492
      @denisgoodman4492 10 місяців тому

      @@NightTrainCode Кстати Вы перешли на DOTS или по-прежнему в основном LeoECS & Murphy?

    • @NightTrainCode
      @NightTrainCode  10 місяців тому

      @@denisgoodman4492 Murphy?)
      Я сейчас Morpeh юзаю. Если Leo, то Proto, либо Lite

  • @axeplay1490
    @axeplay1490 3 місяці тому +1

    Ну и каша в коде конечно с 4 этажными функциями и изменением кучи скриптов чтобы добавить один объект

  • @_VladMir_
    @_VladMir_ 2 роки тому

    "Сломать что то сложно " так же " не так поставил по порядку и всё сломал" и ничего тебе даже не скажет об этой ошибке XD

    • @Digildon
      @Digildon 2 роки тому

      обычно, без ecs часто можно поставить вызовы не по порядку и тебе ничего не скажет. (самое страшное что даже когда узнаешь, выставить вызовы в правильном будет геморройно, конечно зависит от архитектуры)

  • @noob681
    @noob681 2 роки тому

    >using NTC.Global.Pool;
    Ты забыл добавить свой плагин к материалам из урока.

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Не)
      NightPool - это уже другая штучка 🌙

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      А хотя, похоже, что да. Спасибо, что сказал. В ближайшее время апдейт сделаю на гугл диске с найт пулом, а то он уже у меня был в проекте, где тестировал и не заметил ошибку 😬
      upd: пофиксил)

    • @noob681
      @noob681 2 роки тому +1

      @@NightTrainCode Бывает. Тебя нет в дискорд-сервере Leo? Пару дней назад принес твое видео назвав лучшим туториалом.

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      @@noob681 Не-а, можешь кинуть его сюда или в личку вк)
      Ой, пасиба, засмущал 😅😊

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      @@noob681 Ещё превьюшки щас отреворкал на всех видосах, теперь про LeoECS у меня самый привлекательный видос в поиске 😄

  • @testservicesssss
    @testservicesssss Рік тому

    если ускорить в 10 раз то можно и за 2 минуты.

  • @KENISEG
    @KENISEG Рік тому

    у меня голова заболела(

  • @mariacho8174
    @mariacho8174 2 роки тому +3

    Очень неудобный формат видео, просто какое-то мелькание кода..

  • @crwde
    @crwde 4 місяці тому

    Короче ненужно :|

  • @oldosgame
    @oldosgame 9 місяців тому

    да. надо было ускорить видео и сделать его таким образом ужасным для восприятия, чтобы добавить кликбейт "ECS за 20 минут". дизлайк

    • @NightTrainCode
      @NightTrainCode  9 місяців тому

      Я его не ускорял
      Поставь 1х и спасибо за активность)

    • @oldosgame
      @oldosgame 9 місяців тому

      @@NightTrainCodeвидео явно ускоренное. звуковая дорожка записывалась поверх него. это очень сильно заметно. можно было обойтись без кликбейта и за 40-60 минут объяснить толком, что к чему в этом ECS, а не проноситься "делаем это, это. все работает". аудитория у ролика совершенно иная, чем у дударя, поэтому, если уж взялся, нужно было раскрыть тему полностью. это претензия не конкретно к тебе, а к всем, кто так делает. а делают так практически все айтишники, мнящие себя крутыми преподавателями, думая, что все итак понятно

    • @NightTrainCode
      @NightTrainCode  9 місяців тому

      @@oldosgame Вам не лень тратить столько времени на критику моего ролика двухгодовалой давности? Видео не ускорено, но есть проблемы с подачей, прекрасно знаю. В новых видео всё намного и намного лучше :)

  • @xXSallamanderXx
    @xXSallamanderXx 2 роки тому +3

    Тараторишь с листочка, зажовываешь слова, выводит из себя.
    Складывается ощущение, что видос записан не для обучения, а для галочки, чтобы в резюме было.

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      Пойду плакать в подушку, бро 😊

  • @pengw1negames
    @pengw1negames Рік тому

    @NightTrainCode Пожалуйста выручай, спустя год нашел твой ролик, по очень интересующей теме. Но уже в самом начале затык. Voody.UniLeo никак не находится, хотя пакет поставил

  • @dadlord689
    @dadlord689 2 роки тому +1

    Дибильная музыка на фоне, сленг который вообще не к месту (монобехи) - это настораживает. Автор наверное не понимает что делает. Материал сложный, а сама попытка провести аналогию между OOP и ECS - абсурдна. Это как как провести аналогию между птицей и самолётом (оба ж летают, только нужно немного прикрутить).

  • @HINCO38
    @HINCO38 9 місяців тому

    ты все еще считаешь лео ecs актуальным и удобным?

    • @NightTrainCode
      @NightTrainCode  9 місяців тому

      Classic удобный, но не актуальный. У LeoECS Lite ситуация лучше, но есть проблемы с производительностью, если мир разрастается. Я перешёл на Morpeh ECS

    • @crwde
      @crwde 4 місяці тому

      Короче опять ненужно 😅