Delfigamer
> Но "физика" это не другой компонент, это отдельная подсистема.
Это значит, что один и тот же компонент может апдейтится разными системами ?
Delfigamer
> Но "физика" это не другой компонент, это отдельная подсистема.
А что, из контекста не понятно, что имеются в виду не просто разные компоненты, а разные типы компонентов? Компоненты одного типа, как правило, обрабатываются в одной системе и с ними как раз нет никаких проблем. А позиция или скелет может разделяться между разными типами компонентов, причем в зависимости от логики по разному. Например - переход от анимации к рагдолу и обратно, от навигации к кинематике, смена материала в зависимости от параметра в игровой компоненте и тд. Вообще, эти зависимости плохо формализуются и их часто просто выносят в управляющий скриптовый говнокод.
innuendo
> Это значит, что один и тот же компонент может апдейтится разными системами ?
И что? Вопрос был про взаимодействие различных компонентов между собой. Моя позиция - между собой они взаимодействовать не должны. Через подсистемы - пожалуйста, подсистемы для того и сделаны, чтобы объекты были не сами по себе, а в одном цельном мире. Через актёра - пожалуйста, актёры затем и нужны, чтобы содержать логику на уровне игрового объекта. Только "через актёра" значит, что весь код находится в актёре, а не как у прочих диванов, когда один компонент зачем-то просит ссылку на соседа у хозяина или, ещё круче, шлёт ему письмо.
И я не говорил, что один компонент может взаимодействовать только с одной подсистемой. Опять же в UE4 чуть ли не каждый компонент взаимодействует с рендерером, чтобы нарисовать себя в редакторе, а у мешей коллайдеры порой встроены прямо в ассет.
Вот здесь https://www.packtpub.com/application-development/mastering-android-ndk начиная с 8 главы Writing a Rendering Engine и до самого конца книги написано как делать рендерер с нуля с блэкджеком ноудами, очередями, метариалами и прочей ересью.
Delfigamer
> . Моя позиция - между собой они взаимодействовать не должны. Через подсистемы -
> пожалуйста, подсистемы для того и сделаны, чтобы объекты были не сами по себе,
> а в одном цельном мире.
Есть компонент логики, он ставит звук в звуковой компонент или как должно быть ?
Delfigamer
> И я не говорил, что один компонент может взаимодействовать только с одной
> подсистемой.
Ok. Это вопрос для любителей ECS
innuendo
> Ok. Это вопрос для любителей ECS
К чему это?..
-Eugene-
> > Ok. Это вопрос для любителей ECS
> К чему это?..
К тому, что правило один компонент обновляется только своей системой и что компоненты только пассивные данные не совсем достаточно в реальных проектах
_NetSurfer_
Спасибо, скачал, еле нашел.
Рендеру в идеале нельзя модифицировать объекты никоим образом. Ему просто подаёшь на вход список из объектов, которые должны быть отрисованы, он отсекает невидимые и рисует по тем позициям и матрицам поворота, которые ему дали. Отсечение + отрисовка + освещение, всё.
Ничем другим рендерер заниматься не должен. Если бы у нас был к примеру софтварный рендерер, то результаты его работы могли бы быть использованы в остальных подсистемах тем или иным образом, но с видеокарты обратно данные получать себе дороже.
ещё такой вариант (как в Doom3) - у рендерера функции LoadScene(), RenderScene(), LoadEntity(), SubmitEntityToCurrentFrame(), и ничем другим он не занимается.
innuendo
> Есть компонент логики, он ставит звук в звуковой компонент или как должно быть?
Какой ещё компонент логики? Под "взаимодействием через подсистему" я имел в виду вещи типа коллизий между коробками через физдвижок.
А выбор звука в зависимости от ситуации - это уже скорее работа актёра, чем какого-нибудь компонента.
Delfigamer
> Какой ещё компонент логики?
То, что есть в код Actor.
> А выбор звука в зависимости от ситуации - это уже скорее работа актёра, чем
> какого-нибудь компонента.
Есть компонентные системы без Actor. GameObject/Entity просто контейнер для компонетов
В UE4 очень забавно получается - есть иерархия SceneComponent, а есть иерархия компонентов внутри самого Actor
innuendo
> Есть компонентные системы без Actor. GameObject/Entity просто контейнер для
> компонетов
Какие-то кастрированные системы. >_>
innuendo
> В UE4 очень забавно получается - есть иерархия SceneComponent, а есть иерархия
> компонентов внутри самого Actor
Так говоришь, будто что-то плохое.
Какая же там иерархия, по переменной на компонент - и готово.
Delfigamer
> Какие-то кастрированные системы. >_>
Не всё что в UE идеально :) Такой GameObject это классика.
> Какая же там иерархия, по переменной на компонент - и готово.
Ну сделай Actor чтобы можно было одевать одежду (skinned meshes) на скелет, который тоже skinned mesh.
Для FPS уже будет Mesh1P и Mesh3P от родительской ноды
Vlad2001_MFS
> Спасибо, скачал, еле нашел
гдееее?
Тема в архиве.