Каковы некоторые распространенные игровые шаблоны 3D? - PullRequest
8 голосов
/ 15 мая 2009

Каковы некоторые из наиболее распространенных шаблонов проектирования, используемых при разработке 3D-игр? Существуют ли какие-либо общепринятые шаблоны архитектурного проектирования высокого уровня? Как насчет общих шаблонов программного обеспечения в архитектуре?

Ответы [ 4 ]

5 голосов
/ 15 мая 2009
  • Композитный для выполнения всего за шаг обновления (например, рендеринг) (и действительно распространенный среди всех библиотек пользовательского интерфейса).
  • Flyweight для рисования множества одинаковых предметов на экране (деревья / кусты / пули)
  • Обозреватель для многих библиотек пользовательского интерфейса (опять же, не для конкретной игры)
  • Состояние для перехода между игрой / меню / консолью / паузой / и т. Д. состояния
  • Абстрактная фабрика в некоторых играх типа «побей их» для создания мобов / неигровых персонажей (игры со смешным количеством ИИ персонажей за раз - т.е. Left 4 Dead).
  • Стратегия замены эвристики в алгоритмах поиска путей, таких как A *
  • edit> Команда для игр, подобных ММО, которые имеют панель действий со сменными кнопками, которые можно нажимать, чтобы произносить заклинания и еще много чего.

Это все, что я могу сейчас увидеть.

1 голос
/ 20 мая 2009

Я нашел этот PDF с подробным описанием возможных игровых архитектур. Хотя это может быть «неприятно для читателей, которые более склонны мыслить с точки зрения объектно-ориентированного дизайна».

1 голос
/ 15 мая 2009

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

Существуют определенные методы или подходы, которые кажутся популярными, но которые не формализованы на уровне кода, как классические шаблоны проектирования. Одним из примеров являются акторы на основе компонентов, которые часто даже не объединяются в одном и том же объекте, а через общий идентификатор, обмениваются данными через механизм типа сигналов / слотов. Другим было бы внедрение второго языка для сценариев, такого как Lua, Python или Javascript.

0 голосов
/ 15 мая 2009

Вариации шаблона состояния полезны для моделирования игрового состояния. Серия статей Enginuity - хороший обзор некоторых низкоуровневых аспектов дизайна игрового движка. Это неполно, но хорошо. Разработчики фреймворка Guff описали использование иерархий состояний для обработки игрового состояния. Концепция иерархии хороша, хотя их представление об игровом состоянии ограничено (оно охватывает весь игровой цикл, а не просто состояние). У них также есть бумага на игровых шлейфах в реальном времени .

При реализации сценариев чрезвычайно полезен и полезен для использования языка сценариев, который поддерживает некоторую совместную многопоточность. Stackless Python предлагает это. Начиная с Mono 2.6, вы можете делать это в C #, используя продолжения , но только на платформе Mono (не .NET), поскольку для этого требуются изменения в виртуальной машине.

Существуют общие решения для 2D и 3D-графики, анимации, ввода и т. Д. Многие из них обрабатываются DirectX, SDL или аналогичными средами.

...