Существуют ли какие-либо шаблоны дизайна, особенно полезные для разработки игр? - PullRequest
7 голосов
/ 13 мая 2010

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

Например, как реализовать квесты типичной ролевой игры (например, BG или TES)? Или как бы вы реализовали оружие с несколькими эффектами суммирования в шутере от первого лица (например, Shrink-gun или Freezer from DN3D)? Как бы вы реализовали варианты с множественным выбором с возможно сложным деревом решений, приводящим к нескольким различным результатам (например, деревьям миссий в WC)?

Ответы [ 5 ]

5 голосов
/ 13 мая 2010

посетителей.

Наблюдатель.

Command.

Прокси (для сетевых игр).

Почти любой из творческих паттернов.

Думайте, "сценограф".

Игры на самом деле не , которые отличаются от других типов приложений, по крайней мере, не настолько, насколько люди думают, что они есть. Я говорю это, будучи профессиональным разработчиком игр, а также профессиональным неигровым разработчиком:)

4 голосов
/ 13 мая 2010

Помните, что это не типичные проблемы архитектуры программного обеспечения, которые намеревается решить обычный «шаблон проектирования» - это проблемы разработки игры, т.е. набор требований для конечного программного обеспечения. Таким образом, типичные шаблоны программного обеспечения на самом деле не применяются. И по этой причине на самом деле не существует программных шаблонов для того типа, который вы описываете, потому что в большинстве случаев не существует согласованного набора спецификаций и требований для нескольких игр. Эти функции обычно сильно зависят от дизайна игры, и оттуда следует структура программы. Есть, конечно, примеры, приведенные в различных книгах - например. серия игр Game Programming Gems настоятельно рекомендуется, но они являются лишь отправной точкой, которую вы должны настроить в соответствии со своими требованиями.

например. Квесты - Могут ли они повторяться? Может ли квест быть «проваленным» или он остается незавершенным? Они содержат несколько этапов? Существуют ли критерии, которые должны быть выполнены, прежде чем квест может быть предложен? Есть ли журнал, который нуждается в обновлении? Есть ли автоматическое вознаграждение в конце? Каковы условия для завершения, и как и когда они проверяются? Определенные события вызваны принятием квеста или его завершением? Есть ли представление о прогрессе игрока в квесте? Некоторые квесты обязательны? Заказаны ли квесты каким-то образом? Все это будет сильно отличаться от игры к игре, в зависимости от дизайна.

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

0 голосов
/ 13 мая 2010

Мое скромное мнение заключается в том, что все шаблоны могут быть полезными в играх, но, вообще говоря, наиболее мощное использование шаблонов - это те, которые возникают в процессе разработки, не ориентируясь на конкретную цель заранее.

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

0 голосов
/ 13 мая 2010

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

Если бы мне пришлось выбрать один из самых влиятельных в дизайне игры:

  • Наблюдатель: большая часть логики основана на событиях и реакциях.
  • ChainOfResponsibility: изменение поведения во время выполнения (бонусы и т. Д.).
  • Состояние: по понятным причинам.
  • Составной: управление запасами или граф сцены, например.
0 голосов
/ 13 мая 2010

Если вы читаете «Банду четырех», целые разделы шаблонов творчества направлены на создание лабиринта.

...