Материалы цифровых игр

Это вторая статья в серии Геймдизайн с помощью шаблонов программирования, посвященная программированию на стороне игрового дизайна. Интерактивную часть этой серии можно найти здесь: » «https://ovenfresh.itch.io/design-with-patterns

Что такое узор?

Шаблон Flyweight - это шаблон организации данных, в котором общий набор данных хранится в одном объекте. Другие объекты ссылаются на этот единственный фрагмент данных, когда это необходимо. Легковес сокращает дублирование и упрощает изменение группы объектов путем изменения одного набора данных. Это особенно полезно для статического набора свойств данных. Это шаблон экономии памяти, который помогает организовать свойства объекта, поскольку эти свойства не меняются после создания.

Как я это использовал

Легковес создает общие свойства, поэтому он подходит для ситуаций, когда объекты обладают внутренними свойствами. Здесь инструмент генерации «ландшафта» создает базовую карту объектов ландшафта. Каждый объект ссылается на общий объект данных. Щелчок по кнопке «Применить» заставляет кубики собираться с их свойствами Легковеса. Такие свойства, как цвет, высота и тип, хранятся в одном из трех объектов-легковесов. При применении он создает ландшафт трех разных типов, даже если любой заданный куб ссылается только на мухобойки. Экономия памяти достигается за счет сохранения этих свойств на легковесе, при сохранении общей стоимости памяти неизменной.

Впечатления от дизайна

Легковес вводит понятие внутренних и внешних свойств, то есть общих и уникальных свойств. Данные, хранящиеся в легковесных объектах, можно рассматривать как внутренние свойства этой вещи. Такие вещи, как свойства материала, цветовые палитры и диалоговые строки, - все это жизнеспособные кандидаты на роль легковесных данных. Текстура, размер и вес игральной карты являются общими для всех карт в колоде и могут соответствовать легковесным данным. Однако в чьей руке карта будет иметь внешние и уникальные данные. Таким образом, flyweight создает своего рода цифровой материал, который помогает разделить то, что есть вещь, и что в ней уникального. Это почти как цифровой материал.

Идти вперед

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

Предыдущая: Команда

Далее: Компонент

Код: https://github.com/jasonzli/game-programming-study

Ссылка: Шаблоны программирования игр, Нистром, Роберт, 2014 г. http://gameprogrammingpatterns.com/flyweight.html