Применение декларативного описания графического пользовательского интерфейса при разработке игровых приложений

Тип работы:
Реферат
Предмет:
ТЕХНИЧЕСКИЕ НАУКИ


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Часть IV
АВТОМАТИЗИРОВАННОЕ ПРОЕКТИРОВАНИЕ
УДК 004. 434
Д. А. Еркин, А. А. Алимов, О. А. Шабалина
ПРИМЕНЕНИЕ ДЕКЛАРАТИВНОГО ОПИСАНИЯ ГРАФИЧЕСКОГО ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА ПРИ РАЗРАБОТКЕ ИГР ОВЫХ ПРИЛОЖЕНИЙ
Волгоградский государственный технический университет
hate. cska@gmail. com, velorth@yandex. ru, o.a. shabalina@gmail. com
В данной статье рассматривается применение декларативного подхода к созданию графического пользовательского интерфейса игровой направленности. Описаны язык разметки и алгоритм реализации графического пользовательского интерфейса, которые могут быть применены при разработке компьютерных игр.
Ключевые слова: графический пользовательский интерфейс, компьютерная игра, декларативный подход, язык разметки.
D. A. Yerkin, A. A. Alimov, O. A. Shabalina
USING DECLARATIVE GRAPHICAL USER INTERFACE IN GAME APPLICATI ONS DEVELOPMENT
Volgograd State Technical University
In this paper the use of declarative approach for designing of game-oriented graphical user interface is considered. The markup language and the graphical user interface realization algorithm which can be used in computer games development are described.
Keywords: graphical user interface, computer game, declarative approach, markup language.
Введение
Разработка компьютерных игр представляет собой сложный процесс, требующий привлечения высококвалифицированных специалистов. Для создания качественного игрового приложения усилий одних только программистов недостаточно. Это обусловлено тем, что к компьютерным играм применяются следующие критерии качества: увлекательность игровой составляющей, привлекательность игрового мира, сюжета и стиля игры, высокий уровень визуального и звукового оформления, удобство взаимодействия с игроком [1]. Поэтому к разработке игрового приложения часто привлекаются профессиональные дизайнеры.
Большая часть критериев, определяющих качество компьютерной игры, непосредственно относится к графическому пользовательскому интерфейсу (Graphical User Interface, GUI). Именно его созданием в первую очередь занимаются дизайнеры, привлекаемые к процессу разработки игры.
Способы реализации игрового GUI
В настоящее время практически единственным подходом к реализации GUI компьютерной игры является его описание непосредственно в коде на императивном языке программирования. Однако это приводит к смешиванию программных слоев, реализующих бизнес-логику приложения и его пользовательский интерфейс [2], что делает программный код громоздким и трудночитаемым и усложняет дальнейшее развитие компьютерной игры. Еще одним существенным недостатком такого подхода является невозможность реализации GUI непосредственно профессиональным дизайнером без привлечения программиста, так как для этого требуются навыки работы с языком программирования высокого уровня. Из-за этого процесс создания GUI может существенно затянуться по времени.
Данные проблемы можно устранить с помощью применения декларативного описания GUI. В отличие от императивного декларатив-
ный подход подразумевает описание непосредственно GUI, а не последовательности действий, в результате выполнения которых происходит реализация GUI [2]. Это позволяет изолировать описание GUI от программного кода бизнес-логики приложения, что дает возможность поручить создание GUI отдельному разработчику (или группе разработчиков).
При декларативном подходе GUI описывается не на языке программирования высокого уровня, а на языке разметки [2]. Описание GUI на таких языках сводится к объявлению элементов GUI и присваиванию нужных значений их определенным свойствам. Языки разметки обладают лаконичным синтаксисом, и для работы с ними не требуются навыки программирования.
Проблемы применения декларативного описания GUI к разработке игр
В настоящее время декларативный подход к созданию GUI весьма широко используется при создании настольных приложений, веб-приложений и сайтов. Но для разработки компьютерных игр современные технологии декларативного описания GUI практически не применимы, так как в большинстве из них языки разметки являются лишь маскировкой языков программирования высокого уровня (например, язык MXML, используемый в технологии Adobe Flex [3]). При создании GUI с применением данных технологий, происходит предварительное преобразование кода на языке разметки в эквивалентный код на высокоуровневом языке с последующей реализацией GUI. В компьютерных играх, которые потребляют большое количество ресурсов программного и аппаратного обеспечения, целесообразно гене-
рировать GUI не при запуске, а только в определенные моменты (например, когда его присутствие необходимо в соответствии с сюжетом игры). Поэтому реализация GUI должна происходить непосредственно из описания на языке разметки без преобразования кода и последующей компиляции, так как проведение данных действий в процессе работы приложения существенно увеличит время его выполнения.
Еще одним фактором, препятствующим применению современных технологий декларативного описания GUI при разработке компьютерных игр, является использование в них в качестве языков разметки расширений языка XML, предназначенного для хранения сложно структурированной информации. Из-за того, что в данном языке используется иерархическая модель представления данных [4], описание GUI может быть достаточно громоздким (особенно при описании элементов GUI нестандартного внешнего вида), что также требует дополнительных временных затрат при реализации GUI на основе описания.
Данные препятствия устраняются путем создания языка, ориентированного на описание GUI, а также алгоритма реализации GUI на основе его описания на языке разметки без преобразования в код на языке высокого уровня, который может быть выполнен в любой момент работы игрового приложения.
Разработка предметно-ориентированного языка разметки игрового GUI
Для минимизации количества кода язык разметки должен иметь упрощенный синтаксис и реляционную модель представления данных. Структура описания элемента GUI в форме Бэ-куса — Наура имеет следующий вид:
& lt-Описание>-: := & lt-Тип>- & lt-Имя>- ["(«& lt-Свойства>- „)"] [& lt-Родительский элемент& gt-] & lt-Тип>-: := & lt-Буква>- [{& lt-Буква>-}] [{& lt-Цифра>-}] [{& lt-Буква>-}]
& lt-Имя свойства& gt- „=“
& lt-Буква>-: := & quot-A“ | & quot-Б» | & quot-C" | … | «Z» | & quot-a" | & quot-b'-Ч & quot-с" | … | «z»
& lt-Цифра>-: = «0» | «1» | «2» | «3» | «4» | «5″ | & quot-б» | «7» | «8» | «9»
& lt-Имя>-: = & lt-Буква>- [{& lt-Буква>-}] [{& lt-Цифра>-}] [{& lt-Буква>-}]
& lt-Свойства>-: := & lt-Имя свойства& gt- «=» & lt-Значение>- | & lt-Свойства>-
& lt-Значение>-
& lt-Имя свойства& gt-: := & lt-Буква>- [{& lt-Буква>-}] [{& lt-Цифра>-}] [{& lt-Буква>-}] | & lt-Имя свойства& gt- «. „<-Буква>- [{& lt-Буква>-}] [{& lt-Цифра>-}] [{& lt-Буква>-}]
& lt-Значение>-: := [{& lt-Символ>-}] | & lt-Привязка>-
& lt-Символ>-: := & lt-Буква>- | & lt-Цифра>- | „“ | „,“ | „?“ | „+“ | „-“ | … | '-„'- | „“ | „„
& lt-Привязка>-: := „{“ & lt-Имя>- „.“ & lt-Имя свойства& gt- [“, „& lt-Режим>-] „}“
& lt-Режим>-: := & quot-TargetMode“ | & quot-SourceMode“ yUnitedMode“
& lt-Родительский элемент& gt-: := & quot-on“ & lt-Имя>-
Блок „Тип“ представляет собой название класса элемента GUI из используемой библиотеки. В блоке „Имя“ находится имя элемента, присваиваемое разработчиком. Названия классов и имена переменных состоят из букв английского алфавита и цифр (первым символом обязательно должна быть буква).
В блоке „Свойства“, заключенном в круглые скобки, через запятую происходит перечисление значений свойств (в случае отсутствия данного блока свойствам элемента присваиваются значения по умолчанию). Значения задаются последовательностью символов, что позволяет присваивать значения свойствам любого типа. Также возможна привязка свойств к данным путем задания в фигурных скобках имени источника данных и имени его свойства, к значению которого происходит привязка. Привязка может быть осуществлена в трех режимах: по умолча-
нию — от свойства источника к целевому свойству („TargetMode“), от целевого свойства к свойству источника („SourceMode“) и в двухстороннем режиме („UnitedMode“).
В блоке „Родительский элемент“ описывается принадлежность данного элемента ОШ к одному из ранее описанных с помощью ключевого слова оп (данный блок отсутствует в описании базового элемента, создаваемого Оиі). Заканчивается описание элемента точкой.
Таким образом, описание Оиі, представляющего собой форму белого цвета шириной 300 и высотой 150, содержащую поле для ввода текста, расположенное вверху формы, и пятиугольную кнопку с координатами вершин (50- 70), (70- 50), (90- 50), (90- 90), (70, 90) и текстом, дублирующим введенный в текстовое поле, на данном языке разметки выглядит следующим образом:
Form forml (Width="300″, Height="150″, Background=& quot-#FFFFFF"-).
TextBox textBoxl (VerticalPosition=& quot-Top"-) on forml.
Button buttonl (Template. Path=& quot-(50- 70), (70- 50), (90- 50),
Text=& quot-{textBox1. Text, TargetMode}& quot-) on forml.
Отказ от синтаксиса XML и иерархической модели представления данных в пользу реляционной позволяет сократить количество кода, избавиться от перегрузки описания тэгами и сделать его более удобным для дизайнеров.
Алгоритм генерации GUI на основе описания на языке разметки
Алгоритм генерации GUI на основе его описания на языке разметки представляет собой последовательность действий, изображенную на рисунке.
На этапе „Синтаксический анализ кода на языке разметки“ происходит проверка правильности синтаксиса кода и разбор описания GUI по отдельным элементам [2]. Наличие ошибок приведет к аварийному завершению работы алгоритма и выводу сообщений об ошибках. При отсутствии ошибок на этапе „Построение модели GUI“ происходит отображение элементов GUI и отношений между ними в память. Объекты элементов GUI будут сгенерированы на этапе „Создание объектов GUI“ на основе созданной модели [2].
Для генерации объектов наиболее пригодно использование механизма рефлексии [5]. Данный механизм позволяет создать объект нужного типа, точное имя которого становится известным только во время выполнения программы, и соответствующим образом его использо-
(90- 90), (70, 90)»
Алгоритм генерации GUI на основе кода на языке разметки
вать. В результате GUI может генерироваться в любой момент выполнения приложения без промежуточного преобразования описания на языке разметки в соответствующий код на высокоуровневом языке. Данный метод применим к объектам любого типа и любого набора свойств и поэтому не привязан к конкретной библиотеке элементов GUI. Также применение механизма рефлексии позволяет осуществить привязку данных непосредственно к свойствам элементов GUI для непосредственного и быстрого отображения состояния переменных, что является важным для компьютерных игр (например, для отображения прогресса, здоровья, скорости и т. д.).
Выводы
Применение декларативного описания графического пользовательского интерфейса при разработке игровых приложений не только возможно, но и предоставляет разработчикам некоторые преимущества перед традиционным подходом. Однако декларативный подход требует использование языка разметки, ориентированного на данную предметную область, и соответствующего алгоритм реализации GUI. Описанные в данной статье язык разметки и ал-
горитм успешно применялись при создании компьютерных игр в среде разработки игровых тренажеров, созданной на кафедре САПР и П К Волгоградского государственного технического университета.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Шабалина, О. А. Разработка обучающих игр: интеграция игровой и обучающей компоненты / О. А. Шабалина, П. Н. Воробкалов, А. В. Катаев // Открытое образование. — 2011. — № 2. — С. 290−294.
2. Creating a declarative XML UI language [Электронный ресурс]. — 2009. — Режим доступа: http: //www. ibm. com/developerworks/web/library/x-decxmlui/index. html
3. About MXML [Электронный ресурс]. — [2013]. — Режим доступа: http: //livedocs. adobe. com/tlex73/html/help. html? content=mxmlcomponents2. html
4. Кузнецов, М. А. Машинное представление иерархических структур на основе XML и DOM / М. А. Кузнецов // Известия ВолгГТУ: межвуз. сб. науч. ст. № 1(60) / ВолгГТУ. — Волгоград, 2007. — (Серия «Актуальные проблемы управления, вычислительной техники и информатики в технических системах» — вып. 1). — С. 97−100.
5. Еркин, Д. А. Разработка системы декларативного описания GUI в игровых приложениях / Д. А. Еркин // Тезисы докладов конференции-конкурса научных, конструкторских и технологических работ студентов Волгоградского государственного технического университета / ВолгГТУ — редкол.: В. И. Лысак (отв. ред.) [и др.]. — Волгоград, 2012. — С. 134−135.

ПоказатьСвернуть
Заполнить форму текущей работой