Протягом останніх кількох років відбулися кілька справді цікавих проривів у наборі інструментів інтерфейсу. Ігрові інтерфейси теж розвиваються, але дещо повільнішими темпами. Це, мабуть, тому, що розробка повнофункціональної підсистеми інтерфейсу є самою важливою справою, і важко виправдати інвестиції в ресурси.
Моя особиста улюблена система користувальницького інтерфейсу - Фонд презентацій Windows (WPF). Це дійсно переносить потенціал для диференціації інтерфейсу користувача на наступний рівень. Ось деякі його цікавіші особливості:
Елементи керування за замовчуванням не мають вигляду. Логіка та візуальний вигляд управління, як правило, відокремлюються. Кожен елемент управління надає стиль та шаблон за замовчуванням, який описує його візуальний зовнішній вигляд за замовчуванням. Наприклад, кнопка може бути представлена у вигляді закругленого прямокутника із зовнішнім штрихом, суцільним кольором або фоном градієнта та презентатором вмісту (для подання підпису). Розробники (або дизайнери) можуть створювати шаблони користувальницьких стилів, які змінюють зовнішній вигляд та (певною мірою) поведінку контролю. Стилі можна використовувати для зміни простих властивостей елемента керування, наприклад, колір переднього плану / фону, шаблон тощо; шаблони змінюють фактичну візуальну структуру.
Стилі та шаблони можуть включати "Тригери". Тригери можуть прослуховувати певні події чи значення властивостей (або комбінації значень) та умовно змінювати аспекти стилю чи шаблону. Наприклад, шаблон кнопки, як правило, має тригер на властивості "IsMouseOver" для зміни кольору фону, коли миша наводить на кнопку.
Існує кілька різних "рівнів" елементів інтерфейсу, починаючи від легших елементів ваги з мінімальною функціональністю до повномасштабних засобів важкої ваги. Це дає певну гнучкість у структурі інтерфейсу користувача. Найпростіший з елементів елементів інтерфейсу користувача UIElement
, не має стилю чи шаблону і підтримує лише найпростіші події введення. Для простих елементів, таких як індикатори стану, ця функціональність може бути всім, що вам потрібно. Якщо вам потрібна більш широка підтримка введення, ви можете отримати FrameworkElement
(що розширюється UIElement
). Традиційні віджети, як правило, випливають із цього Control
, що розширює FrameworkElement
та додає користувальницький стиль та підтримку шаблонів (серед іншого).
WPF використовує збережену, масштабовану, незалежну від дозволу векторну графічну модель. У Windows програми WPF відображаються та складаються за допомогою Direct3D.
Введення WPF включало нову декларативну мову програмування під назвою Xaml. Xaml, заснований на Xml, є кращою мовою для оголошення "сцени" інтерфейсу користувача. Насправді це дуже гладко, і хоча на перший погляд може здатися схожим, він принципово відрізняється від існуючих мов, таких як XUL (і набагато потужніший).
WPF має дуже розвинену текстову підсистему. Він підтримує більшість, якщо не всі функції шрифту OpenType, двонаправлене антиаліагенне ClearType, позиціонування субпікселів тощо.
"Добре, чудово, тепер як це стосується розвитку ігор?"
Ще тоді, коли WPF ще розроблявся (і був відомий як "Avalon"), я проходив курс дизайну відеоігор на Georgia Tech. Мій остаточний проект був покроковою стратегічною грою, і я хотів дуже спроможного інтерфейсу. WPF / Avalon здавався гарним маршрутом, оскільки він мав повний набір повнофункціональних елементів керування, і це грає мені здатністю повністю змінити зовнішній вигляд цих елементів управління. Результатом стала гра з гарним і чітким інтерфейсом користувача з рівнем функціональності, який ви зазвичай бачите лише у повноцінних додатках.
Тепер проблема використання WPF для ігор полягає в тому, що він досить важкий і робить його у власній "пісочниці". Я маю на увазі, що не існує підтримуваного способу розміщення WPF в ігровому середовищі Direct3D або OpenGL. Вміст Direct3D можна розміщувати в програмі WPF, але ви будете обмежені рамкою програми WPF, яка, як правило, нижче, ніж ви хотіли б. Для деяких типів ігор, таких як 2D стратегічні ігри (скріншот мого поточного ігрового проекту WPF), він все ще може чудово працювати. За що-небудь інше, не дуже. Але ви все ще можете застосувати деякі найбільш переконливі архітектурні концепції WPF для розробки власного інтерфейсу.
Існує також відкрита, некерована C ++ / Direct3D реалізація WPF під назвою "WPF / G (WPF для ігор)"] ( http://wpfg.codeplex.com/ ), яка спеціально розроблена для використання в іграх на обох Win32 та Windows Mobile. Здається, активний розвиток припинився, але востаннє, коли я це перевірив, це було досить повною реалізацією. Текстова підсистема була єдиною областю, якої насправді бракувало порівняно з впровадженням WPF від Microsoft, але для ігор це менше проблеми. Я думаю, що інтеграція WPF / G з ігровим движком на основі Direct3D буде досить простою. Пройшовши цей маршрут, ви можете забезпечити надзвичайно здатну систему незалежного інтерфейсу, незалежну від роздільної здатності, широку підтримку налаштування інтерфейсу користувача.
Просто для того, щоб дати вам уявлення про те, як може виглядати інтерфейс гри на основі WPF, ось скріншот із проекту мого домашнього улюбленця: