Gameplay: сенсорне управління і підтримка 2 в 1 в ігрових додатках
- Віртуальні контролери
- Проблеми, що виникли при розробці
- Підтримка перемикання 2 в 1
- впровадження DLL
- Запуск ігор з сторонньої оболонки запуску
- Отриманий досвід
- Відбір ігор для сенсорного управління
- Відгуки користувачів
- висновок
- про авторів
- ресурси
- Додаткові матеріали
- Відео
Завантажити статтю [Eng., PDF 632KB]
GestureWorks Gameplay - це новий спосіб взаємодії з популярними іграми на ПК. Програма Gameplay для Windows 8 дозволяє гравцям використовувати і створювати власні віртуальні контролери для сенсорного управління, які можна застосовувати в існуючих іграх. Кожен віртуальний контролер додає кнопки, жести та інші елементи управління, які зіставляються з підтримуваними грою засобами управління. Крім того, гравці можуть застосовувати сотні індивідуально настроюються жестів для взаємодії з грою на екрані. Співпраця компанії Ideum з корпорацією Intel дозволило отримати доступ до технологій і інженерних ресурсів, щоб реалізувати можливості сенсорного управління в Gameplay.
подивіться цей короткий ролик , Що пояснює принцип роботи Gameplay.
Віртуальні контролери
На відміну від традиційних ігрових контролерів віртуальні контролери повністю настроюються, а гравці можуть обмінюватися ними з друзями. Програма Gameplay працює на планшетах з Windows 8 , ультрабуки , пристроях 2 в 1 , моноблоках і навіть мультисенсорних планшетах з великими екранами.
Малюнок 1 - Програма Gameplay в дії на планшеті з процесором Intel Atom
«Віртуальний контролер реальний! Програма Gameplay охоплює сотні ігор для ПК, які не підтримують сенсорне управління, і дозволяє грати в них на абсолютно новому поколінні мобільних пристроїв, - говорить Джим Спадаччіні (Jim Spadaccini), директор компанії Ideum, що створила GestureWorks Gameplay. - Віртуальні контролери Gameplay краще фізичних контролерів, оскільки їх можна повністю налаштовувати і змінювати. Ми з інтересом чекаємо поширення Gameplay серед гравців ».
Малюнок 2 - Головна сторінка Gameplay
Разом з GestureWorks Gameplay поставляється кілька десятків вже готових віртуальних контролерів для популярних ігор для Windows (в даний час підтримується понад 116 унікальних найменувань). У програмі Gameplay користувачі також можуть налаштовувати існуючі контролери і змінювати їх розкладку. Програма також включає зручне у використанні засіб створення віртуальних контролерів: користувачі можуть створювати власні контролери для безлічі популярних ігор для Windows, які розповсюджуються за допомогою служби Steam.
Малюнок 3 - Розкладка віртуального контролера
Користувачі можуть розміщувати джойстики, перемикачі, коліщатка прокрутки і кнопки в будь-яких місцях екрану, змінювати розмір і прозорість елементів управління, додавати кольору і підписи. Також можна створювати кілька подань розмітки і перемикатися між ними в будь-який момент гри. Завдяки цьому користувач може створювати уявлення для різних дій в грі, наприклад у рольовій грі можна створити одну виставу для бою, а інше - для управління спорядженням.
Малюнок 4 - Глобальне уявлення жестів віртуального контролера
Програма Gameplay, в основі якої лежить движок обробки жестів GestureWorks Core, підтримує понад 200 глобальних жестів. Найпростіші глобальні жести, такі як дотик, перетягування, зведення / розведення пальців і поворот, підтримуються за замовчуванням, але також налаштовуються. Це дозволяє розширювати можливості контролерів і застосовувати мультисенсорні жести для додаткового управління в іграх на ПК. Наприклад, певні дії або бойові прийоми в шутерах від першої особи можна активувати одним жестом замість натискання кількох кнопок. Gameplay також включає експериментальну підтримку акселерометрів: в гонках можна повертати, нахиляючи ультрабук або планшет. Програма виявляє перемикання пристроїв 2 в 1 в режим планшета, щоб при необхідності включити віртуальний контролер.
Проблеми, що виникли при розробці
Розробляти таку зручну програму було непросто. Для втілення ідеї Gameplay в життя потрібно подолати ряд технічних проблем. Деякі проблеми вдалося вирішити традиційними методами програмування, для інших проблем потрібні були більш витончені рішення.
Підтримка перемикання 2 в 1
Ще на самому початку розробки Gameplay, ми вирішили додати підтримку пристроїв 2 в 1. Ідея була в тому, що додаток працює постійно, але відображення контролерів не відбувається в настільному режимі. У разі переходу в режим планшета, контролер Gameplay починає відображатися для забезпечення сенсорного управління в додатку. Активуйте JavaScript у вашому віртуального контролера на пристроях 2 в 1.
Малюнок 5 - Налаштування віртуального контролера
Для тих, хто хоче отримати додаткову інформацію про переключення режимів в пристроях 2 в 1, в розділі Ресурси приведена відмінна рекомендація з прикладами коду.
впровадження DLL
Впровадження DLL (DLL injection) - це метод, який використовується для виконання коду всередині адресного простору іншого процесу шляхом завантаження зовнішньої бібліотеки динамічного компонування. Впровадження DLL часто використовується зовнішніми програмами для шкідливих цілей, але цю технологію можна використовувати і в «мирних цілях», щоб розширити можливості програми так, як це не було передбачено її авторами. У програмі Gameplay нам був потрібний спосіб вставки даних в потік вхідних даних процесу (запущеної гри), щоб сенсорний ввід можна було перетворити у вхідні дані, які розпізнаються грою. З безлічі методів реалізації впровадження DLL програмісти Ideum вибрали виклики підключення до Windows в API SetWindowsHookEx. В кінцевому підсумку вибрали підключення до певних процесів замість глобальних підключень з міркувань продуктивності.
Запуск ігор з сторонньої оболонки запуску
Ми вивчили два методи підключення до адресного простору цільових процесів. Додаток може підключитися до адресного простору запущеного процесу, або ж додаток може запустити цільової виконуваний файл в якості дочірнього процесу. Обидва методи цілком життєздатні. Проте на практиці виявилося, що набагато простіше відслідковувати і перехоплювати процеси або потоки, створені цільовим процесом, якщо наш додаток є батьківським по відношенню до цього цільовим процесу.
При цьому виникає проблема для клієнтів програм, таких як Steam і UPlay, що запускаються при вході користувача в систему. У Windows не надається гарантованого порядку запуску процесів, а процес Gameplay повинен бути запущений до цих процесів, щоб отримати можливість підключатися до управління. Gameplay вирішує цю проблему шляхом установки компактної системної служби, яка відстежує запуск додатків при вході користувача в систему. Якщо запускається одне з цікавих для нас клієнтських додатків, Gameplay може підключитися до неї в якості батьківського процесу, і тоді елементи управління будуть відображатися належним чином.
Отриманий досвід
Фільтрація даних миші
При розробці ми зіткнулися з тим, що в деяких гра невірно оброблялися вхідні дані віртуальної миші, отримані з сенсорного екрану. Ця проблема найчастіше виникала в шутерах від першої особи або в рольових іграх, де за допомогою миші вибирається напрямок погляду. Проблема полягала в тому, що вхідні дані миші, отримані з сенсорного екрану, були абсолютними по відношенню до будь-якої точки на екрані, а значить, і в ігровому середовищі. Через це сенсорний екран був практично марним в якості пристрою для керування напрямком погляду за допомогою миші. Вирішити цю проблему вдалося шляхом фільтрації вхідних даних миші, перехоплюючи потік вхідних даних гри. Це дало можливість імітувати вхідні дані миші для керування напрямком погляду за допомогою такого плитку управління, як джойстик. Знадобилося чимало часу і зусиль, щоб налаштувати чутливість джойстика і зону нечутливості, щоб вони по відчуттях збігалися з мишею, але коли це було зроблено, все прекрасно запрацювало. Це виправлення можна побачити в дії в таких іграх, як Fallout: New Vegas або The Elder Scrolls: Skyrim.
Відбір ігор для сенсорного управління
Розробники Ideum витратили чимало часу, налаштовуючи віртуальні контролери для оптимального зручності в іграх. Різні елементи ігор визначають придатність гри для Gameplay. Нижче наводяться загальні правила, що визначають, які типи ігор добре працюють з Gameplay.
Зручність використання Gameplay для різних типів ігор
добре
краще
відмінно
- Рольові ігри (RPG)
- Симулятор
- бойові гри
- Спорт
- гонки
- головоломки
- Стратегії в реальному часі (RTS)
- Шутери з видом від третьої особи
- Платформери
- Ігри з бічної прокруткою
- Пригоди
Зручність гри - це важливий фактор використання або відмови від використання Gameplay для цієї гри, але найважливіший фактор - це стабільність. Деякі ігри взагалі не працюють ні з підключенням до управління, ні з впровадженням вхідних даних, ні з накладенням. Це може відбуватися з різних причин, але найчастіше сама гра відстежує свій простір в пам'яті або потік вхідних даних, щоб уникнути підміни даних. Програма Gameplay сама по собі є цілком безпечною і дозволеної, але вона використовує технології, які також застосовуються для шкідливих цілей, тому, на жаль, деякі ігри не працюватимуть з Gameplay, якщо в них немає вбудованої підтримки сенсорного управління.
Відгуки користувачів
Хоча програма Gameplay 1.0 поки знаходиться на досить ранній стадії розробки, ми отримали цікаві відгуки користувачів щодо сенсорного управління іграми на ПК. В отриманих відгуках вже можна простежити деякі цілком ясні тенденції. По-перше, ясно, що всім в цілому подобається можливість налаштовувати сенсорний інтерфейс в іграх. Решта відгуки стосуються налаштування інтерфейсу в іграх в деяких ключових областях:
- Багато віртуальні контролери не надто зручні для лівшів. Саме це було змінено раніше всього в багатьох опублікованих віртуальних контролерів.
- Найчастіше користувачі змінюють розмір кнопок і їх розташування, тому Ideum розглядає можливість додавання автоматичного калібрування кнопок за розміром руки в майбутній версії Gameplay.
- Багато користувачів вважають за краще використовувати сенсорну клавішу прокручування, а не дискретне дотик і відпускання.
Ми очікуємо, що вдасться виявити і інші тенденції в міру збільшення кількості створених віртуальних контролерів.
висновок
GestureWorks Gameplay привносить можливості сенсорного управління в ваші улюблені ігри. Для цього використовується поєднання візуального накладення елементів управління і підтримуються додаткові способи взаємодії, такі як жести, акселерометри і перемикання трансформерів в різні режими роботи. Найбільший інтерес при роботі над цим проектом представляють відгуки користувачів. Люди дуже раді можливості грати на ПК із сенсорним управлінням. Вони з величезним задоволенням насолоджуються своїми улюбленими іграми, застосовуючи сенсорний екран.
про авторів
Erik Nimeyer працює інженером з програмного забезпечення у відділі Software and Solutions Group корпорації Intel. Ерік займався оптимізацією продуктивності додатків на мікропроцесорах Intel протягом майже 15 років. Його спеціалізація - розробка нових користувальницьких інтерфейсів і настройка на рівні мікроархітектури. У вільний від роботи час він займається альпінізмом. Зв'язатися з ним можна за адресою [email protected] .
Chris Kirkpatrick - інженер з програмного забезпечення у відділі Intel Software and Services Group. Він підтримує графічні рішення Intel для мобільних платформ в групі Visual & Interactive Computing Engineering. Він є бакалавром комп'ютерних наук в Університеті штату Орегон. Зв'язатися з ним можна за адресою [email protected] .
ресурси
https://gameplay.gestureworks.com/
Додаткові матеріали
How to Write a 2-In-1 Aware Application: / En-us / articles / how-to-write-a-2-in-1aware-application
Krita Gemini Development of a 2-In-1 Aware Application with Dynamic UI for Laptop and Tablet Modes : / En-us / articles / krita-gemini-twice-as-nice-on-a-2-in-1
Detecting 2 in 1 Conversion Events & Screen Orientation in a 2 in 1 Device: / En-us / articles / detecting-slateclamshell-mode-screen-orientation-in-convertible-pc
Відео
Gestureworks Gameplay on an Ideum 46 Inch Multi-Touch Table