Войти
Инди-ЮнитиФорум

Мастер класс по хорошему коду в юнити (14 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 110 11 12 13 14 15 Следующая »
#195
(Правка: 15:22) 15:04, 27 окт. 2020

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

впрочем там есть ссылка https://github.com/josinSbazin/UnityLeoEcsImplementation

ну ок, если есть желание, я могу посмотреть и сделать ревью кода )

Мне нужен оппонент, кто сможет в код? я сделаю альтернативу, и тогда посмотрим плюсы минусы ? ... будут такие?

но вызывает подозрение, что на такую простую задачу "надо сделать перемещение игрока и загрузку следующего уровня, когда он доходит то точки Х" столько гавнокода ...

напоминает "как программисты хлеб пекли"

#196
(Правка: 16:49) 16:19, 27 окт. 2020

Я про эту змейку https://github.com/Leopotam/ecs-snake
там же и код самого LeoECS вроде как.

Всё сводится к следующему:
На сцене всего 1 MonoBehavior, (по моему максимум 4)
на каждый объект у нас есть или создается ObjectsPool, который расширяется по мере необходимости.
есть сущности, они существуют постоянно. Ты можешь через фильтры получить их все (из любой другой сущности и указать тип сущностей которых ты хочешь иметь) и от туда или добавить дополнительный фильтр сортировки и получить нужный.
Так как это не MonoBehavior, а struct, ты получаешь их мгновенно.
Каждый из них является неким вполне обычным объектом Unity, на который ты можешь повесить обычные компоненты. Или убрать их во время выполнения кода.

Каждая сущность сама по себе структура.
На сущности есть обработчик, он уже решает что с ними делать или не делать (ты его сам пишешь).
При необходимости ты не перемещаешь сам объект, а создаешь OneFrameEvent, событие на перемещение.
Его обрабатывает твой слушатель и получает событие о том что изменилась позиция, ты меняешь позицию сущности.

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

Если тебе надо отправить пакет по сети ты делаешь это через событие.

В общем то вот, что надо знать перед тем как смотреть код)

тут и SpringBoot и React и DI (injection).

Ну лично я, оцениваю его очень высоко и полезно. Он не только экономит память, но существенно упрощает модель поведения к Finite State Machine (точнее к нескольким, одна в другой). А это то что сам доктор прописал. Лично я теперь вообще не буду делать как то по другому. Это просто офигеть как удобно.

А если структур не достаточно для описания, всегда есть Zenject (тоже ECS только на интерфейсах) + UniRX (RX расширяет корутины, до promise, то есть ты можешь создавать последовательности из корутин)

И всё, ты в общем то БОГ)

#197
(Правка: 19:26) 18:52, 27 окт. 2020

Salamandr
жаль, что ты заразился этим ...

посмотрел я пока пример https://github.com/josinSbazin/UnityLeoEcsImplementation
твой думаю будет похож ...

Ну, что ж, чтобы использовать один фреймфорк от Юнити, вы решили использовать еще доморощенную обертку от LeoECS.

Для тех кто не понимает, как это плохо

+ Показать

Начнем с простого:
в примере делается через зад

        public void Initialize()
        {
            const string CheckPointTag = "CheckPoint";
            
            foreach (var unityObject in GameObject.FindGameObjectsWithTag(CheckPointTag))
            {
                var tr = unityObject.transform;
                var checkPoint = _world.CreateEntityWith<CheckPoint>();
                checkPoint.Coords = tr.localPosition;
            }
        }

вот это GameObject.FindGameObjectsWithTag - катастрофически не приемлемо
как/кому мне в редакторе Юнити перетянуть Transform объекта, чтобы эта система получила его изначально? (в крайнем случае, как входной параметр при инициализации?)

подозреваю, уже тут начнутся проблемы, и будет порушен ваш иллюзорный мир

аналог выглядит так

  public Transform CheckPointTransform;
        void Start()
        {
                checkPoint.Coords = CheckPointTransform.localPosition;
        }

работу с редактором полностью похерили? вместе со встроенной сериализацией?

и еще, декларировано

Возможность использования логики на сервере без Unity (нет зависимостей от самого “движка”)

Что за бред? на GameObject.FindGameObjectsWithTag это все загнется? :)

в общем без слез я на это смотреть не могу, теряю время с гавнокодерами ... если вы не понимаете элементарного - то без меня ...
#198
21:01, 27 окт. 2020

cNoNim
Ну я же говорил, что тут спорить нельзя.
tac слышит только себя. Считает только себя истиной в последней инстанции. Не отвечает на прямые неудобные вопросы. Типичное поведение фанатика.

#199
21:08, 27 окт. 2020

seaman
> Не отвечает на прямые неудобные вопросы.
думаю это мне не отвечают на вопросы

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

#200
(Правка: 22:45) 22:29, 27 окт. 2020

seaman
Да при чем тут tac...
Ради него чтолю ли все это сотрясание воздуха.
Про него все и так понятно он сложнее хэлоу ворлда врятли что либо писал.
tac
> разве что порядок выполнения скриптов надо настроить
Тут и помимо него было много громких слов.
Но и в целом компетентность раздела форума подпадает под сомнения.
А tac в любом случае не покажет свои архитектурные изыски.
tac
> мля все так же, через Update
А ты действительно не понимаешьразницы между одним Update и Update на каждом монобехе?
tac
> а так вы этим не управляете.
Ну т.е. ты не смог придумать как не выполнять код системы каждый кадр. А мы виноваты.
tac
> GameObject.FindGameObjectsWithTag это все загнется?
Ну если ты не смог понять как, то разумеется это все нельзя сделать)

#201
(Правка: 22:47) 22:44, 27 окт. 2020

tac
Подсказка небольшая...

+ Показать
#202
22:49, 27 окт. 2020

tac
> В чем выигрыш?
всетки вот это самый важный вопрос темы... вижу ты до сихпор ни на йоту не приблизился к пониманию профита... печалька

#203
(Правка: 28 окт. 2020, 0:27) 23:48, 27 окт. 2020

cNoNim
> Подсказка небольшая...
свои подсказки засунь куда подальше ... если не умеешь достойно общаться, мне такое общение не нужно ... ответы нужны не мне, а тебе ... чтобы хоть начал думать что кодируешь ...

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

> подумай как можно для каждой системы сделать свой монобех для настройки всего чего угодно
начинаешь прозревать? а зачем мне тогда дублировать монобех+"система" :) да, точно ... ты мне предложить только что сделать столько же "систем", сколько у меня монобехов? малодец ... может тогда дойдет, про оверхед с ESC?


cNoNim
> А ты действительно не понимаешьразницы между одним Update и Update на каждом
> монобехе?
и в чем же оно? в чем то больше чем вызвать Run для каждой "системы"? Может все засуним в один update , вот радость то какая ... и смысл разделять было? надо же такой бред писать

сделай тест, положи его сюда, тогда начнем рассматривать ...

cNoNim
> не выполнять код системы
что за бред, я должен еще почему то минимизировать выполнение "кода юнити" ? вы в своем уме?

cNoNim
> Ну если ты не смог понять как, то разумеется это все нельзя сделать)
ты достал, я переходил на личности? разве только счас перейду ... это я не не смог, это блин специалисты на хабре делают говно примеры, и выпячивают их ... я и не собираюсь заниматься фигней, напишите лучше/хуже - вот тогда приходите, сделаю и вам ревью вашего говнокода ... посмотрим тогда как будете вертеться ..

пока ты полность проигнорировал мой разбор примера выше, не ответил ни на один вопрос, наплевал на все преимущества, которые дает юнити - которые я прямо отмечаю в своем разборе, заменил это гавнокодом, мычишь про фейковые выигрыши отделения кода от юнити, хотя очевидно, что ломается в примере сразу ... и про сомнительный процессорный выигрыш ...

У тебя есть единственный шанс - вначале назвать говном тот пример, который я рассмотрел, сделать лучше и только тогда что-то еще заикаться про ESC

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

хватит, не смешно ... фейспалм ..

#204
1:46, 28 окт. 2020

tac
> дал ссылку на такое же гавно от ESC
Мастер ревьювер
Тебя не смущает что я дал ссылку на часть репозитория который ты ревьювил?

То что ты не можешь догадаться как прокинуть массив из монобеха в конструктор системы. И не юзать FindGameObjectByTag...
Ну я хз что тебе сказать.

tac
> У тебя есть единственный шанс
Угу уже бегу пятки сверкают

tac
> сделаю и вам ревью вашего говнокода ...
Можешь начать от сюда
https://github.com/Unity-Technologies/EntityComponentSystemSamples

#205
(Правка: 2:15) 2:09, 28 окт. 2020

cNoNim
> прокинуть массив из монобеха
ты не видешь, что те умельцы пишут? они "прокидывают" геймобъекты, крича, что они что-то отделили ... массив чего, умник? возьми и покажи, что ты там прокидываешь ... а пока только бла-бла

cNoNim
> https://github.com/Unity-Technologies/EntityComponentSystemSamples
включат в официальную поставку, тогда, не раньше ...

#206
(Правка: 13:19) 13:17, 28 окт. 2020

tac
> на GameObject.FindGameObjectsWithTag это все загнется? :)
приехали. У тебя сцена на ней 100 объектов из низ 80 это стены уровня. О каком загибе речь?
То есть ты хочешь сказать что ту самую автоматизацию (сокращение ручной работы) которую решает код ты против неё. Или все 100 ты будешь добавлять в список? ужос какой..
В любом случае, тебе никто не мешает их получить другим привычным тебе способом и передать это в этот класс. Это ведь не класс системы ECS, это код который пишешь ТЫ (а значит можешь его улучшить).
Мы все чем то жертвуем. Выбирая Unity мы жертвуем и деньгами (которые надо им платить) и скоростью загрузки (на которой мы ничего не можем показать, если не купим Unity). Вместо 5 секунд загрузки приложения та же например libGDX показывает игру сразу, с первых секунд. Ну что такое 5 секунд на старте.. 10-15. Эх..
Ну я последнее сообщение тут написал, мы уже проходили этот момент. Я пишу не ради спора. Просто допустим я потрачу 10 дней, чтобы тебя переубедить, а в итоге ты лишь согласишься со мной. А кто мне вернёт эти 10 дней? Кто вернёт усилия и испорченные нервы.. Понимаешь?..
Так что, бб.

#207
(Правка: 14:52) 14:48, 28 окт. 2020

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

где ваше отделение для сервера и тестирования? фейк? ну я так и думал.

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

#208
14:58, 28 окт. 2020

tac
> счет пришлю в конце месяца ))
буду ждать)
В общем, буду ждать твой следующий проект. Счет включи в стоимость игры))

#209
19:04, 28 окт. 2020

tac
> вот мне интересно, как же это будет работать, если там так и осталось
> обращение к сцене
если ты не понимаешь как заюзать тот ECS без unity, это помойму не проблемы того ECS
не думаешь что глупо искать отсутсвие Unity в проекте, который является примером подключения того ECS к Unity?

Страницы: 110 11 12 13 14 15 Следующая »
Инди-ЮнитиФорум