GUI для игры



Пришло время немного поговорить о GUI. Или даже, по возможности, много поговорить о реализации GUI на различных движках.

Современные игровые движки обычно дают несколько возможностей для реализации GUI в игре. Например, в Unity изначально встроено целых два варианта построения GUI — это GUITexture для создания интерфейсов при помощи обычных текстур, а также набор специальных классов UnityGUI, уже реализующих большинство стандартных контролов (элементов пользовательского интерфейса), таких как окна, кнопки, текстовые поля и полосы прокрутки.

Также некоторые или большинство — даже не знаю:),- современных движков позволяют использовать Scaleform для создания пользовательского интерфейса (GUI и HUD). Если кто не знает — Scaleform позволяет использовать Adobe Flash для создания интерфейсов AAA-класса (по крайней мере так написано на самом сайте Scaleform). В их число входит Unreal Engine (UDK), где Scaleform можно использовать без дополнительного лицензирования (т.е. бесплатно), CryEngine и Unity. В последней Scaleform предоставляется за скромное вознаграждение ~$240 для мобильных платформ и до $8000 за выпуск консольной или PC-игры (цены актуальны только на момент написания этой статьи).

Мы постараемся рассмотреть все возможности для построения GUI в играх и оценим их достоинства и недостатки.

Scaleform

Надо сказать, когда я узнал о существовании Scaleform, я был просто в восторге! Но для подключения этого инструмента к движку, в котором Scaleform не идет в комплекте (UDK, CryEngine), нужно потратить немало сил и очень много средств. Это не по карману обычному инди-разработчику.

Кроме того, производительность на слабых платформах (например, на смартфонах) вызывает вопросы, а также реализация Scaleform в некоторых движках не позволяет осуществлять глубокую интеграцию GUI и игрового окружения. Например, насколько я знаю, в Unity Scaleform отображается в виде независимого слоя, который никак не взаимодействует с основной сценой игры. Кому-то глубокая интеграция и не требуется. Тогда все в порядке — путь к высококачественным игровым GUI на Flash открыт!

Встроенные игровые GUI

Некоторые движки предлагают свои собственные GUI-системы. Например, в Unity есть специальный набор классов UnityGUI, предоставляющий готовые контролы, которые можно разнообразить с применением таблиц стилей.

Недостатком является ограниченность, иногда производительность (на тех же мобильных платформах), невозможность полностью интегрироваться в игру (игровой GUI выводится независимо от игровой сцены).

GUI на базе текстур

Этот способ построения GUI, наверное, самый древний. Но до сих пор остается актуальным, особенно с недавним отскоком назад в производительности. Я говорю о смартфонах, игры на которых в данный момент напоминают первые 3d-игры середины 90-х годов прошлого столетия.

Плюсы:
  • Высокая производительность. GUI текстуры в принципе ничем не отличаются от других текстур обычных 3d-моделей.
  • Возможность глубокой интеграции GUI в игровые сцены. Например, иногда требуется в игре реализовать интерфейс, скажем, на пульте управления космического корабля, к которому подходит персонаж.
  • Возможность реализации практически в любом игровом движке, независимо от того, 3d или 2d.

Недостатки:
Тут он один и очень серьезный — недостаток готовых решений. Часто люди берутся за реализацию своих собственных GUI для игры. Это отнимает много сил и времени.

Однако есть и почти готовые решения. Если говорить о Unity, то в Assets Store можно отыскать вполне функциональные и проверенные временем продукты. Например, NGUI или EZ GUI.

Хотя для их использования нужно обзавестись еще некоторым количеством программ, например, для создания своих шрифтов и преобразования их в битмаповые (bitmap fonts). Благо и тут есть множество программ, как платных так и бесплатных, которые помогут в этом.
  • 0
  • 29 января 2013, 17:29
  • dimanjy

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.