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

  Рет қаралды 28,015

Night Train Code

Night Train Code

Күн бұрын

Пікірлер: 167
@Digildon
@Digildon 2 жыл бұрын
Чел, спасибо. Твой тутор прям как вода в пустыне. Сейчас нигде нет, но капец как нужно.
@NightTrainCode
@NightTrainCode 2 жыл бұрын
На здоровье, рад, что помог)
@adengard3473
@adengard3473 3 жыл бұрын
Хотелось бы режиссерскую версию подлиннее с обзором лео ецс (какие методы есть, что делают, за что отвечают, как использовать... Чтобы прям совсем для чайников). Видео супер, канал бомбезный, автор попадет в вальхаллу для прогеров ))) хотелось бы такое года 3 назад
@NightTrainCode
@NightTrainCode 3 жыл бұрын
Спасибо 🍰😜 Можешь написать про те моменты, с которыми есть непонятки в ECS. После того, как остальные ролики по плану смастерю, возможно, ещё более подробный урок выпущу) А пока в этом попытался собрать максимум того, что точно пригодится при разработке или используется чаще всего 🍨
@adengard3473
@adengard3473 3 жыл бұрын
@@NightTrainCode Проблема в том, что ecs считается как бы не для новичков и про неё может рассказать два с половиной человека, которые говорят уже на непонятном языке, оперируя терминами которые иногда за гранью понимания ( а если и понятны, то только в теории... да и то с натяжкой. Плюс это еще на пятой скорости речи, так что мозги пухнут). Понятное дело, что можно на паузу ставить и короткие ролики чаще смотрят, но бывает тяжко воспринимать не линейную инфу, да еще и без пояснений или без представления полной картины (чего мы хотим добиться, почему именно так, какие проблемы нас могли бы подстерегать). ВВодный урок на мой взгляд должен рассказать как работает лео (имеется ввиду методы которыми мы можем оперировать, их назначение, порядок применения с пояснениями (Что мы делаем и почему в таком порядке. Казалось бы это очевидно, но думаю не всем).
@NightTrainCode
@NightTrainCode 3 жыл бұрын
@Aden Gard Конечно, далеко не всем это очевидно, если даже про монобехи мне пишут люди, что не всё понятно Сначала только все к ООП привыкли, а тут ECS со своим дата ориентед с ноги влетает) Если будет время и желание, разжую LeoECS для новичков 🔥
@adengard3473
@adengard3473 3 жыл бұрын
@@NightTrainCode Просто по юнити тонны видео где каждый кто, что то пишет, говорит это вот первое что вы видите, метод старт и обдейт. В других еще скажут, что есть Авейк и ОнЕнейбл, в третьем Фиксед и Ласт обдейты, расскажут для чего все это... И так по крупицам собираешь картину, а с лео есть 3 видео и черная магия ))). Не понятно , что прописывать, что там делается, что можно прописать.
@NightTrainCode
@NightTrainCode 3 жыл бұрын
@@adengard3473 Там по документации всё достаточно просто. А тем, кто в ООП шарит - будет куда легче разобраться без видосов
@vovanchik_ru4208
@vovanchik_ru4208 3 жыл бұрын
слишком быстро. Я достаточно хорошо знаком с материалом, но даже для меня всё просто какое-то мелькание картинки.
@NightTrainCode
@NightTrainCode 3 жыл бұрын
Спасибо за замечание, учту в следующих роликах 🤙
@Kealstex
@Kealstex 2 жыл бұрын
Думаю, пора попробовать ECS. Псмотрела видос. " ну да,вроде всё понятно" *через полтора часа..* " ДА БЛ№№Ь ЧО ОН НЕ ПРЫГАЕТ" боже дай сил не сойти с ума.
@NightTrainCode
@NightTrainCode 2 жыл бұрын
Если нервов не хватает, то можно и дальше на монобехах кодить) Тем более если ты любитель и не требуют этого на работе
@Kealstex
@Kealstex 2 жыл бұрын
@@NightTrainCode уже разобралась:D спасибо. да на работе не требует, но для самообразования явно полезно. так глядишь, через полгода и сферу деятельности сменить можно будет в качестве джуна)
@pengw1negames
@pengw1negames Жыл бұрын
@@NightTrainCode Такая же проблема, ну не прыгает и все. К тому же зависаю в воздухе и rigidbody не помогает. Гравитации будто не существует. Думал что прыжки помогут это исправить, однако нет, все так же в воздухе, так еще и не прыгает
@zitskycom
@zitskycom 3 жыл бұрын
Ох е, ток сегодня узнал про ecs, думал старое видео смотрю, а оно 6 часов назад вышло 😂
@NightTrainCode
@NightTrainCode 3 жыл бұрын
Это я всё предусмотрел 😄🔥
@НикитаБедарев-ч6и
@НикитаБедарев-ч6и 6 ай бұрын
Отдельное спасибо за 18:16 пол дня тупил
@firstvf
@firstvf 5 ай бұрын
За ролик, конечно, спасибо, но единственное, что я не могу понять - зачем делать спидран по ролику-туториалу? Даже если в названии нет ни одного упоминания о том, что это учебный материал, в любом случае с первых секунд он себя позиционирует как обучающий. Невероятно трудно пытаться извлечь какую-то информацию, когда она скипается буквально за 1-2 секунды.. приходится >Постоянно< отматывать назад. Надеюсь, если будут еще гайды по ECS, то чуть-чуть по-медленнее и без скипа некоторых новосозданных классов/структур😵‍💫 Но еще раз спасибо! материала по этой теме действительно мало :(
@NightTrainCode
@NightTrainCode 5 ай бұрын
Старый ролик, в новых не спидраню) Спасибо за коммент
@НикитаБедарев-ч6и
@НикитаБедарев-ч6и 6 ай бұрын
Проморгал я момент с entity reference, думал думал как решить, в итоге сделал через сравнивание позиции коллайдера и всех энтити, но твое решение куда лучше
@entity5148
@entity5148 3 жыл бұрын
Большое спасибо тебе за полезный контент!) Желаю тебе много подписчиков!
@NightTrainCode
@NightTrainCode 3 жыл бұрын
На здоровье 🍰 Большое спасибо 😎😜
@karimkimsanbaev7932
@karimkimsanbaev7932 11 ай бұрын
Монобэхах) Кто использует монобэхи - не забывайте включать поворотники! По тутору: 1. internal в компонентах можно оставить, если провайдеры тоже делать интернал 2. Time.deltaTime нету в видео - пока не посмотрел в исходник проекта, не понял, что он там нужен. Да, ты об этом сказал) 3. Камеру обновлять лучше в LateUpdate 4. Нотация приватных членов класса без _ смотрится не привычно - вкусовщина
@psy_gamer
@psy_gamer 3 жыл бұрын
Что тут можно сказать - мой мозг однозначно сломался! Интересный вариант, но к нему нужно привыкать не одну неделю.
@NightTrainCode
@NightTrainCode 3 жыл бұрын
Что тут можно сказать - ставь мою системку NightCache (есть видос на канале) и не парься 😎🔥
@psy_gamer
@psy_gamer 3 жыл бұрын
@@NightTrainCode Люблю сам писать системы, чтобы потом легче было с ними разбираться, чем использовать чужой фраемворк) Но спасибо!
@NightTrainCode
@NightTrainCode 3 жыл бұрын
@@psy_gamer Это отлично) Но бывают случаи, в которых точно не нужно изобретать велосипед, например, свою ECS писать, как это по приколу недавно делал я 😆
@vicktoriashepard
@vicktoriashepard 3 жыл бұрын
Основной плюс ecs не в одном update и не в представлении всех сущностей простыми float, а в не дефрагментации памяти вроде как.
@NightTrainCode
@NightTrainCode 3 жыл бұрын
Да в принципе в простоте и отсутствии кучи лишних методов, полей и свойств, как у монобехов, которые нужны далеко не каждому объекту. Энтитюхи, компоненты и системы используют только то, что им нужно, что тоже плюс И да. В ECS всё лежит где-то рядышком в памяти
@КонстантинЪЪЪ
@КонстантинЪЪЪ 2 жыл бұрын
думаю PlayerInputSystem должна генерировать команды управления для ентити, а уже в нужной системе эти команды преобразуются в логику передвижения ;)
@КонстантинЪЪЪ
@КонстантинЪЪЪ 2 жыл бұрын
@Дарий сделать "запись" игры например
@MarePlayZ
@MarePlayZ Жыл бұрын
Начинающий юнити программист... Ещё даже нет своих проектов. Вот сейчас работаю над собственным маленьким шмапом, чисто в юнити без фреймворком и т.д., т.к. не умею пока что. Хочу двигатся и совершенствоваться. С чем стоит знакомится чтобы улучшать свой код? На счёт ролика очень интересно но совсем ничего непонятно😅 надо будет пересмотреть несколько раз
@BlackHole-ei9mi
@BlackHole-ei9mi Жыл бұрын
Бро нет смысла, я сам сижу пытаюсь в фреймворки, но LeoEcs обновился и он сейчас работает со структурами, пока не видел туториалов по нему абсолютно, только документацию на гите смотреть.
@cmldev
@cmldev 7 ай бұрын
Такой бы тутор по LeoEcs lite, было бы супер. Тут уже многое устарело
@nightkot4917
@nightkot4917 11 ай бұрын
Хорошо бы еще помедленнее, без всего этого "мелькания" и "запредельного скакания по скриптам".
@NightTrainCode
@NightTrainCode 11 ай бұрын
Уже сотый, кто это пишет, это мой старый видос :)
@ncinsli
@ncinsli 2 жыл бұрын
Отличный ролик, большое спасибо за часть с провайдерами! Почти нет инфы про нее
@NightTrainCode
@NightTrainCode 2 жыл бұрын
На здоровье)
@Hellscaner
@Hellscaner 2 жыл бұрын
Стоит ли сразу учится писать на ECS, или использовать ваш NightCache? А то привык уже к классике.
@NightTrainCode
@NightTrainCode 2 жыл бұрын
Да всё по желанию, я и на работе, и у себя NightCache юзаю и иногда подгружаю его обновления на GitHub Производительность в итоге не уступает ECS, да и больше всё равно нагрузка идёт на рендеринг, а не на вычисления, так что не парься
@OlegRonaldo9
@OlegRonaldo9 2 жыл бұрын
Спасибо за видео. Есть замечание по поводу скорости, с которой ты объясняешь. В некоторых моментах приходиться на 0.75 ставить. И у меня вопросик, менять значения в рантайме никак нельзя? Например чувствительность мыши.
@NightTrainCode
@NightTrainCode 2 жыл бұрын
На здоровье) Спасибо за конструктивную критику Почему нельзя то?) Всё можно. Персонажи иначе как бы двигались?)
@OlegRonaldo9
@OlegRonaldo9 2 жыл бұрын
@@NightTrainCode Я имел в виду в ручную в инспекторе. Просто когда запускаешь, то все провайдеры пропадают же.
@OlegRonaldo9
@OlegRonaldo9 2 жыл бұрын
@@NightTrainCode И ещё можно вопрос. foreach воспринимать как обычный update? На 9:18 ты вынес методы за пределы foreach. Можно было же lookComponent.direction.x = Input.GetAxis("Mouse X); ? Просто для читабельности сделано или есть какой-то сакральный смысл?
@NightTrainCode
@NightTrainCode 2 жыл бұрын
@@OlegRonaldo9 Можно, никто же не запрещает совмещать Ecs и МоноБехи
@NightTrainCode
@NightTrainCode 2 жыл бұрын
@@OlegRonaldo9 Input.GetAxis не нужно вызывать больше, чем один раз за кадр. Если бы подходящих для этого Entity было бы не 1, а 100, то метод вызвался бы лишних 99 раз, выдав везде одинаковый результат Оптимизация)
@ИльяМаглич-ь2е
@ИльяМаглич-ь2е 2 жыл бұрын
Привет) Спасибо за видос. Лайк и подписка! Понимаю, что рекомендации ютуба, но всё-таки довольно быстро всё происходит в видео. Пришлось пересматривать с паузами) У меня есть несколько вопросов: 1) По идее связывание с монобехами будет в любом случае. Может вообще выйти так, что из-за кучи связываний производительность станет даже хуже, чем просто на бехах?) Довольно странный вопрос, но мало ли был опыт. 2) Немного не понял, почему именно система игрока должна быть первой, а потом уже движение?
@NightTrainCode
@NightTrainCode 2 жыл бұрын
Привет, спасибо) 1) Нет, особенно если все ссылки на классы кэшировать в переменные) 2) Сначала идёт система ввода направления игрока (задаётся Direction), а потом система передвижения двигает игрока в этот самый Direction
@ИльяМаглич-ь2е
@ИльяМаглич-ь2е 2 жыл бұрын
@@NightTrainCode Чтобы открыть сцены из архива нужен юнити последней версии? А то у меня что-то не открывает
@NightTrainCode
@NightTrainCode 2 жыл бұрын
@@ИльяМаглич-ь2е Я на 2021 работаю, но, думаю, и на 2020 должно завестись
@grandsunhar
@grandsunhar 2 жыл бұрын
Супер
@georgii_chubov
@georgii_chubov 2 жыл бұрын
ECS для передвижения игрока выглядит как оверинжиниринг. На примере врагов был бы очевиднее смысл ecs, а именно - заметный выигрыш по производительности. Ведь в остальном классический ООП дизайн лучше
@NightTrainCode
@NightTrainCode 2 жыл бұрын
Никто не запрещает и монобехи юзать Даже такие системки лучше делать системками, чтобы одни выполнялись в одном потоке в Update и можно было контролировать порядок вызовов
@great8814
@great8814 2 жыл бұрын
Привет! Скоро допишу одну из своих игр и недавно узнал про ecs. Думаю следующую свою +- крупную игру написать с помощью ecs. Но мне интересно, если я разберусь в esc, то мне нужно будет всю игру писать с помощью ecs? Это как архитектура или вокруг ecs нужно выстраивать какую-то архитектуру для ecs? Спасибо!
@NightTrainCode
@NightTrainCode 2 жыл бұрын
Можешь что-то на монобехах писать, можешь что-то на ECS, никто не запрещает) В ECS кучу систем и компонентов пиши на каждый чих, вот и получится архитектура. Но, конечно, всё делать надо с умом и думать на будущее
@ДмитрийХристов-х3щ
@ДмитрийХристов-х3щ 2 ай бұрын
Привет, можешь, пожалуйста, сделать ролик про Ecs lite? Там я пробовал совместить Ecs lite и Voody UniLeo, но выдавало ошибку(поменял на leoEcs и все заработало). Но том с 22 года заморозили проект и сейчас развивается только ECS Lite, так что было бы круто узнать как именно с этой версией работать и что можно добавить вместо Voody UniLeo. Спасибо)
@_EnVyUs
@_EnVyUs 3 жыл бұрын
У меня вот такой вопрос, не затратно ли каждый раз использовать фильтры и возможно ли хеширование в ecs?
@NightTrainCode
@NightTrainCode 3 жыл бұрын
Нет, не затратно, фильтры обновляются только при изменении компонентов на entity, а компоненты достаются по интам
@vovanchik_ru4208
@vovanchik_ru4208 3 жыл бұрын
нет, не затратно. Фильтры это просто "ключи" к определённой области памяти. А вот циклы в run должны вызывать больше вопросов :) Если у Вас заведомо единственный компонент в фильтре, то рациональней использовать просто условие if(filter.Length>0)... Но на самом деле это всё же экономия на спичках. Систем может быть сотни и тысячи при правильном их использовании, ведь они не обязаны всегда все использоваться. За остальные мелочи отвечают оптимизаторы при подготовке кода для виртуальной машины(JIT-компиляция, CLR и даже burst можно использовать :)). Короче, просто пишите код, а там разберётесь с производительностью. При сколь-либо правильном использовании ecs подхода - запас прочности производительности будет достаточным :) Ну а если что, то не стесняйтесь использовать стандартный профилировщик unity для большего понимание на что надо пенять :) Удачи!
@KingoSr
@KingoSr 2 жыл бұрын
Что делать, если ошибка при добавлении проекта из git с помощью package manager?
@МОРЕКС-к1и
@МОРЕКС-к1и 2 жыл бұрын
А что лучше использовать? Night cache или Ecs для андроидов? И ещё, проверять постоянно например jumpEvent не затратно? или лучше сделать Action в структуре и через него методы подписывать
@NightTrainCode
@NightTrainCode 2 жыл бұрын
Ecs в том случае, если уверен, что справишься с этим паттерном и хорошо в нём шаришь А так вместо Ecs и NightCache рекомендую обратить внимание на мой MonoCache 2.0: github.com/MeeXaSiK/MonoCache Системка из моего первого видео, которую я обновил и довёл до ума. Документация имеется (версия в видео устарела), там всё проще, чем с NightCache
@dmitry711
@dmitry711 Жыл бұрын
Спасибо. Планируешь ли ролик про ECS от Unity (DOTS)?
@NightTrainCode
@NightTrainCode Жыл бұрын
На здоровье. Нет, пока не вижу смысла в DOTS. Лучше уж Morpeh
@denisgoodman4492
@denisgoodman4492 Жыл бұрын
@@NightTrainCode Compile Burst
@ЭдуардКик
@ЭдуардКик Жыл бұрын
Я в 2D игре, bullet hell. Использовал твой MonoCache - передвижение пуль - передвижение врагов Попробовал реализовать их на LeoEcs, фпс остался одинаковый. При 350 обьектах на экране, фпс дропался до 15-20, на обоих системах.
@NightTrainCode
@NightTrainCode Жыл бұрын
Странно, что фпс так сильно дропался в 2D игре, мб батчинг не настроен и текстуры пуль не сжаты. Я, кстати, тоже проводил такой тест и фпс был одинаковый. Поэтому отказался от ECS в своём проекте.
@ЭдуардКик
@ЭдуардКик Жыл бұрын
@@NightTrainCode это был тест на Redmi 7 кирпиче, спецально храню его для таких целей, пусть знает как он плох п.с. там было 350 пуль, с box colider и rigidbody на каждой
@ЭдуардКик
@ЭдуардКик Жыл бұрын
@@NightTrainCode я проверил, хз в чем дело, вообщем на слабенькой мобилке (Redmi7) именно с mono cache - 3 фпс, при 350 выстрелах в секунду из пистолета. без mono cache (то есть пулю наследую от обычно монобеха) 40 фпс
@MrLuckyLISS
@MrLuckyLISS Жыл бұрын
@@NightTrainCode Вот эта инфа мне действительно нужна была. Думал, целесообразно ли упороться в ECS или юзать старые добрые Моно, особенно после перерыва в 4 года в Unity
@NightTrainCode
@NightTrainCode Жыл бұрын
@@MrLuckyLISS Производительность ± одинаковая, но на ECS игра будет меньше памяти потреблять. Для мобилок мб критично, но на Mono ни разу не было проблем
@walson4708
@walson4708 2 жыл бұрын
Всё, Лео екс пришёл кабздец
@nightlycat2525
@nightlycat2525 2 жыл бұрын
А что с ним?
@walson4708
@walson4708 2 жыл бұрын
@@nightlycat2525 Уже ничего. Лео просто недавно пригорел и снёс свою репу. Правда, спустя пару дней всё вернул)
@axeplay1490
@axeplay1490 5 ай бұрын
Ну и каша в коде конечно с 4 этажными функциями и изменением кучи скриптов чтобы добавить один объект
@NightTrainCode
@NightTrainCode 5 ай бұрын
Возняяя
@victorvoiz8839
@victorvoiz8839 2 жыл бұрын
Блин, сделай подобный видосик по Entitas. На просторах не нашел ни одного нормального
@4rtochka
@4rtochka Жыл бұрын
Замедлил до х 0.75 но всеравно слишком быстро
@PurpleDaemon_
@PurpleDaemon_ 2 жыл бұрын
Подскажи, пожалуйста, по логике этого подхода я в системе "выстрел" должен обработать все связанное с ним, то есть заспавнить пулю, начать анимацию, звук. Или наоборот все анимации в системе анимаций, и все звуки в системе звуков?
@NightTrainCode
@NightTrainCode 2 жыл бұрын
Да, всё по отдельным системам, конечно Системы на каждый чих Но никто не мешает и всё в одну засунуть)
@IgorKu-m4o
@IgorKu-m4o 2 жыл бұрын
Куда движется Юнити? ECS в будущем заменит Монобихейвер? Или они они будут существовать параллельно?
@NightTrainCode
@NightTrainCode 2 жыл бұрын
Не думаю, что MonoBehaviour исчезнут. А так, Unity рекламируют системки DOTS и Jobs. Многопоток, привет
@denisgoodman4492
@denisgoodman4492 Жыл бұрын
Все классно, но скорость записи нужно меньше - не комфортно смотреть. И не понятно зачем везде при инициализации объектов (например World) ставить =null первый раз вижу такое требование/рекомендации ничего в документации нет?
@NightTrainCode
@NightTrainCode Жыл бұрын
Конечно, надо полагать, это мои старые видосы)
@denisgoodman4492
@denisgoodman4492 Жыл бұрын
@@NightTrainCode Кстати Вы перешли на DOTS или по-прежнему в основном LeoECS & Murphy?
@NightTrainCode
@NightTrainCode Жыл бұрын
@@denisgoodman4492 Murphy?) Я сейчас Morpeh юзаю. Если Leo, то Proto, либо Lite
@ДенисАндриянов-к8ъ
@ДенисАндриянов-к8ъ 2 жыл бұрын
Как я понял, любые Run системы существуют всегда и Run запускается каждый кадр. Поэтому событий как таковых нету, только создание новых энтити или компонентов. Не существует подписок. Это немного ломает мозг и смущает. Я верно это понимаю?
@NightTrainCode
@NightTrainCode 2 жыл бұрын
События есть и я про это тоже говорил в видео) Подписки тоже никто не запрещал
@intrigazTV
@intrigazTV 2 жыл бұрын
Как называется эта тема оформления (синтаксиса)? Офигенная
@NightTrainCode
@NightTrainCode 2 жыл бұрын
Привет, "Rider Melon Dark"
@bibyter6451
@bibyter6451 2 жыл бұрын
Оптимизация какого рода, чойта не понял (
@daemonstergames716
@daemonstergames716 2 жыл бұрын
А scriptable objects можно использовать с ECS? Нет у них побочных конфликтов?
@NightTrainCode
@NightTrainCode 2 жыл бұрын
Можно, всё там окей) Им там не из-за чего возникать, на ECS можно творить всё то же самое, что и на монобехах, просто немного по-другому Так как это паттерн проектирования, а не какая-то иная магическая штука)
@_VladMir_
@_VladMir_ 2 жыл бұрын
"Сломать что то сложно " так же " не так поставил по порядку и всё сломал" и ничего тебе даже не скажет об этой ошибке XD
@Digildon
@Digildon 2 жыл бұрын
обычно, без ecs часто можно поставить вызовы не по порядку и тебе ничего не скажет. (самое страшное что даже когда узнаешь, выставить вызовы в правильном будет геморройно, конечно зависит от архитектуры)
@janitor13
@janitor13 Жыл бұрын
Когда стоит использовать для классов internal а когда public?
@NightTrainCode
@NightTrainCode Жыл бұрын
Да забей, пиши public, это я молодой был, глупый)
@OlegRonaldo9
@OlegRonaldo9 2 жыл бұрын
Вопрос про удаление объекта. Глянул другие проекты на ECS и почему-то некоторые не удаляют объект, а просто выключает его через SetActive(). Т.е. тут по большому счету это на личное усмотрение? Если не учитывать того, что просто засирается иерархия выключенных объектов.
@NightTrainCode
@NightTrainCode 2 жыл бұрын
Возможно в этих проектах работает пул объектов, иначе проще объект просто удалить, а не отключить Если объект просто отключить и не удалить Entity, то системы продолжат его обрабатывать, даже если он выключен
@OlegRonaldo9
@OlegRonaldo9 2 жыл бұрын
@@NightTrainCode Спасибо. Про пул объектов не знал.
@NightTrainCode
@NightTrainCode 2 жыл бұрын
@@OlegRonaldo9 На здоровье. У меня есть ролик про Object Pooling
@OlegRonaldo9
@OlegRonaldo9 2 жыл бұрын
@@NightTrainCode Хорошо, гляну.
@Degril
@Degril 2 жыл бұрын
Я чего-то не понимаю, или ты наоборот, когда используешь ref: "ref a = ref filter.,Get1();" берешь структуру, запихиваешь ее в кучу, пораждаю аллокацию, вместо того, чтобы забрать копию структуры выделенную в куче не используя ref?
@NightTrainCode
@NightTrainCode 2 жыл бұрын
Если не использовать ref, то структура каждый раз будет копироваться и не будет передана по ссылке. Это значит, что изменения будут внесены в её КОПИЮ, а нам этого не надо
@Degril
@Degril 2 жыл бұрын
@@NightTrainCode На этом я сильно задумался. Если структуры лежат внутри класса(а это скорее всего так, т.к. их время жизни не внутри scope), то они уже находятся в куче, и с помощью ref ты не создаешь дополнительную копию в стеке, но тогда какой смысл от использования структур?
@NightTrainCode
@NightTrainCode 2 жыл бұрын
@@Degril Акт передачи объекта по ссылке не приводит к его перемещению в памяти из стека в кучу или наоборот
@NightTrainCode
@NightTrainCode 2 жыл бұрын
@@Degril К тому же, мы не создаём мусор, когда создаём структуру с помощью new, в отличие от класса
@1pampers13aby7
@1pampers13aby7 2 жыл бұрын
А будет все работать в 2D? Не могу реализовать прыжок в своей 2д игре. Телепортируется и все(
@NightTrainCode
@NightTrainCode 2 жыл бұрын
LeoECS будет работать везде) Значит где-то допустил ошибку, либо в 2D это немного по-другому реализуется
@noob681
@noob681 3 жыл бұрын
>using NTC.Global.Pool; Ты забыл добавить свой плагин к материалам из урока.
@NightTrainCode
@NightTrainCode 3 жыл бұрын
Не) NightPool - это уже другая штучка 🌙
@NightTrainCode
@NightTrainCode 3 жыл бұрын
А хотя, похоже, что да. Спасибо, что сказал. В ближайшее время апдейт сделаю на гугл диске с найт пулом, а то он уже у меня был в проекте, где тестировал и не заметил ошибку 😬 upd: пофиксил)
@noob681
@noob681 3 жыл бұрын
@@NightTrainCode Бывает. Тебя нет в дискорд-сервере Leo? Пару дней назад принес твое видео назвав лучшим туториалом.
@NightTrainCode
@NightTrainCode 3 жыл бұрын
@@noob681 Не-а, можешь кинуть его сюда или в личку вк) Ой, пасиба, засмущал 😅😊
@NightTrainCode
@NightTrainCode 3 жыл бұрын
@@noob681 Ещё превьюшки щас отреворкал на всех видосах, теперь про LeoECS у меня самый привлекательный видос в поиске 😄
@mihanikgames3304
@mihanikgames3304 2 жыл бұрын
быстро пролистал, но вывода о повышении производительности не увидел. Подскажите какой выигрыш по производительности получается и на какой минуте это показано?
@NightTrainCode
@NightTrainCode 2 жыл бұрын
Глянь мой ролик про кэширование апдейтов. Там смысл тот же самый в приросте производительности (25%)
@mihanikgames3304
@mihanikgames3304 2 жыл бұрын
@@NightTrainCode Но ведь это другой метод. Вы хотите сказать, что выигрыш будет такой же?
@NightTrainCode
@NightTrainCode 2 жыл бұрын
@@mihanikgames3304 Да, на ECS выигрыш будет чуть-чуть больше, но не заметно Так как везде смысл в том, что будет один апдейт, вместо огромной кучи
@nouaksomtac6782
@nouaksomtac6782 2 жыл бұрын
ну я толка пробую Ecs но по моему легкасть распаралеливания наверное просто когда ти проходеш по масиву "обектов" то ти мозеш давать тот момент каздому обекту по патоку вот теперь будет исползаваса болше много поточности (но ето мои догадки)
@asvirido
@asvirido 2 жыл бұрын
Кто-то пробовал на ECS создавать быстро мобильные проекты которые рассчитаны на 2-3 недели разработки полностью игры?
@NightTrainCode
@NightTrainCode 2 жыл бұрын
Можно одинаково быстро, что на монобехах, что на ECS игры сделать Всё дело привычки и скиллов
@ВасилийМигулин-т1й
@ВасилийМигулин-т1й 2 жыл бұрын
Не понимаю почему у меня нет доступа к пространству имен Voody.Unileo хотя я все пакеты установил
@pengw1negames
@pengw1negames Жыл бұрын
Добрый день, решили ли вы эту проблему? Если да то как?
@ВасилийМигулин-т1й
@ВасилийМигулин-т1й Жыл бұрын
@@pengw1negames это устаревшая информация
@ВасилийМигулин-т1й
@ВасилийМигулин-т1й Жыл бұрын
@@pengw1negames нужно установить все пакеты Лео Стандартный, di и т.д.
@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 жыл бұрын
@@1pampers13aby7 Я всю жизнь на Windows сижу, коллега на Маке работает, ему там удобнее (+ мобильность, если MacBook) Я предпочтение стационарному компьютеру на шиндовсе отдаю (хоть ни разу на Маке и не работал), так как запихал себе железо какое захотел и радуешься жизни Скорее всего, на МакОС, работать удобнее, но если разработка будет упираться в его железо, то беда
@bananosplt7368
@bananosplt7368 3 жыл бұрын
не пойму, если мы обращаемся к струтурам по ссылкам, не становится она как класс ?
@NightTrainCode
@NightTrainCode 3 жыл бұрын
Класс - это класс, а структура - это струкура Структура собой представляет значение, а класс - ссылку Например, Vector3 - это структура Можешь глянуть разницу в справке
@walson4708
@walson4708 2 жыл бұрын
Нет, ты просто не создатель копию объекта структуры, а работаешь напрямую с её первоначальным объектом.
@HeyWhoTheFuckAreYou
@HeyWhoTheFuckAreYou 3 жыл бұрын
А как быть если у менять есть условный плагин написанный стандартным ООП, нужно ли самому всё переписывать под ECS в таком случае или стоит отказаться от его использования если этих плагинов достаточно много, а тратить время на то, чтобы адаптировать чужой код не особо хочется???
@NightTrainCode
@NightTrainCode 3 жыл бұрын
Никто не запрещает полностью отказываться от монобехов) Если свой плагин использует апдейты, в которых что-то тяжёлое и их много на сцене, то советую перебазироваться на ECS. Если он не требует много ресурсов, то забей, максимум на мой NightCache перекинь, если хочешь. Там архитектуру менять не надо 🤙 Чужой монобех код переписывать на ECS - да кому оно надо 😄
@vovanchik_ru4208
@vovanchik_ru4208 3 жыл бұрын
хочешь писать на ecs - код надо в любом случае декомпозировать(разделить на мелкие системы) и никуда от этого не деться
@NightTrainCode
@NightTrainCode 3 жыл бұрын
@@vovanchik_ru4208 В идеале, конечно, чтобы было так. Но надо оценивать и время, которое уйдёт на снос монобехов под корень
@HeyWhoTheFuckAreYou
@HeyWhoTheFuckAreYou 3 жыл бұрын
@@NightTrainCode Ну я хз, он использует Jobs это вроде как ECS и плюс там несколько ассетов которые я использую, потому что не компитентный в таких вопросах, чтобы самому сделать собственный. Это Motion Matching и Final IK, а разбираться с Motion Matching'ом особо желания нет, информации как он работает не особо много да и затраты на разработку собственного того не стоят. Да и про IK не особо много инфы.
@vovanchik_ru4208
@vovanchik_ru4208 3 жыл бұрын
@@HeyWhoTheFuckAreYou Jobs - это всего-лишь попытка внедрить многопоточность в unity. А то что связано с нативным ECS в unity, назывfется DOTS в котором используются Jobs, ECS, BURST и вообще они настолько отделили эту ветку, что даже свои физические движки и рендерер отдельный для работы с DOTS используют. Короче, забудь пока про нативный ecs в Unity. Они слишком заморочились и стабильная версия будет нескоро :) leoecs пока самый удобный способ в c#, чтобы начать его осваивать.
@testservicesssss
@testservicesssss Жыл бұрын
если ускорить в 10 раз то можно и за 2 минуты.
@mariacho8174
@mariacho8174 2 жыл бұрын
Очень неудобный формат видео, просто какое-то мелькание кода..
@crwde
@crwde 6 ай бұрын
Короче ненужно :|
@KENISEG
@KENISEG Жыл бұрын
у меня голова заболела(
@NightTrainCode
@NightTrainCode Жыл бұрын
Relax
@xXSallamanderXx
@xXSallamanderXx 2 жыл бұрын
Тараторишь с листочка, зажовываешь слова, выводит из себя. Складывается ощущение, что видос записан не для обучения, а для галочки, чтобы в резюме было.
@NightTrainCode
@NightTrainCode 2 жыл бұрын
Пойду плакать в подушку, бро 😊
@dadlord689
@dadlord689 2 жыл бұрын
Дибильная музыка на фоне, сленг который вообще не к месту (монобехи) - это настораживает. Автор наверное не понимает что делает. Материал сложный, а сама попытка провести аналогию между OOP и ECS - абсурдна. Это как как провести аналогию между птицей и самолётом (оба ж летают, только нужно немного прикрутить).
@oldosgame
@oldosgame 11 ай бұрын
да. надо было ускорить видео и сделать его таким образом ужасным для восприятия, чтобы добавить кликбейт "ECS за 20 минут". дизлайк
@NightTrainCode
@NightTrainCode 11 ай бұрын
Я его не ускорял Поставь 1х и спасибо за активность)
@oldosgame
@oldosgame 11 ай бұрын
@@NightTrainCodeвидео явно ускоренное. звуковая дорожка записывалась поверх него. это очень сильно заметно. можно было обойтись без кликбейта и за 40-60 минут объяснить толком, что к чему в этом ECS, а не проноситься "делаем это, это. все работает". аудитория у ролика совершенно иная, чем у дударя, поэтому, если уж взялся, нужно было раскрыть тему полностью. это претензия не конкретно к тебе, а к всем, кто так делает. а делают так практически все айтишники, мнящие себя крутыми преподавателями, думая, что все итак понятно
@NightTrainCode
@NightTrainCode 11 ай бұрын
@@oldosgame Вам не лень тратить столько времени на критику моего ролика двухгодовалой давности? Видео не ускорено, но есть проблемы с подачей, прекрасно знаю. В новых видео всё намного и намного лучше :)
@pengw1negames
@pengw1negames Жыл бұрын
@NightTrainCode Пожалуйста выручай, спустя год нашел твой ролик, по очень интересующей теме. Но уже в самом начале затык. Voody.UniLeo никак не находится, хотя пакет поставил
@HINCO38
@HINCO38 11 ай бұрын
ты все еще считаешь лео ecs актуальным и удобным?
@NightTrainCode
@NightTrainCode 11 ай бұрын
Classic удобный, но не актуальный. У LeoECS Lite ситуация лучше, но есть проблемы с производительностью, если мир разрастается. Я перешёл на Morpeh ECS
@crwde
@crwde 6 ай бұрын
Короче опять ненужно 😅
Оптимизация игры на Unity. Object Pooling
6:23
Night Train Code
Рет қаралды 8 М.
АЗАРТНИК 4 |СЕЗОН 2 Серия
31:45
Inter Production
Рет қаралды 1,1 МЛН
大家都拉出了什么#小丑 #shorts
00:35
好人小丑
Рет қаралды 97 МЛН
Оптимизация игры на Unity. Паттерн Observer
7:31
Оптимизация игры на Unity. Universal Render Pipeline
9:27
Подробный урок по Entity Component System в Unity
15:27
Insane One - Разработка игр
Рет қаралды 43 М.
Фишки в C# и Unity, о которых ты не слышал!
19:02
РАЗБОР собеседования на 4000$ - Unity Developer | Вопросы Hard и Soft, тестовое, livecoding
25:34
Мирошкин Олег | Состоятельный геймдев
Рет қаралды 10 М.
Entity Component System (ECS) - Definition and Simple Implementation
28:02
АЗАРТНИК 4 |СЕЗОН 2 Серия
31:45
Inter Production
Рет қаралды 1,1 МЛН