Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Способ реализации сцены в движке

Способ реализации сцены в движке

Страницы: 1 2 Следующая »
FistahaПостоялецwww11 мар. 201819:57#0
Всем здравствуйте.

Я пишу 3d движок(пока делаю графику только), и передо мной встала задача написания системы сцен. Как я понял, сцена хранит информацию об объектах, объект это просто точка в пространстве, на которую навешивают различные компоненты(модель, источник света, камера и пр). Кроме этого в роли компонента может выступать и другой объект этой сцены (например оружие в руках игрока). Ну т.е. получается своего рода дерево: есть какие-то первичные объекты, а от них зависят другие объекты.

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

Заранее спасибо

P.S. Поправьте, если я где-то не прав.

DimichПостоялецwww11 мар. 201820:02#1
Погугли Entity-Component-System, здесь вроде даже была статья.

Правка: 11 мар. 2018 20:03

AslanПостоялецwww11 мар. 201823:34#2
Fistaha
> строить произвольное дерево этой сцены
да, иерархия матриц трансформации, только так
едет машина (1й уровнь), в машине сидит игрок (2й уровнь), у игрока на поясе пистолет (3й уровнь)
Great V.Постоялецwww12 мар. 201817:08#3
Fistaha
> объект это просто точка в пространстве
А почему сразу точка?
Есть объекты, которым позиция и не нужна.
EugeneУчастникwww12 мар. 201817:11#4
Fistaha
Возьми Urho
раб вакуумной лампыПостоялецwww12 мар. 201822:45#5
Пишешь собственный 3D движок ? Можешь смело расставаться с мечтой о своей игре. К искусству создания игр ты даже не приближался. Мы не программисты, мы нечто большее.

Правка: 12 мар. 2018 22:46

FlyOfFlyПостоялецwww13 мар. 20187:14#6
Fistaha
>
> Вопрос: Как это лучше всего и правильнее всего реализовать? Есть банальная
> идея: строить произвольное дерево этой сцены, но мне кажется, что дерево долго
> будет строится(возможно я не прав). Есть ли какие-то иные способы задания сцены
> с иерархией объектов? Какие методы чаще всего применяют в движкостроении?
Есть объект А, он хранит Объект Б и В
Объект Б и В хранит объект А, как родителя
и внутри каждого объекта, что-то типо такого
void Update(float delta){
  updateSelf(delta);
  for(int i=0;i<gameobjects.size;i++){
    gameobjects[i]->Update(delta);
  }
}
void UpdateSelf(float delta){
  for(int i=0;i<components.size;i++){
    components[i]->Update(delta);
  }
}
void DrawSelf(float delta){
  for(int i=0;i<components.size;i++){
    components[i]->Draw(delta);
  }
}
void Draw(float delta){
  DrawSelf(delta);
  for(int i=0;i<gameobjects.size;i++){
    gameobjects[i]->Draw(delta);
  }
}
У каждого компонента есть его носитель
innuendoПостоялецwww13 мар. 20189:28#7
-Eugene-
> Возьми Urho
+1, хотя там тоже мне не всё нравиться...
mr.DIMASПостоялецwww13 мар. 201810:05#8
раб вакуумной лампы
> Пишешь собственный 3D движок ? Можешь смело расставаться с мечтой о своей игре
Что за бред, если ты неосилятор и не смог сделать игру на своем движке это не значит что не смогут другие.

Fistaha
> Есть банальная идея: строить произвольное дерево этой сцены,
Здравая идея, только не делай у узлов сцены метод Draw(). Рендер должен быть изолирован

Правка: 13 мар. 2018 10:07

Daniil PetrovЗабаненwww13 мар. 201810:42#9
mr.DIMAS
> Что за бред, если ты неосилятор и не смог сделать игру на своем движке это не значит что не смогут другие.
Тоже не понимаю :) зачем тогда писать движок :))) по сути кроме тебя твой движок больше никому не нужен.
mr.DIMASПостоялецwww13 мар. 201810:49#10
Daniil Petrov
> зачем тогда писать движок
Как минимум для саморазвития. Написав свой движок ты обретешь кучу знаний которые будут полезны в будущем. Мне опыт движкописания помогает на работе - намного легче копаться в чужом движке когда сам подобное делал.
FlyOfFlyПостоялецwww13 мар. 201810:57#11
Daniil Petrov
>
> > Что за бред, если ты неосилятор и не смог сделать игру на своем движке это не
> > значит что не смогут другие.
> Тоже не понимаю :) зачем тогда писать движок :))) по сути кроме тебя твой
> движок больше никому не нужен.
Саморазвитие, Расширение кругозора, Помощь в оптимизации кода на другом движке, Понимание технологий.. продолжить?
Daniil PetrovЗабаненwww13 мар. 201810:58#12
FlyOfFly
> Саморазвитие, Расширение кругозора, Помощь в оптимизации кода на другом движке, Понимание технологий.. продолжить?
Не стоит :) мне вполне хватит пункта "Для себя" :)))
Daniil PetrovЗабаненwww13 мар. 201811:06#13
Именно потому я и отступил на несколько лет назад, начав освоение разработки игр именно с написания своего движка, так как в этом случае ты не просто учишься ездить, но и знаешь свою машину от и до! Ну и соответственно смотришь на разработку игр уже совершенно с другого ракурса.
EugeneУчастникwww13 мар. 201811:35#14
innuendo
> +1, хотя там тоже мне не всё нравиться...
Мне тоже.
Но это лучший выбор фреймворка для движкописания.
Оно достаточно простое и компактное, чтобы быть расширяемым почти везде.
Страницы: 1 2 Следующая »

/ Форум / Программирование игр / Общее

2001—2018 © GameDev.ru — Разработка игр