ФлеймФорумРазработка игр

Паттерны проектирования в геймдеве (3 стр)

Страницы: 1 2 3 4 5 Следующая »
#30
4:00, 21 мая 2014

AvrDragon
> Вот я и понитересовался, может кто-нибудь при разработке игр встречался с
> задачами где хорошо помогли паттерны.
Мне нравится паттерн Listener. Очень идеальное решение для обработки событий ввода. Идеально тем что не нужно где-то делать гиганский обработчик событий нажатия клавиш на все случаи жизни. А можно просто прописывать объектам нужную реакцию на события. Например камера

class FpsCamera : public EventListener
{
void KeyDown(const Key &k);
void KeyUp(const Key &k);
};

Еще мне нравится паттерн State (на русском описания не нашел, гуглить на английском). С его помощью я делаю переключение между главным меню, игровыми редакторами и настройками, самой игрой и т.д.

Советую посмотреть исходники Glest (ванильной версии, а не современные форки). Там достаточно красивое применение нескольких паттернов (в том числе есть и фабрики)

#31
9:14, 21 мая 2014

равен
> паттерны не нужны

Обоснуйте :)


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

Observer, AbstractFactory, Factory, Visitor, Strategy, Compositer ...

#32
9:30, 21 мая 2014

innuendo
> Обоснуйте :)
  В основном мне непонятно, для чего нужно плодить лишние сущности.
Есть структуры данных и есть алгоритмы, решающие определенные задачи.
Потом, внезапно, приходит банда 4-х и заявляет: "А мы не такие, а у нас паттерны!!11"
А в чем смысл всего этого? (в жопу пусть себе запихают свои паттерны)

war_zes
> даже main loop (да, это оказывается тоже паттерн)? А как ты тогда игры делаешь?
  Для чего называть очевидное паттерном?

#33
9:36, 21 мая 2014

равен
> Для чего называть очевидное паттерном?
Потому что паттерн - это и есть очевидное:)
Паттерн, это шаблон, а шаблон, это то что делают все считая это очевидным

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

Поэтому вообще-то все вещи, которые программисты делают одинаково и едино - это и есть паттерны. В том числе и maingame loop (http://gameprogrammingpatterns.com/game-loop.html)

По сути, паттерны - это велосипеды. Ты их можешь придумать сам... А можешь прочитать книжку и сразу использовать. В обоих случаях ты их будешь использовать. Только в первом случае ты не знаешь как они зовутся

И все паттерны на самом деле очевидные. Просто тут все зависит от твоего опыта. Для нуба и наследование не очевидно и сложно. Да собственно и game loop, это тебе очевидно. А даже тут много тем про то как правильно обновлять игру, все новички спрашивают про этот момент.

Также и с паттерном - если вызывает сложность, значит еще не дорос. Вот когда навелосипедишь пару паттернов, вот тогда и поймешь что время все же ценнее. А ты навелосипедишь... Я тоже так относился к паттернам, пока не изобрел свой Listener и State, а потом прочел в статьях что то что я изобрел там прямо в слово в слово описано. Только я затратил намного больше времени на работоспособность всего этого

#34
9:52, 21 мая 2014

RENZAN
> Для того что-бы у очевидного было название)
  У которого уже есть название))
Смысла от этого не прибавляется, но зато теперь у нас есть
два названия у одно и того-же)

war_zes
> По сути, паттерны - это велосипеды. Ты их можешь придумать сам... А можешь
> прочитать книжку и сразу использовать. В обоих случаях ты их будешь
> использовать. Только в первом случае ты не знаешь как они зовутся
  Можно пойти дальше и еще придумать свое название для каждого велосипеда,
тогда велосипед не будет казаться велосипедом. Фабрику Классов можно назвать
Заводом Классов, а паттерны назвать видами проектирования)

#35
10:09, 21 мая 2014

RENZAN
> По-русски "состояние" же. Очень многие объединяют его в один с паттерном
> стратегия.
Я до стратегии не дошел. Это что-то вроде такого?

+ Показать

Если да, то буду знать

равен
> Можно пойти дальше и еще придумать свое название для каждого велосипеда,
> тогда велосипед не будет казаться велосипедом. Фабрику Классов можно назвать
> Заводом Классов, а паттерны назвать видами проектирования)
У всего должно быть название. Ты предисловие к банде четырех почитай. Одной из целей было как раз дать название очевидному, чтобы программисты могли общаться друг с другом понятными вещами а не начинать долго объяснять что имелось ввиду

#36
10:11, 21 мая 2014

war_zes
> Одной из целей было как раз дать название очевидному, чтобы программисты могли
> общаться друг с другом понятными вещами а не начинать долго объяснять что
> имелось ввиду
  А еще они хотели сделать себе имя, но париться и напрягать мозги не хотели

#37
10:12, 21 мая 2014

равен
но ты же не читал? (кстати, я тоже не читал, ибо книга довольно нудная, паттерны легче изучать в других источниках)

#38
10:26, 21 мая 2014

war_zes
> но ты же не читал? (кстати, я тоже не читал, ибо книга довольно нудная,
> паттерны легче изучать в других источниках)
  Я посмотрел что там и достаточно быстро убедился в ненужности паттернов
Ты программировать собрался или изучать паттерны? Хотя конечно, для прохождения
собеседования паттерны необходимо почитать.

  Мне сложно представить сколько времени будет потрачено на изучения десятков,
а то и сотен паттернов (число которых постоянно увеличивается). Причем большая
часть из них явно не понадобится в работе.

#39
12:23, 21 мая 2014
struct A{};struct B{};struct C{};
struct foo{
  void Do(A&){};
  void Do(B&){};
  void Do(C&){};
};

Кто-нибудь видит pattern в этом коде?

#40
13:24, 21 мая 2014

RENZAN
> Я его в бизнес приложениях то ни разу не видел. А для игр он будет несколько
> вреден.
Эээ, тоесть если нужны 3 экземпляра текстуры 2048х2048 ты три раза выделяешь память? Уверен что ты Flyweight в геймдеве ни разу не видел?

равен
> А еще они хотели сделать себе имя, но париться и напрягать мозги не хотели
> Причем большая часть из них явно не понадобится в работе.
> А в чем смысл всего этого? (в жопу пусть себе запихают свои паттерны)
:3

war_zes
> Потому что паттерн - это и есть очевидное:)
Ничего подобного. Одни очевидные, вроде Flyweight, Composite или Command. А вот некотрые, вроде Template method, Visitor либо Decorator совсем не очевидные.

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

innuendo
> Observer, AbstractFactory, Factory, Visitor, Strategy, Compositer ...
А можно поподробней. Интересны ведь не сами паттерны, а их применение в геймдеве на практике.

Как использовать Composite или Observer и для чего более менее понятно. Скоре всего игровые объекты имеют детей и колбеки для всяких подсистем вроде физики, игр. логики и возможно ГУИ. А вот как и для чего использованы остальные уже не очевидно.

#41
13:25, 21 мая 2014

Adler
Это же обычная перегрузка.

#42
13:43, 21 мая 2014

паттерн foobar?

#43
13:58, 21 мая 2014

  Без перегрузки я начинаю видеть паттерн "спагетти-код".

#44
14:31, 21 мая 2014

равен
>   У которого уже есть название))
> Смысла от этого не прибавляется, но зато теперь у нас есть
> два названия у одно и того-же)
Тебе стоит задуматься над сменой профессии.

Adler
Это шаблон класса с методами:)

Оно похоже на пару шаблонов, но исполнено не по канону

Страницы: 1 2 3 4 5 Следующая »
ФлеймФорумРазработка игр

Тема в архиве.