IROV..
Может быть проблема того, что я не разобрался в том что у тебя нет документации где бы это описывалось? Ну то есть я с ходу не нашёл класса-контейнера например. Если можешь - дай прямые ссылки на репо.
GLoom, слава богу что меня в гугле не забанили :),
Сайт: http://mm-werkstatt.informatik.uni-augsburg.de/projects/GameEngin… oku.php/start
Репа: http://mm-werkstatt.informatik.uni-augsburg.de/public/Horde3D/tru… s/GameEngine/
Igor'
Аааа! Спутал тебя и IROV.. :) Эти ссылки я уже посмотрел, да :)
"Компонентами" являются дочерние ноды?
GLoom
да
Давно хотел реализовать подобную архитектуру, но то ли у меня недостаточно было разнокалибренных объектов, то ли я не совсем въехал.
Кто в теме - интересно, как вы опишите компонентной системой, к примеру, управляемый 3д вертолёт с физикой?
есть, допустим, корпус, два винта с разными назначениями, колёсики, фигня для поворачивания.
что здесь будет ентити, что компонент? какие компоненты будут в ентитях? как будет происходить передача месседжей по всей этой структуре, начиная от веления юзера включить/выключить двигатель и менять разные тяги? я вроде понимаю, но интересно, как другие себе это представляют. вдруг я в корне неправ.
Mr F
Обычно всё наоборот - есть движок и надо туда "вписать" необходимую модель :)
В Unity например есть только один слот для графики и один слот для физики. Соотвественно помещаем физический объект с сеткой для столкновений в физику, графический - в графику. Детально с юнити не сидел - не знаю как там дальше будет.
По общей идее - прикладываем пару сил к физике в места крепления лопастей. Лопасти анимируем кастомно скорее всего, вращая нужными костями в моделе вертолёта. То есть кастомный аниматор (обычно по имени) ссылается на детали реализации физики и графики, что, в некоторой степени, нарушает инкапсуляцию - но кого это волнует если работает? Что касается тяг - это всё в голове пользователя и в кастомном аниматоре, реально физика скорее всего упрощённая. Мне вертолёты никогда не приходилось делать, плохо разбираюсь в сути.
Вот IMHO как-то так.
То есть по сути мы режем объект по подсистемам. Например есть у нас подсистема отрисовки - её представительство в сущности делается графическим компонентом, который заточен под работу с именно этой отрисовкой. Переходя из 3D к спрайтам в изометрии нам надо будет поменять рисовальщик и компоненты. Физический компонент дружит с физикой. AI и аниматор дружит с игровым циклом. И т.п. Таким образом в Unity получаются следующие штуки:
transform - положение и поворот
rigidbody
camera - камера
light - лампочка
animation - анимация
constantForce
renderer - визуализация
audio - источник звука
guiText - гуишный текст
networkView - сетевое представление
guiTexture
collider
hingeJoint
particleEmitter - частицы
Соостветсвено режем вертолёт на подходящие компоненты и вперёд.
Лучшее описание я пока видел в Game Programming Gems 6: "Game Object Component System", кстати.
Mr F
это глупо рассматривать для одного объекта, нужно в целом на мир смотреть...
допустим у вертолета есть модель с анимацией, физика, скрипт, звук
а у какого нибудь триггера есть скрипт и объем
у домика на карте, есть модель без анимации и физика
и тд
в итоге получаем набор компонент и их менеджеров, из которых можно построить любой объект на карте...
У меня в Normal-tanks 2 - все танки, враги, создаются из компонентов. Все компоненты имеют один класс. Отличаются только обрабатывающим скриптом.
Берем голову от человека, крепим на танк, получаем голову торчащую из люка танка. При смерти танка каска отлетит в кусты.
Берем башню от танка, крепим к человеку, получаем человека с башней, которая стреляет по врагам. Очень удобно : )
>>Берем башню от танка, крепим к человеку, получаем человека с башней, которая стреляет по врагам. Очень удобно : )
XD Жесть
Megabyte-Ceercop
> Берем голову от человека, крепим на танк, получаем голову торчащую из люка
> танка. При смерти танка каска отлетит в кусты.
> Берем башню от танка, крепим к человеку, получаем человека с башней, которая
> стреляет по врагам. Очень удобно : )
Ах значит вот как появились девочка-пулемет и Эдвард руки ножницы :)
Почему ещё никто не запостил это:
http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/
http://scottbilas.com/games/dungeon-siege/
Есть вопросы в деталях по части реализации чего-то подобного, если кто хочет пообсуждать, могу повбрасывать, проблемы, возникшие у меня.
Dreamcatcher
См. ссылку в моём первом посте - там ещё аналогичные ссылки собраны. Тут я спрашивал про документацию или исходники доступных движков.
Тема в архиве.