Войти
ПрограммированиеФорумОбщее

Компонентная система игровых сущностей. (комментарии) (2 стр)

Страницы: 1 2 3 429 Следующая »
#15
17:35, 3 апр. 2011

Кто не поленится указать доходчивую литературу на великорусском, либо объяснить, зачем эти заморочки?
Чем не устраивает
class Object
{
PhysicObject*phys;
Renderable*rend;
AIObject....
};

Правка: Там в статье упомянуто. Но не указано, почему нету гибкости.


#16
17:38, 3 апр. 2011

Подождите, постойте! А чем все-таки первый вариант не угодил? Я вот, честно сказать, смотрю на варианты 2 и 3, и вижу абсолютно ненужную ботву, которой орхетектор пытается обмазать простой и понятный код п.1.

Я вот думаю, что п.1 можно было бы еще улучшить:

struct Object
{
    void* graphicsNode;
    void* physicsNode;
    void* sound;
    void*  ...
    // ...
};

Очень хорошо будет: компоненты сами рулят процессом, а объект только держит их все в одном месте, чтобы наладить связь между компонентами одного объекта.

Хаха, пока писал, уже обогнали :). Вопрос по сути тот же.

#17
17:39, 3 апр. 2011

Указанно как минимум 3 недостатка:
1. Отсутствие гибкости. Гибкости нет, потому что при нужде в очередном компоненте, нужно править основной код. В описываемом случае можно добавлять типы компонентов хоть с динамически загружаемых плагинов.
2. Blob это плохо. Сопровождать и масштабировать его "одно удовольствие".
3. Тяжело распараллелить.

#18
17:43, 3 апр. 2011

Wraith
> чтобы наладить связь между компонентами одного объекта.
Вот связь и налажена. Компонент подписан на другой компонент. Нет смысла в ненужном "объекте".

#19
17:46, 3 апр. 2011

3eR0.1ive
>
> 1. Отсутствие гибкости. Гибкости нет, потому что при нужде в очередном
> компоненте, нужно править основной код. В описываемом случае можно добавлять
> типы компонентов хоть с динамически загружаемых плагинов.
Синдром Абсолютной Гибкости это называется... Так у нас блин много случаев, когда нужно забацать что то нереально крутое и непонятное. Что у нас за игровой объект таокй, которому мало БЛОБ-архитектуры? Если он у нас появился, значит, его стоит делать чем то другим. Не обязательно какой нить ветер или НЁХ в небе делать стандартными игровыми объектами.

> 2. Blob это плохо.
А по моему хорошо.
А вот второй пункт вообще дикая ахинея. С аспектами еще как то понятнее...

> 3. Тяжело распараллелить.
А по-подробнее, пожалуйста, можно?

#20
17:47, 3 апр. 2011

3eR0.1ive
> Нет смысла в ненужном "объекте".
Ээ.. То есть, логическая связка между физикой, графикой, ИИ и звуком не нужна?

#21
17:51, 3 апр. 2011

3eR0.1ive
Вот погоди, давай по пунктам.

> 1. Отсутствие гибкости. Гибкости нет, потому что при нужде в очередном компоненте, нужно править основной код.
Почему это? При добавлении нового типа компонентов ты просто добавляешь поле под еще один указатель. Больше ничего в object не меняется.

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

3eR0.1ive
> 2. Blob это плохо. Сопровождать и масштабировать его "одно удовольствие".
Почему это? Все равно компоненты так или иначе должны знать хотя бы частично друг о дружке, хоть в блобе, хоть где.

3eR0.1ive
> 3. Тяжело распараллелить.
Почему это? Определенный тип компонент рулится своей подсистемой. Можно параллелить всяко: внутри или нет.

#22
17:54, 3 апр. 2011

Wraith
напиши функцию апдейт своего объекта?

#23
17:55, 3 апр. 2011

kas
А нету ее :)

#24
17:58, 3 апр. 2011

-Eugene-
> Синдром Абсолютной Гибкости это называется... Так у нас блин много случаев,
> когда нужно забацать что то нереально крутое и непонятное.
Для меня гибкость всегда важна. Я не люблю в последствии сидеть ночами и придумывать выходы из ситуаций которые можно было предусмотреть потратив совсем немного времени. А на счет непонятности, тут уж не я виноват.

-Eugene-
> Что у нас за игровой объект таокй, которому мало БЛОБ-архитектуры
Блоб - не архитектура, а архитектурная ошибка.

-Eugene-
> Если он у нас появился, значит, его стоит делать чем то другим. Не обязательно
> какой нить ветер или НЁХ в небе делать стандартными игровыми объектами.
Вот видишь, уже с ходу появились объекты которые потребуется писать отдельно, которые уже не вписываются в "архитектуру". Дальше - больше.

-Eugene-
> А по моему хорошо.
> А вот второй пункт вообще дикая ахинея.
перестает быть хорошо, когда в проекте больше 40 тыс строк.

Wraith
> Мы игры пишем или что?
Я пишу движок, на котором пишут игры.

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

Wraith
> Почему это? Определенный тип компонент рулится своей подсистемой. Можно
> параллелить всяко: внутри или нет.
Если компоненты рулятся в своих подсистемах, то да можно.

#25
17:59, 3 апр. 2011

-Eugene-
> Ээ.. То есть, логическая связка между физикой, графикой, ИИ и звуком не нужна?
нет.
Wraith
> А нету ее :)
именно. Если нужна какя-то особая хероверть, то это попросту делается из скриптов.

#26
18:00, 3 апр. 2011

Wraith
> А нету ее :)

ну а как же без оной ? :)

#27
18:01, 3 апр. 2011

innuendo
> ну а как же без оной ? :)
Ну компоненты сами знают как обновляться. А для управления или логики какой все делается в скриптах.

#28
18:04, 3 апр. 2011

Дык подожди, компонентная система как раз и подразумевает, что каждый компонент обрабатывается собственной подсистемой, что подсистемы всем и рулят. Декомпозиция такая. struct Object в этом случае - это просто способ достучаться из одного компонента в другой, принадлежащий той же комплексной сущности. Поэтому и подписка не нужна. У Object даже Update() нету, потому что апдейтятся подсистемы целиком.

#29
18:05, 3 апр. 2011

3eR0.1ive
Хм... Интересная идея - сделать все независимым от всего. Подумаю на досуге...

Страницы: 1 2 3 429 Следующая »
ПрограммированиеФорумОбщее