Я читал много статей, касающихся дизайна данных для игр. Кажется, сводится к:
- Нет жесткого кодирования
- В движке нет специфичного для игры кода
- Сценарии для AI, катсцены и так далее.
- Обобщающий код для повторного использования
- Компонентный дизайн
- модульность
- Низкая связь
- Редакторы (для данных, карт, скриптов)
- Внешний поиск данных
- Константы, хранящиеся в текстовых файлах (
.ini
или иным образом) - Предоставить данные через редакторы для сценариев и манипуляции дизайнеров
Теперь мой вопрос: правильно ли это понимание?
terminology
OmniOwl
источник
источник
Ответы:
Я бы сказал, что это не правильно. Я считаю, что наиболее важной идеей в дизайне, управляемом данными, является отделение ваших данных от того, что модифицирует (или обновляет) данные .
Итак, переходя от стандартной глубокой иерархии OO, как это:
в отдельное государство и систему
Одной из самых влиятельных парадигм DDD на данный момент являются Entity Systems. Вот несколько полезных ресурсов:
http://gamedevrubberduck.wordpress.com/2012/12/26/a-hybrid-entity-system-component-architecture/
http://entity-systems.wikidot.com/
Конечно, как и во всех парадигмах / идеях, нет точного определения, и не все понимают одну и ту же идею, говоря о DDD, но это то, что я считаю самым важным.
источник
Я думаю, что вы слишком усложняете определение. Конечно, многие из принципов, содержащихся в вашем маркированном списке пунктов, являются хорошими с точки зрения разработки программного обеспечения, но они не обязательно являются частью определения «управляемых данными». Многие из них имеют некоторое перекрытие или лучше всего реализуются с использованием подхода, управляемого данными, но не представляют собой акт управления данными.
Фактическое определение управляемой данными разработки программного обеспечения, как правило, довольно простое: программа выполняет действия, в основном основанные на некоторой внешней информации (фрагмент данных уровня, данных сценария и т. Д.), Вместо того, чтобы выполнять последовательность предопределенных и фиксированных шагов в коде. Сам, который определяет контроль потока.
источник