Поделиться через


Игровые технологии для приложений UWP

В этом руководстве вы узнаете о технологиях, доступных для разработки игр универсальная платформа Windows (UWP).

Преимущества Windows 10 для разработки игр

С введением UWP в Windows 10 ваши названия Windows 10 смогут охватывать все платформы Майкрософт. При бесплатной миграции из предыдущих версий Windows постоянно растет число клиентов Windows 10. Сочетание этих двух вещей означает, что ваши названия Windows 10 смогут достичь огромного количества клиентов через Microsoft Store.

Кроме того, Windows 10 предлагает множество новых функций, которые особенно полезны для игр:

  • Уменьшение разбиения по страницам памяти и уменьшение общего размера системы памяти
  • Улучшенное управление графическими памятью активно выделяет и защищает больше памяти для игры переднего плана.

Игры UWP с C++ и DirectX

Игры в режиме реального времени, требующие высокой производительности, должны использовать API DirectX. DirectX — это коллекция собственных API для создания игр и мультимедийных приложений, требующих высокой производительности, таких как трехмерные игры.

Среда разработки

Чтобы создать игры для UWP, необходимо настроить среду разработки, установив Visual Studio 2015 или более поздней версии. Рекомендуется установить последнюю версию Visual Studio, предоставив вам доступ к последним обновлениям разработки и безопасности. Visual Studio позволяет создавать приложения UWP и предоставляет средства для разработки игр:

  • Средства Visual Studio для программирования игр DX — Visual Studio предоставляет средства для создания, редактирования, предварительного просмотра и экспорта ресурсов изображений, моделей и шейдеров. Существуют также средства, которые можно использовать для преобразования ресурсов во время сборки и отладки графического кода DirectX. Дополнительные сведения см. в статье "Использование средств Visual Studio для программирования игр".
  • Функции графической диагностика Visual Studio — средства диагностики графики теперь доступны в Windows в качестве необязательной функции. Средства диагностики позволяют выполнять отладку графики, анализ графических кадров и отслеживать использование GPU в режиме реального времени. Дополнительные сведения см. в разделе "Использование среды выполнения DirectX" и функций диагностики графики Visual Studio.

Дополнительные сведения см. в статье "Подготовка универсальная платформа Windows и программирования DirectX".

Начало работы с шаблонами проектов игр DirectX

После настройки среды разработки можно использовать один из шаблонов проектов, связанных с DirectX, для создания игры UWP DirectX. Visual Studio 2015 имеет три шаблона для создания новых проектов DirectX UWP, приложений DirectX 11 (универсальная windows),DirectX 12 App (универсальная windows), а также приложения DirectX 11 и XAML (универсальная windows)). Дополнительные сведения см. в разделе "Создание проекта игры универсальная платформа Windows и DirectX" на основе шаблона.

API Windows 10

Windows 10 предоставляет обширную коллекцию API, которые полезны для разработки игр. Существуют API почти для всех аспектов игр, включая трехмерную графику, 2D-графику, звук, входные данные, текстовые ресурсы, пользовательский интерфейс и сети.

Существует множество API, связанных с разработкой игр, но не все игры должны использовать все API. Например, некоторые игры будут использовать только трехмерную графику и использовать только Direct3D, некоторые игры могут использовать только трехмерную графику и использовать только Direct2D, а другие игры могут использовать оба. На следующей схеме показаны api разработки игр, сгруппированные по типу функций.

Технологии игровой платформы

  • Трехмерная графика — Windows 10 поддерживает два набора трехмерных графических API, Direct3D 11 и Direct3D 12. Оба этих API позволяют создавать трехмерные и 2D-графики. Direct3D 11 и Direct3D 12 не используются вместе, но можно использовать с любым из API в группе трехмерных графических элементов и пользовательского интерфейса. Дополнительные сведения об использовании API графики в игре см. в разделе "Базовый трехмерный график" для игр DirectX.

    API Description
    Direct3D 12

    Direct3D 12 представляет следующую версию Direct3D, трехмерный графический API в центре DirectX. Эта версия Direct3D предназначена для более быстрой и эффективной, чем предыдущие версии Direct3D. Компромисс для повышения скорости Direct3D 12 заключается в том, что это более низкий уровень и требует, чтобы вы самостоятельно управляли вашими графическими ресурсами и имели более широкий опыт программирования графики для реализации повышенной скорости.

    Когда использовать

    Используйте Direct3D 12, если необходимо максимально повысить производительность игры, и ваша игра привязана к ЦП.

    Дополнительные сведения

    См. документацию по Direct3d 12.

    Direct3D 11

    Direct3D 11 — это предыдущая версия Direct3D и позволяет создавать трехмерные графики с помощью более высокого уровня аппаратной абстракции, чем D3D 12.

    Когда использовать

    Используйте Direct3D 11, если у вас есть код Direct3D 11, ваша игра не привязана к ЦП или вы хотите воспользоваться преимуществами, управляемыми ресурсами.

    Дополнительные сведения

    См. документацию по Direct3D 11.

     

  • 2D Графика и пользовательский интерфейс — API для 2D-графики, таких как текст и пользовательские интерфейсы. Все 2D-интерфейсы графики и API пользовательского интерфейса являются необязательными.

    API Description
    Direct2D

    Direct2D — это аппаратно-ускоренный, немедленный, 2-D графический API, обеспечивающий высокую производительность и высококачественную отрисовку для 2-D геометрии, растровых изображений и текста. API Direct2D основан на Direct3D и предназначен для взаимодействия с GDI, GDI+и Direct3D.

    Когда использовать

    Direct2D можно использовать вместо Direct3D для предоставления графики для чистых 2D-игр, таких как прокрутитель на стороне или доска игры, или можно использовать с Direct3D для упрощения создания трехмерной графики в трехмерной игре, например пользовательского интерфейса или экрана с головой.

    Дополнительные сведения

    См. документацию по Direct2D.

    DirectWrite

    DirectWrite предоставляет дополнительные возможности для работы с текстом и может использоваться с Direct3D или Direct2D для предоставления выходных данных текста для пользовательских интерфейсов или других областей, где требуется текст. DirectWrite поддерживает измерение, рисование и тестирование многоформатного текста. DirectWrite обрабатывает текст на всех поддерживаемых языках для глобальных и локализованных приложений. DirectWrite также предоставляет низкоуровневый API отрисовки глифов для разработчиков, которые хотят выполнить собственную разметку и обработку глифов Юникода.

    Когда использовать

    Дополнительные сведения

    См. документацию по DirectWrite.

    DirectComposition

    DirectComposition — это компонент Windows, который обеспечивает высокопроизводительную композицию растрового изображения с преобразованиями, эффектами и анимациями. Разработчики приложений могут использовать API DirectComposition для создания визуально привлекательных пользовательских интерфейсов, которые предоставляют расширенные и гибкие анимированные переходы с одного визуального элемента на другой.

    Когда использовать

    DirectComposition предназначен для упрощения процесса создания визуальных элементов и создания анимированных переходов. Если для игры требуются сложные пользовательские интерфейсы, можно использовать DirectComposition для упрощения создания и управления пользовательским интерфейсом.

    Дополнительные сведения

    См. документацию По DirectComposition.

     

  • Аудио — API, касающиеся воспроизведения звука и применения звуковых эффектов. Сведения об использовании API аудио в игре см. в разделе "Звук" для игр.

    API Description
    XAudio2

    XAudio2 — это низкоуровневый API аудио, который обеспечивает основу для обработки сигналов и смешивания. XAudio предназначен для очень адаптивных для игровых звуковых подсистем, сохраняя возможность создавать пользовательские звуковые эффекты и сложные цепочки звуковых эффектов и фильтров.

    Когда использовать

    Используйте XAudio2, когда игра должна играть звуки с минимальными затратами и задержкой.

    Дополнительные сведения

    См. документацию по XAudio2.

    Звуковые графы

    Для функциональных возможностей, которые можно реализовать с помощью XAudio2, вместо этого можно использовать API-интерфейсы среда выполнения Windows аудиографа. Сведения о выборе между двумя альтернативами см. в статье Выбор среда выполнения Windows AudioGraph или XAudio2.

    Когда использовать

    Используйте звуковые графы, когда игра должна воспроизводить звуки с минимальными затратами и задержками, но с значительно проще использовать API, чем XAudio2, и с возможностью поддержки C#.

    Дополнительные сведения

    См. документацию по графам аудио.

    Media Foundation

    Microsoft Media Foundation предназначен для воспроизведения файлов мультимедиа и потоков, как аудио, так и видео, но также может использоваться в играх, когда требуется более высокий уровень функциональности, чем XAudio2, и некоторые дополнительные издержки приемлемы.

    Когда использовать

    Медиа-фонд особенно полезен для кинематографических сцен или неинтерактивных компонентов вашей игры. Основа мультимедиа также полезна для декодирования аудиофайлов для воспроизведения с помощью XAudio2.

    Дополнительные сведения

    Ознакомьтесь с обзором Microsoft Media Foundation .

     

  • Входные данные — ИНТЕРФЕЙСы API, касающиеся ввода с клавиатуры, мыши, геймпада и других источников ввода пользователей.

    API Description
    XInput

    API XInput Game Controller позволяет приложениям получать входные данные от игровых контроллеров.

    Когда использовать

    Если игра должна поддерживать входные данные на геймпаде и у вас есть существующий код XInput, вы можете продолжать использовать XInput. XInput заменен Windows.Gaming.Input для UWP, и если вы пишете новый входной код, следует использовать Windows.Gaming.Input вместо XInput.

    Дополнительные сведения

    См. документацию по XInput.

    Windows.Gaming.Input

    API Windows.Gaming.Input заменяет XInput и предоставляет те же функции следующими преимуществами по сравнению с Xinput:

    • Снижение использования ресурсов
    • Низкая задержка вызовов API для получения входных данных
    • Возможность одновременно работать с более чем 4 геймпадами
    • Возможность доступа к дополнительным функциям геймпада, таким как триггер вибрационных двигателей
    • Возможность получать уведомления при подключении или отключении контроллеров через событие вместо опроса
    • Возможность атрибута входных данных конкретному пользователю (Windows.System.User)

    Когда использовать

    Если ваша игра должна поддерживать входные данные на геймпаде и не использует существующий код XInput или вам потребуется одна из преимуществ, перечисленных выше, следует использовать Windows.Gaming.Input.

    Дополнительные сведения

    См. документацию по Windows.Gaming.Input .

    Windows.UI.Core.CoreWindow

    Класс Windows.UI.Core.CoreWindow предоставляет события для отслеживания нажатий указателя и перемещения, а также нажатия клавиши вниз и нажатия событий вверх.

    Когда использовать

    Используйте события Windows.UI.Core.CoreWindows, когда необходимо отслеживать нажатия мыши или клавиши в игре.

    Дополнительные сведения

    Дополнительные сведения об использовании мыши или клавиатуры в игре см . в элементах управления move-look для игр .

     

  • Математические — API, касающиеся упрощения часто используемых математических операций.

    API Description
    DirectXMath

    API DirectXMath предоставляет типы и функции C++ с поддержкой SIMD для общих линейных алгебр и математических операций графики, распространенных для игр.

    Когда использовать

    Использование DirectXMath является необязательным и упрощает распространенные математические операции.

    Дополнительные сведения

    См. документацию по DirectXMath.

     

  • Сеть — ИНТЕРФЕЙСы API, касающиеся взаимодействия с другими компьютерами и устройствами через Интернет или частные сети.

    API Description
    Windows.Networking.Sockets

    Пространство имен Windows.Networking.Sockets предоставляет сокеты TCP и UDP, которые обеспечивают надежную или ненадежную сетевую связь.

    Когда использовать

    Используйте Windows.Networking.Sockets, если игра должна взаимодействовать с другими компьютерами или устройствами по сети.

    Дополнительные сведения

    См. статью " Работа с сетями в игре".

    Windows.Web.HTTP

    Пространство имен Windows.Web.HTTP обеспечивает надежное подключение к HTTP-серверам, которые можно использовать для доступа к веб-сайту.

    Когда использовать

    Используйте Windows.Web.HTTP, когда игре требуется доступ к веб-сайту для получения или хранения сведений.

    Дополнительные сведения

    См. статью " Работа с сетями в игре".

     

  • Служебные программы поддержки — библиотеки, которые создаются в API Windows 10.

    Библиотека Description
    Набор инструментов DirectX

    Набор инструментов DirectX (DirectXTK) — это коллекция вспомогательных классов для написания кода DirectX 11.x в C++.

    Когда использовать

    Используйте пакет инструментов DirectX, если вы являетесь разработчиком C++, который ищет современную замену устаревшей служебной программы D3DX или вы являетесь разработчиком XNA Game Studio, переходя на собственный C++.

    Дополнительные сведения

    См. страницу проекта пакета инструментов DirectX. https://github.com/Microsoft/DirectXTK

    Win2D

    Win2D — это простой api среда выполнения Windows для немедленной отрисовки графики в режиме 2D.

    Когда использовать

    Используйте Win2D, если вы разработчик C++ и хотите упростить использование оболочки WinRT для Direct2D и DirectWrite, или вы являетесь разработчиком C#, который хочет использовать Direct2D и DirectWrite.

    Дополнительные сведения

    См. страницу проекта Win2D. https://github.com/Microsoft/Win2D

Xbox службы Live

Программы разработчика Xbox позволяют любому разработчику интегрировать Xbox Live в игру UWP и публиковать в Xbox One и Windows 10. Интеграция социальных возможностей Xbox Live, таких как вход, присутствие, списки лидеров и многое другое в название, с минимальным временем разработки. Социальные функции Xbox Live предназначены для органического роста аудитории, распространяя осведомленность более чем на 55 миллионов активных игроков.

Если вы хотите получить доступ к еще более возможностям Xbox Live, выделенной маркетинговой поддержке и поддержке разработки, а также возможность быть представлены в основном магазине Xbox One, примените к программе ID@Xbox . Чтобы узнать, какие функции доступны для программы Xbox Live Creators и ID@Xbox программы, см. в таблице компонентов.

Дополнительные сведения см. в статье "Добавление Xbox Live в игру".

Альтернативные варианты написания игр с помощью DirectX и UWP

Игры UWP без DirectX

Более простые игры с минимальными требованиями к производительности, например карточные игры или настольные игры, могут быть написаны без DirectX и не обязательно должны быть написаны на C++. Такие игры могут использовать любой из языков, поддерживаемых UWP, таких как C#, Visual Basic, C++и HTML/JavaScript. Если производительность и интенсивное графическое изображение не являются обязательными для игры, ознакомьтесь с примером игры JavaScript и HTML5.

Игровые механизмы

В качестве альтернативы написанию собственного игрового двигателя с помощью API разработки игр Windows, многие высококачественные игровые механизмы, которые создаются на основе API разработки игр Windows, доступны для разработки игр на платформах Windows. При рассмотрении игрового двигателя или библиотеки у вас есть несколько вариантов:

  • Полный игровой механизм — полный игровой механизм инкапсулирует большинство или все API Windows 10, которые вы будете использовать при написании игрового двигателя с нуля, например графики, звука, ввода и сети. Полные игровые механизмы также могут предоставлять функции логики игры, такие как искусственный интеллект и определение пути.
  • Графический механизм — обработчики графики инкапсулируют API графики Windows 10, управляют графическими ресурсами и поддерживают различные форматы модели и мира.
  • Звуковой модуль — звуковые подсистемы инкапсулируют ИНТЕРФЕЙСы API звука Windows 10, управляют ресурсами звука и обеспечивают расширенную обработку звука и эффекты.
  • Сетевой модуль — сетевые подсистемы инкапсулируют сетевые API Windows 10 для добавления одноранговой или серверной поддержки многопользовательской поддержки в игру и могут включать расширенные сетевые функции для поддержки большого количества игроков.
  • Искусственный интеллект и механизм с определением пути — ИИ и механизмы pathfinding предоставляют платформу для управления поведением агентов в игре.
  • Специальные подсистемы назначения — для обработки практически любой связанной с игрой задачи существует множество дополнительных двигателей, например создание систем инвентаризации и деревьев диалоговых окон.

Отправка игры в Microsoft Store

После того как вы будете готовы опубликовать игру, необходимо создать учетную запись разработчика и отправить игру в Microsoft Store.

Сведения о отправке игры в Microsoft Store см. в разделе "Отправка и публикация игры".