Аннотация
Компания Tencent решила повысить удобство игры на ультрабуках и трансформерах. Игра Legend of Xuan Yuan и так была весьма успешной, но в использовании этих систем разработчики Tencent увидели новую возможность. Сейчас на рынке представлено немало трансформеров, то есть систем, которые могут работать и в режиме обычного ноутбука, и в режиме планшета. Разработчики Tencent совместно с инженерами Intel работали над отбором моделей планшетов и ноутбуков, поддерживающих изменение состояния игры. Пользовательский интерфейс игры был обновлен для поддержки сенсорного управления, которое стало одной из важнейших и удобнейших функций на планшетах. И наконец, благодаря датчикам появилась возможность по-новому управлять игрой: для выполнения определенных действий можно было встряхнуть планшет.
Первая трехмерная многопользовательская сетевая игра MMOPRG на китайском рынке
Компания Tencent — крупнейший разработчик игр в Китае. Поскольку количество трансформеров на китайском рынке постоянно растет, разработчики Tencent решили предоставить владельцам таких устройств уникальные игровые возможности. Всего через два года после выпуска игра Legend of Xuan Yuan уже стала весьма популярной. В силу широкого распространения ультрабуков и трансформеров было решено добавить в игру поддержку сенсорного управления и акселерометров. Трехмерные массовые многопользовательские сетевые ролевые игры (MMORPG) очень популярны в Китае, но до Legend of Xuan Yuan ни в одной из них не была реализована поддержка сенсорного управления. Компания Tencent получила возможность первой внедрить новую технологию, но при этом возник и риск: окажется ли новинка успешной? В этом примере описывается, каким образом разработчики Tencent при поддержке инженеров Intel изменили игру так, чтобы повысить ее удобство на трансформерах и ультрабуках под управлением Windows* 8.
В Legend of Xuan Yuan используется два разных пользовательских интерфейса для режимов планшета и ноутбука. На трансформерах игра определяет, в каком из этих режимов устройство работает в данный момент. В режиме ноутбука игра использует клавиатуру и мышь. В режиме планшета игра переключается на сенсорный интерфейс. Разработчики Tencent стремились добиться плавного перехода между традиционным режимом ноутбука и сенсорным управлением в игре. Игрок не испытывает неудобства, поскольку интерфейс автоматически переключается между режимами. В этом примере мы рассмотрим обнаружение режима работы трансформера и переключение интерфейса в соответствии с текущим режимом.
Преобразование существующего пользовательского интерфейса в сенсорный может быть непростой задачей. Это особенно трудно для игр со сложным интерфейсом, где используются щелчки левой и правой кнопками мыши, а также множество командных клавиш. Не существует единственно верного подхода для адаптации таких интерфейсов. Реализация плавного и точного сенсорного управления требует немалого внимания. Поскольку игра уже достаточно популярна, нужно делать как можно меньше изменений, чтобы не вызывать отторжения у существующих игроков. Мы рассмотрим устройство интерфейса.
Поскольку трансформеры оборудованы акселерометрами, разработчики Tencent также добавили поддержку особо мощной атаки против врагов, если встряхнуть устройство при игре.
Изменение режима игры в соответствии с режимом трансформера
Игра Legend of Xuan Yuan содержит два интерфейса и динамически переключается между ними в зависимости от режима работы трансформера. Когда трансформер работает в режиме ноутбука, игра Legend of Xuan Yuan ведет себя совершенно обычным образом, для ее управления используется клавиатура и мышь. В режиме планшета применяется сенсорное управление. Как это работает?
Вот как мы это сделали: определение состояния трансформера и переключение режима интерфейса
Игра Legend of Xuan Yuan ожидает сообщение WM_SETTINGCHANGE. Это сообщение оповещает приложения об изменениях состояния системы. При изменении состояния трансформера поступает сообщение WM_SETTINGCHANGE с LPARAM, указывающим на строку со значением «ConvertibleSlateMode». Вызов GetSystemMetrics (SM_CONVERTIBLESLATEMODE) возвращает текущее состояние.
В планшетном режиме игры на экран накладывается интерфейс с сенсорными кнопками для различных действий. В режиме ноутбука этот интерфейс скрывается.
В игре Legend of Xuan Yuan используется следующий код обнаружения:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { case WM_SETTINGCHANGE: if (lParam != NULL && wcscmp(TEXT("ConvertibleSlateMode"), (TCHAR *)lParam) == 0) { BOOL bSlateMode = (GetSystemMetrics(SM_CONVERTIBLESLATEMODE) == 0); if (bSlateMode == True) //Slate mode, display the Touch overlay UI … else //Laptop mode, hide the touch overlay UI … }
Рисунок 1. Код для обнаружения изменения состояния системы и для проверки режима системы.
Дополнительные сведения см. в примере кода с поддержкой трансформеров.
Чтобы такой подход работал, он должен поддерживаться изготовителем системы; должен быть установлен соответствующий драйвер. В некоторых системах драйвер не всегда работает правильно, поэтому мы добавили возможность переключения интерфейса вручную. Далее описывается, как работает интерфейс.
Теперь ваша очередь: определите, в каком режиме используется устройство: ноутбука или планшета
Как определить состояние устройства в игре и как изменить интерфейс? Для наибольшего удобства на трансформерах ваша игра должна быть «двуличной»: она должна динамически переключать интерфейс в зависимости от состояния устройства.
Прежде всего, спланируйте интерфейс для режима ноутбука и режима планшета. Подумайте о том, как устройство будут держать в руках или как оно будет стоять на столе. Выберите наиболее удобный для игроков способ взаимодействия с интерфейсом. При проектировании сенсорного интерфейса оставьте на экране больше места для сенсорных элементов управления, чем обычно требуется для кнопок, нажимаемых мышью. В противном случае игрокам будет непросто нажимать нужные элементы управления.
Кроме того, сенсорное взаимодействие зачастую медленнее, чем управление с помощью клавиатуры и мыши, не забывайте об этом. Игровым меню также нужен и интерфейс для клавиатуры с мышью, и сенсорный интерфейс.
Неплохо бы при запуске игры проверять состояние устройства с помощью GetSystemMetrics и соответствующим образом выбирать интерфейс. Помните, что не все системы правильно передают сведения о своем состоянии и не всегда уведомляют вашу игру об изменениях состояния, поэтому выберите начальный интерфейс игры по умолчанию на случай, если текущее состояние устройства не удастся определить.
Следите за сообщением WM_SETTING CHANGE после запуска игры. Когда такое сообщение появится, проверьте его содержимое: LPARAM должен указывать на строку со значением «ConvertibleSlateMode». Это значение указывает, что игра должна вызвать GetSystemMetrics(SM_CONVERTlBLESLATEMODE) и проверить, следует ли сменить интерфейс.
Обнаружение может не всегда действовать, поскольку не все системы могут правильно сообщать об изменении состояния. Пожалуй, если обнаружение не дает достоверный результат, по умолчанию игра должна использовать режим ноутбука. И в любом случае должен быть способ вручную переключить интерфейс между режимом мыши и клавиатуры и режимом планшета.
Полный пример, обнаруживающий изменение состояния системы и меняющий интерфейс, см. в образце с поддержкой трансформеров. Более сложный код с обнаружением пристыковки клавиатуры, изменения ориентации экрана и т. д. см. в примере с обнаружением состояния.
Выбор типа сенсорных сообщений
Перед добавлением поддержки сенсорного управления в существующее приложение необходимо выбрать, какой тип сообщений Window вы собираетесь поддерживать. Выберите один из трех наборов сообщений Window: WM_POINTER, WM_GESTURE или WM_TOUCH. Давайте посмотрим, каким образом мы делали этот выбор для игры Legend of Xuan, чтобы помочь вам принять верное решение.
Как мы это сделали: сравнение типов сенсорных сообщений
Поддержка сенсорного управления — основная «изюминка» новой версии игры Legend of Xuan Yuan. Когда игроки используют сенсорный экран, они видят новый интерфейс с набором сенсорных элементов управления.
WM_POINTER — простейший с точки зрения написания кода тип сообщений, он поддерживает широкий набор жестов. Но работает WM_POINTER только в Windows 8 и более поздних версиях. Разработчикам Tencent требовалось поддерживать огромную базу существующих пользователей, применяющих Windows 7, поэтому от WM_POINTER сразу же отказались.
Перед обсуждением остальных типов сообщений давайте рассмотрим основные элементы интерфейса игры Legend of Xuan Yuan. Сенсорный интерфейс игры использует экранные кнопки в качестве элементов управления. Эти элементы управления можно использовать и для движения, и для действий. Элементы управления движением и действиями находятся на противоположных сторонах экрана, чтобы можно было использовать для управления обе руки. Элементы управления расположены в нижней части экрана. Кроме того, в верхней части экрана находится значок, раскрывающий каскадное меню для более сложных элементов интерфейса. Устройство интерфейса мы обсудим позже, но уже понятно, как именно элементы интерфейса должны работать.
Рисунок 2: Экранный сенсорный интерфейс в правом и левом нижних углах.
Игра должна распознавать одновременное касание в разных местах экрана. Поскольку несколько касаний должны работать одновременно, такое управление называется мультисенсорным.
Теперь, когда мы изучили основные компоненты мультисенсорного интерфейса, можно сравнить оставшиеся типы сенсорных сообщений: WM_GESTURE и WM_TOUCH. Проще всего создавать код для WM_GESTURE — здесь поддерживаются типовые жесты, такие как масштабирование двумя пальцами и боковая прокрутка. Сообщения этого типа скрывают некоторые детали сенсорного взаимодействия и передают коду вашей игры полный жест после его завершения. События простых касаний по-прежнему отправляются в игру как сообщения мыши. Это означает, что типовой сенсорный интерфейс можно реализовать с помощью сообщений мыши для событий простых касаний и с помощью WM_GESTURE для сложных жестов.
WM_GESTURE поддерживает только жесты, включающие один набор связанных точек касания. Из-за этого затрудняется поддержка жестов мультисенсорных интерфейсов, где игрок касается экрана в нескольких местах. WM_GESTURE плохо подходит для этой игры.
WM_TOUCH — это сообщение сенсорного управления самого низкого уровня. Оно предоставляет полный доступ к всем событиям касания (например, «палец коснулся экрана»). Для WM_TOUCH вам потребуется проделать больше работы по сравнению с другими типами сообщений, поскольку вы должны написать код для всех высокоуровневых сенсорных событий и жестов, составив этот код из низкоуровневых сенсорных событий. Несмотря на необходимую дополнительную работу, сообщения WM_TOUCH стали очевидным выбором для игры Legend of Xuan Yuan. Сообщения WM_TOUCH предоставляют полный контроль над всем сенсорным управлением, включая мультисенсорный ввод.
При физическом касании экрана система отправляет игре сообщения WM_TOUCH. Одновременно игра получает сообщение о щелчке мыши. Благодаря этому приложения без полной сенсорной поддержки могут работать с сенсорным управлением. Эти два сообщения разных типов описывают одно и то же физическое событие. Это может усложнить код обработки сообщений. В игре Legend of Xuan Yuan во всех возможных случаях используются сообщения щелчка мыши, а дублирующиеся сообщения удаляются.
Ваша очередь: выбор нужного типа сенсорного сообщения для вашей игры
WM_POINTER — отличный вариант, если ваша игра предназначена только для Windows 8. Если же нужна обратная совместимость, используйте сообщения WM_GESTURE и WM_TOUCH.
При сравнении типов сообщений учитывайте устройство интерфейса вашей игры. Если в нем широко используются жесты, а вы можете без труда написать обработчики щелчков мышью для событий одиночного касания, не являющихся жестами, то, пожалуй, для вашей игры лучше подойдет WM_GESTURE. В противном случае используйте WM_TOUCH. В большинстве игр с полнофункциональным интерфейсом используются именно сообщения WM_TOUCH, особенно при наличии множества элементов управления, которых игроки касаются одновременно.
Рассматривая сенсорные сообщения, не забывайте и о системе меню. Не забудьте удалить лишние сообщения, поступающие при щелчках мыши.
Дополнительные сведения об этих трех типах сообщений см. в этой статье. Дополнительные сведения о выборе между типами сообщений WM_TOUCH и WM_GESTURE с учетом обратной совместимости см. в статье https://software.intel.com/en-us/articles/touch-samples.
Адаптация интерфейса к сенсорному управлению
Адаптация существующего интерфейса игры к сенсорному управлению может быть непростой задачей, причем не существует единственно верного подхода к решению этой задачи.
Как мы это сделали: новый сенсорный интерфейс
Интерфейс с клавиатурой и мышью общеизвестен и привычен. В нем для движения игрового персонажа используются клавиши W, A, S, D. Настраиваемые кнопки действий в нижней части экрана и клавиши с 1 по 9 соответствуют напиткам, навыкам нападения и дополнительным элементам интерфейса. Эти элементы пользовательского интерфейса включают инвентарь, дерево навыков, задачи и карту. По щелчку правой кнопкой мыши персонаж берет оружие, надевает доспехи или открывает сундук с сокровищами.
Сенсорный экран доступен постоянно, но сенсорный интерфейс по умолчанию скрыт при использовании мыши и клавиатуры. В этом режиме на экране отображается сенсорная кнопка.
Рисунок 3. При нажатии на эту сенсорную кнопку в этом режиме открывается сенсорный интерфейс.
Если игрок переводит систему в режим планшета или касается этой кнопки, на экране появляется полный сенсорный интерфейс.
Как мы это сделали: элементы сенсорного пользовательского интерфейса
В режиме планшета игрок обычно держит устройство обеими руками. В интерфейсе для управления используются большие пальцы обеих рук, чтобы свести к минимуму изменения хвата устройства. Перемещения и действия атаки сгруппированы для удобного доступа большими пальцами левой и правой рук игрока
Сначала мы придумали элемент управления в виде колеса для перемещения игрового персонажа. Кольцо накладывается на левую часть экрана. Схожий принцип используется на игровых контроллерах; привычное расположение делает управление более удобным и интуитивным. Большой палец левой руки игрока обычно постоянно касается экрана. Когда игрок перемещает палец по экрану, персонаж движется в ту сторону, куда переместился палец.
Обычная игровая панель действий находится в нижней части экрана, но ей неудобно пользоваться большими пальцами. Мы добавили группу из 4 крупных кнопок действий в правом углу, где на эти кнопки будет удобно нажимать большим пальцем правой руки. Пользователь может настроить эти кнопки для наиболее часто используемых действий, перетащив на них навыки нападения или напитки.
Перед нападением игрок должен навести прицел на противника. В традиционном интерфейсе с клавиатурой и мышью щелчок левой кнопкой используется для нацеливания на одного противника, а клавиша TAB — для перенацеливания на следующего противника, находящегося в пределах радиуса атаки. В сенсорном режиме есть большая кнопка, чтобы нацелиться на самого близкого противника. Игрок также может коснуться противника, чтобы напрямую нацелиться на него, но это используется редко, поскольку при этом нарушается хват устройства игроком.
В интерфейсе для мыши и клавиатуры щелчок правой кнопкой мыши используется, чтобы открыть сундук с сокровищами, взять оружие, надеть броню или выпить напиток. Касание с удержанием является наилучшей заменой щелчку правой кнопкой мыши в сенсорном интерфейсе.
При использовании клавиатуры и мыши на экране есть маленький значок, чтобы открыть каскадные окна. При сенсорном управлении это неудобно, поскольку значки слишком мелкие. Сенсорный интерфейс включает экранный значок для раскрытия остальных элементов интерфейса с помощью каскадного набора значков. Эти значки открывают более сложные компоненты интерфейса, такие как инвентарь, дерево навыков, задачи и пр. Также предусмотрена кнопка для переключения интерфейса между традиционным (клавиатура и мышь) и сенсорным. За счет этого игрок может без труда переключаться между двумя интерфейсами.
Рисунок 4. Полный сенсорный интерфейс с колесом перемещения, кнопками действий и цели, а также каскадными значками.
Вот полный сенсорный интерфейс с открытыми каскадными значками.
Как мы это сделали: обработка сообщений сенсорного интерфейса
Как происходит обработка сообщений? По-разному для разных компонентов интерфейса. Используются сообщения WM_TOUCH и сообщения мыши. Действия, прицеливание и каскадные кнопки интерфейса используют сообщения щелчков мыши. Колесо перемещения и основная часть игрового экрана используют сообщения WM_TOUCH.
Игровой процесс обычно включает постоянное касание колеса для перемещения, повторяющееся использование кнопок выбора противника и навыков атаки. Это означает, что необходима поддержка мультисенсорного ввода. К счастью, WM_TOUCH хорошо поддерживает мультисенсорное управление.
При появлении сообщения WM_TOUCH игра сохраняет определенный контекст. Код сравнивает это касание с другими недавними сообщениями WM_TOUCH, проверяет, насколько долго удерживалось текущее сочетание касаний и определяет расположение касания.
Если область сообщения WM_TOUCH приходилась на колесо перемещения или была рядом с ним, код проверяет место касания относительно центра колеса и относительно предыдущего касания. Если касание было рядом с предыдущим, причем текущий жест был начат на колесе, то игра передвигает персонажа в нужном направлении. При разработке потребовалась достаточно точная настройка для определения различий между длительным непрерывным касанием колеса перемещения и другими касаниями остальной части экрана.
Если сообщение WM_TOUCH находится на экране далеко от других элементов управления, то, вероятно, это часть жеста, такого как масштабирование или прокрутка, либо часть касания с удержанием. Сообщения WM_TOUCH сравниваются с прежними, чтобы определить нужное действие. Если оно достаточно близко к предыдущему и удерживается свыше 0,2 секунд, оно рассматривается как касание и удержание. В противном случае это жест, и экран настраивается соответствующим образом.
Система автоматически формирует сообщения мыши для всех сенсорных сообщений. Каждое сообщение мыши содержит дополнительную информацию с указанием источника этого сообщения. Вызов GetMessageExtralnfo определяет различие.
#define MOUSEEVENTF_FROMTOUCH 0xFF515700
if ((GetMessageExtraInfo() & MOUSEEVENTF_FROMTOUCH) == MOUSEEVENTF_FROMTOUCH) {
// Click was generated by wisptis / Windows Touch
}else{
// Click was generated by the mouse.
}
Рисунок 5. Проверка, поступают ли от сенсорного экрана сообщения мыши.
Если сенсорный экран создал событие мыши, а игра уже обработала физическое касание с помощью WM_TOUCH, игра удаляет сообщение мыши.
Если же сенсорное сообщение приходится на один из прочих элементов управления, то оно не обрабатывается, а вместо него используется сообщение мыши.
Когда все элементы интерфейса будут на месте, игра получит удобное сенсорное управление.
В этой статье приводится еще один пример добавления сложного сенсорного интерфейса в игре Wargame: European Escalation: https://software.intel.com/en-us/articles/wargame-european-escalation-performance-and-touch-case-study
Ваша очередь: построение вашего сенсорного пользовательского интерфейса
Перед тем, как создать сенсорный пользовательский интерфейс для вашей игры, продумайте все возможные действия игрока. Затем подумайте, как реализовать эти действия с помощью сенсорного экрана (или других датчиков, например, акселерометра). Обращайте особое внимание на различия между касаниями и щелчками, непрерывными действиями (нажатие и удержание) и жестами, такими как перетаскивание.
Решите, каким образом игрок будет выполнять все эти действия с помощью пользовательского интерфейса. Продумайте, где должны находиться видимые элементы управления. Любые экранные элементы управления и каскадные меню должны быть достаточно крупными, чтобы ими было удобно управлять кончиками пальцев. Подумайте, как игрок будет держать устройство в руках, и учитывайте это при проектировании интерфейса для удобного касания.
Теперь, когда интерфейс спланирован, используйте самые простые сообщения. Определяйте, когда касание попадает в каждый элемент управления. Спланируйте, какие типы сообщений использовать для этих элементов управления (мышь или сенсорные) и убирайте дублирующиеся сообщения.
Для сенсорных сообщений нужно сохранять контекст. Расположение, элемент управления и время будут полезны при составлении жестов из мультисенсорных сообщений. Подумайте о фрагментах игры, где требуется постоянный сенсорный контакт. Тщательно тестируйте это при разработке, чтобы убедиться в удобстве игры при использовании типовых расхождений в жестах. Проверяйте различные направления жестов, расположения касаний, близость к предыдущим касаниям и длительность касаний.
Запускайте интерфейс в режиме, который соответствует текущему состоянию устройства. Переключайте интерфейс между клавиатурой/мышью и сенсорным режимом при каждом изменении состояния устройства. Не забудьте предоставить игроку возможность переключения режима интерфейса вручную на случай, если система не предоставляет нужных уведомлений.
Дополнительные советы по проектированию сенсорных интерфейсов см. в руководстве разработчика сенсорных приложений для ультрабуков и планшетов под управлением Windows..
Датчики
Ультрабуки и трансформеры оборудованы датчиками, такими как гироскоп, акселерометр, GPS и пр. С помощью этих датчиков можно расширить игровые возможности.
Как мы это сделали: встряхните устройство
В игре Legend of Xuan Yuan используется акселерометр, чтобы определить, когда пользователь встряхивает устройство. Персонаж накапливает энергию в ходе игры, затем расходует ее в ходе супер-атаки. Игрок может встряхнуть устройство, чтобы запустить супер-атаку: при этом все ближайшие противники подвергаются атаке в течение 10—20 секун.
Мы протестировали различные виды встряхивания, чтобы измерить типовые значения акселерометра
Рисунок 6. Четыре встряхивания с отображением интенсивности и длительности в трех измерениях.
Любое ускорение свыше 1,6 по одной оси является встряхиванием. Мы также могли использовать сумму абсолютных значений ускорения по каждой оси.
Поскольку это события реального мира, такие данные будут иметь много помех и будут всякий раз различаться. Значения включают и краткое, и длительное встряхивание. В большинстве тестовых случаев на одно встряхивание приходилось одно пиковое значение, но в одном случае встряхивание включало несколько пиковых значений. В этой игре используется встряхивание в любом направлении с ускорением свыше 1,6 по любой оси. Несколько встряхиваний в течение 1,5 секунд считаются одним.
При наличии в игре такого кода любое встряхивание устройства приведет к срабатыванию действия супер-атаки.
Ваша очередь: использование датчиков устройства
Ультрабуки и трансформеры содержат различные датчики. Подумайте, как можно использовать каждый из них в игре.
Какие бы датчики вы ни использовали, откалибруйте их, чтобы узнать, как они реагируют на реальные условия. Учтите различные типовые условия, с которыми могут столкнуться игроки.
Заключение
Мы показали, как адаптировать существующую игру для обнаружения состояния трансформера (ноутбук или планшет). Также мы продемонстрировали, как интерфейс может поддерживать сенсорное управление, и как переключаться между интерфейсами в зависимости от режима работы трансформера. Вместе с акселерометром, запускающим в игре уникальное действие, пользователь получает исключительное удобство в игре.
Компания Tencent пошла на риск, реализовав поддержку сенсорного управления в первой китайской MMORPG-игре. И этот риск оправдал себя. Игра Legend of Xuan Yuan великолепно работает на ноутбуках, планшетах и трансформерах. Надеемся, что и вашу игру ждет не меньший успех!
Авторы
Мак Хан (Mack Han) — инженер по разработке клиентского игрового программного обеспечения в компании Tencent, обладающий 10-летним опытом разработки игр. Он создавал игры для консолей, ПК и мобильных телефонов. Много лет он работал в области крупных трехмерных MMORPG, его области специализации — отрисовка трехмерных изображений и оптимизация.
Кейдж Лю (Cage Lu) — инженер по разработке приложений в корпорации Intel. Он уже несколько лет работает с крупными разработчиками игр в Китае, помогая им оптимизировать производительность игровых клиентов и улучшить пользовательские интерфейсы на платформах Intel.
Пол Линдберг (Paul Lindberg) — старший инженер по программному обеспечению в отделе Developer Relations корпорации Intel. Он помогает разработчикам игр во всем мире создавать великолепные игры и другие приложения, демонстрирующие непревзойденные результаты на платформах Intel.
Справочные материалы
Определение режимов планшета и ноутбука, а также ориентации экрана на трансформерах: http://software.intel.com/en-us/articles/detecting-slateclamshell-mode-screen-orientation-in-convertible-pc
Дополнительные сведения об адаптации для трансформеров:
http://software.intel.com/en-us/articles/how-to-write-a-2 in 1aware-application
Сравнение типов сенсорных сообщений в Windows 8:
http://software.intel.com/en-us/articles/comparing-touch-coding-techniques-windows-8-desktop-touch-sample
<Пример с реализацией сенсорного управления в игре Wargame: European Escalation:
http://software.intel.com/en-us/articles/wargame-european-escalation-performance-and-touch-case-study
Руководство по сенсорному управлению для разработчиков:
http://software.intel.com/en-us/articles/ultrabook-device-and-tablet-windows-touch-developer-guide
Более сложный пример внедрения:
http://software.intel.com/en-us/articles/hot-shots-warps-conventional-touch-gaming
Лицензия
Пример исходного кода распространяется на условиях соглашения Intel Sample Source License Agreement. Фрагменты этого документа распространяется на условиях ограниченной публичной лицензии корпорации Майкрософт.
Intel®Developer Zone offers tools and how-to information for cross-platform app development, platform and technology information, code samples, and peer expertise to help developers innovate and succeed. Join our communities for the Internet of Things, Android*, Intel® RealSense™ Technology and Windows* to download tools, access dev kits, share ideas with like-minded developers, and participate in hackathons, contests, roadshows, and local events.
Intel, the Intel logo, and Ultrabook are trademarks of Intel Corporation in the U.S. and/or other countries.
Copyright © 2014 Intel Corporation. All rights reserved.
*Other names and brands may be claimed as the property of others.