Compartir a través de


Tecnologías de juegos para aplicaciones para UWP

En esta guía, obtendrá información sobre las tecnologías disponibles para desarrollar juegos para la Plataforma universal de Windows (UWP).

Ventajas de Windows 10 para el desarrollo de juegos

Con la introducción de UWP en Windows 10, los títulos de Windows 10 podrán abarcar todas las plataformas de Microsoft. Con la migración gratuita de versiones anteriores de Windows, hay un número cada vez mayor de clientes de Windows 10. La combinación de estas dos cosas significa que tus títulos de Windows 10 podrán llegar a un gran número de clientes a través de Microsoft Store.

Además, Windows 10 ofrece muchas características nuevas que son especialmente beneficiosas para los juegos:

  • Reducción de la paginación de memoria y reducción del tamaño general del sistema de memoria
  • La administración mejorada de memoria gráfica asigna y protege activamente más memoria para el juego en primer plano

Juegos para UWP con C++ y DirectX

Los juegos en tiempo real que requieren un alto rendimiento deben usar las API de DirectX. DirectX es una colección de API nativas para crear juegos y aplicaciones multimedia que requieren un alto rendimiento, como juegos 3D.

Entorno de desarrollo

Para crear juegos para UWP, tendrás que configurar el entorno de desarrollo instalando Visual Studio 2015 o posterior. Se recomienda instalar la versión más reciente de Visual Studio, lo que le proporciona acceso a las actualizaciones de desarrollo y seguridad más recientes. Visual Studio te permite crear aplicaciones para UWP y proporciona herramientas para el desarrollo de juegos:

  • Herramientas de Visual Studio para programación de juegos DX: Visual Studio proporciona herramientas para crear, editar, previsualizar y exportar recursos de imagen, modelo y sombreador. También hay herramientas que puede usar para convertir recursos en tiempo de compilación y depurar código gráfico de DirectX. Para obtener más información, ver Usar herramientas de Visual Studio para la programación de juegos.
  • Características de diagnóstico de gráficos de Visual Studio: las herramientas de diagnóstico de gráficos ahora están disponibles desde Windows como característica opcional. Las herramientas de diagnóstico permiten realizar la depuración de gráficos, el análisis de fotogramas gráficos y supervisar el uso de GPU en tiempo real. Para obtener más información, ver Uso del entorno de ejecución de DirectX y las características de diagnóstico de gráficos de Visual Studio.

Para obtener más información, ver Preparar la Plataforma universal de Windows y programación de DirectX.

Introducción a las plantillas de proyecto de juego de DirectX

Después de configurar el entorno de desarrollo, puedes usar una de las plantillas de proyecto relacionadas con DirectX para crear tu juego DirectX para UWP. Visual Studio 2015 tiene tres plantillas disponibles para crear nuevos proyectos DirectX para UWP, aplicación DirectX 11 (Windows universal), aplicación DirectX 12 (Windows universal), y Aplicación XAML (Windows universal) de DirectX 11 y aplicación XAML (Windows universal). Para obtener más información, ver Crear un proyecto de juego para la Plataforma universal de Windows y DirectX a partir de una plantilla.

API de Windows 10

Windows 10 proporciona una amplia colección de API que son útiles para el desarrollo de juegos. Hay API para casi todos los aspectos de los juegos, como gráficos 3D, gráficos 2D, audio, entrada, recursos de texto, interfaz de usuario y redes.

Hay muchas API relacionadas con el desarrollo de juegos, pero no todos los juegos necesitan usar todas las API. Por ejemplo, algunos juegos solo usarán gráficos 3D y solo harán uso de Direct3D, algunos juegos solo pueden usar gráficos 2D y solo hacer uso de Direct2D, y otros juegos pueden hacer uso de ambos. En el diagrama siguiente se muestran las API relacionadas con el desarrollo de juegos agrupadas por tipo de funcionalidad.

tecnologías de plataforma de juegos

  • Gráficos 3D: Windows 10 admite dos conjuntos de API de gráficos 3D, Direct3D 11 y Direct3D 12. Ambas API proporcionan la capacidad de crear gráficos 3D y 2D. Direct3D 11 y Direct3D 12 no se usan juntos, pero tampoco se pueden usar con cualquiera de las API del grupo gráficos y de interfaz de usuario 2D. Para obtener más información sobre el uso de las API de gráficos en tu juego, ver gráficos 3D básicos para juegos directX.

    API Descripción
    Direct3D 12

    Direct3D 12 presenta la próxima versión de Direct3D, la API de gráficos 3D en el corazón de DirectX. Esta versión de Direct3D está diseñada para ser más rápida y eficaz que las versiones anteriores de Direct3D. El inconveniente de la mayor velocidad de Direct3D 12 es que es más bajo y requiere que administres los recursos gráficos tu mismo y tengas una experiencia de programación de gráficos más amplia para darte cuenta del aumento de la velocidad.

    Cuándo usarlo

    Usa Direct3D 12 cuando necesites maximizar el rendimiento del juego y tu juego está enlazado a la CPU.

    Para más información

    Ver la documentación de Direct3d 12.

    Direct3D 11

    Direct3D 11 es la versión anterior de Direct3D y permite crear gráficos 3D con un nivel superior de abstracción de hardware que D3D 12.

    Cuándo usarlo

    Usa Direct3D 11 si tienes código direct3D 11 existente, tu juego no está enlazado a la CPU o quieres la ventaja de tener recursos administrados para ti.

    Para más información

    Ver la documentación de Direct3D 11.

     

  • Gráficos y interfaz de usuario 2D: API relativas a gráficos 2D, como texto e interfaces de usuario. Todas las API de interfaz de usuario y gráficos 2D son opcionales.

    API Descripción
    Direct2D

    Direct2D es una API de gráficos 2D acelerada por hardware, en modo inmediato, que proporciona un alto rendimiento y una representación de alta calidad para geometría 2D, mapas de bits y texto. La API de Direct2D se basa en Direct3D y está diseñada para interoperar bien con GDI, GDI+y Direct3D.

    Cuándo usarlo

    Direct2D se puede usar en lugar de Direct3D para proporcionar gráficos para juegos 2D puros, como un juego de desplazamiento lateral o de mesa, o se puede usar con Direct3D para simplificar la creación de gráficos 2D en un juego 3D, como una interfaz de usuario o una pantalla de encabezado.

    Para más información

    Ver la documentación de Direct2D.

    DirectWrite

    DirectWrite proporciona funcionalidades adicionales para trabajar con texto y se puede usar con Direct3D o Direct2D para proporcionar salida de texto para interfaces de usuario u otras áreas en las que se requiera texto. DirectWrite admite la medición, el dibujo y las pruebas de posicionamiento de texto de varios formatos. DirectWrite controla el texto en todos los idiomas admitidos para aplicaciones globales y localizadas. DirectWrite también proporciona una API de representación de glifos de bajo nivel para desarrolladores que desean realizar su propio diseño y procesamiento de glifos Unicode a glifo.

    Cuándo usarlo

    Para más información

    Ver la documentación de DirectWrite.

    DirectComposition

    DirectComposition es un componente de Windows que permite la composición de mapa de bits de alto rendimiento con transformaciones, efectos y animaciones. Los desarrolladores de aplicaciones pueden usar DirectComposition API para crear interfaces de usuario atractivas visualmente que cuentan con transiciones animadas enriquecidas y fluidas de un objeto visual a otro.

    Cuándo usarlo

    DirectComposition está diseñado para simplificar el proceso de redacción de objetos visuales y crear transiciones animadas. Si tu juego requiere interfaces de usuario complejas, puedes usar DirectComposition para simplificar la creación y administración de la interfaz de usuario.

    Para más información

    Ver la documentación de DirectComposition.

     

  • Audio: API relacionadas con la reproducción de audio y la aplicación de efectos de audio. Para obtener información sobre el uso de las API de audio en el juego, ver Audio para juegos.

    API Descripción
    XAudio2

    XAudio2 es una API de audio de bajo nivel que proporciona una base para el procesamiento y la mezcla de señales. XAudio está diseñado para ser muy dinámico para los motores de audio del juego, a la vez que mantiene la capacidad de crear efectos de audio personalizados y cadenas complejas de efectos de audio y filtros.

    Cuándo usarlo

    Usa XAudio2 cuando tu juego necesite jugar sonidos con una sobrecarga y un retraso mínimos.

    Para más información

    Ver la documentación de XAudio2.

    Gráficos de audio

    Para la funcionalidad que puedes implementar con XAudio2, tienes la alternativa de usar las API de grafos de audio de Windows Runtime en su lugar. Para ayudarte a decidir entre las dos alternativas, ver Elegir AudioGraph de Windows Runtime o XAudio2.

    Cuándo usarlo

    Usa gráficos de audio cuando tu juego necesite reproducir sonidos con una sobrecarga y un retraso mínimos, pero con una API significativamente más fácil de usar que XAudio2 y con la opción de compatibilidad con C#.

    Para más información

    Ver la documentación de gráficos de audio.

    Media Foundation

    Microsoft Media Foundation está diseñado para la reproducción de archivos multimedia y secuencias, tanto audio como vídeo, pero también se puede usar en juegos cuando se requiere una funcionalidad de nivel superior a XAudio2 y se admite cierta sobrecarga adicional.

    Cuándo usarlo

    La base multimedia es especialmente útil para escenas cinematográficas o componentes no interactivos de tu juego. Media Foundation también es útil para descodificar archivos de audio para la reproducción mediante XAudio2.

    Para más información

    Ver la introducción a Microsoft Media Foundation.

     

  • Entrada: API relativas a la entrada desde el teclado, el mouse, el controlador para juegos y otros orígenes de entrada del usuario.

    API Descripción
    XInput

    La API de controlador de juegos XInput permite a las aplicaciones recibir la entrada de los controladores de juego.

    Cuándo usarlo

    Si tu juego necesita admitir la entrada del controlador para juegos y tienes código XInput existente, puedes seguir usando XInput. XInput se ha reemplazado por Windows.Gaming.Input para UWP y, si estás escribiendo código de entrada nuevo, debes usar Windows.Gaming.Input en lugar de XInput.

    Para más información

    Ver la documentación de XInput.

    Windows.Gaming.Input

    La API Windows.Gaming.Input reemplaza a XInput y proporciona la misma funcionalidad con las siguientes ventajas sobre Xinput:

    • Menor uso de recursos
    • Menor latencia de llamadas API para recuperar la entrada
    • La capacidad de trabajar con más de 4 controladores para juegos a la vez
    • La capacidad de acceder a características adicionales del controlador para juegos, como los motores de vibración del desencadenador
    • La capacidad de recibir notificaciones cuando los controladores se conectan o desconectan a través de eventos en lugar de sondear
    • La capacidad de atribuir la entrada a un usuario específico (Windows.System.User)

    Cuándo usarlo

    Si tu juego necesita admitir la entrada del controlador para juegos y no usa código XInput existente o necesitas una de las ventajas enumeradas anteriormente, debes usar Windows.Gaming.Input.

    Para más información

    Ver la documentación de Windows.Gaming.Input.

    Windows.UI.Core.CoreWindow

    La clase Windows.UI.Core.CoreWindow proporciona eventos para realizar el seguimiento de las presiones y el movimiento del puntero, así como para bajar las teclas y para subir eventos.

    Cuándo usarlo

    Usa eventos Windows.UI.Core.CoreWindows cuando necesites realizar un seguimiento del mouse o pulsaciones de tecla en tu juego.

    Para más información

    Ver Controles de movimiento y búsqueda para juegos para obtener más información sobre el uso del mouse o el teclado en tu juego.

     

  • Matemáticas: API relativas a la simplificación de las operaciones matemáticas usadas habitualmente.

    API Descripción
    DirectXMath

    La API DirectXMath proporciona tipos y funciones de C++ fáciles de SIMD para operaciones matemáticas de álgebra lineales y gráficos comunes a los juegos.

    Cuándo usarlo

    El uso de DirectXMath es opcional y simplifica las operaciones matemáticas comunes.

    Para más información

    Ver la documentación de DirectXMath.

     

  • Redes: API relativas a la comunicación con otros equipos y dispositivos a través de Internet o redes privadas.

    API Descripción
    Windows.Networking.Sockets

    El espacio de nombres Windows.Networking.Sockets proporciona sockets TCP y UDP que permiten la comunicación de red confiable o no confiable.

    Cuándo usarlo

    Usa Windows.Networking.Sockets si tu juego necesita comunicarse con otros equipos o dispositivos a través de la red.

    Para más información

    Ver Trabajar con redes en tu juego.

    Windows.Web.HTTP

    El espacio de nombres Windows.Web.HTTP proporciona una conexión confiable a los servidores HTTP que se pueden usar para acceder a un sitio web.

    Cuándo usarlo

    Usa Windows.Web.HTTP cuando tu juego necesite acceder a un sitio web para recuperar o almacenar información.

    Para más información

    Ver Trabajar con redes en tu juego.

     

  • Compatibilidad con utilidades: Bibliotecas que se basan en las API de Windows 10.

    Biblioteca Descripción
    Kit de herramientas de DirectX

    El Kit de herramientas de DirectX (DirectXTK) es una colección de clases auxiliares para escribir código de DirectX 11.x en C++.

    Cuándo usarlo

    Usa el Kit de herramientas de DirectX si eres un desarrollador de C++ que busca un reemplazo moderno al código de utilidad D3DX heredado o eres un desarrollador de XNA Game Studio que realiza la transición a C++nativo.

    Para más información

    Ver la página del proyecto del Kit de herramientas de DirectX, https://github.com/Microsoft/DirectXTK.

    Win2D

    Win2D es una API de Windows Runtime fácil de usar para la representación de gráficos 2D en modo inmediato.

    Cuándo usarlo

    Usa Win2D si eres desarrollador de C++ y quieres un contenedor de WinRT para Direct2D y DirectWrite, o eres un desarrollador de C# que quieres usar Direct2D y DirectWrite.

    Para más información

    Ver la página del proyecto Win2D, https://github.com/Microsoft/Win2D.

Servicios de Xbox Live

Los programas para desarrolladores de Xbox permiten que cualquier desarrollador integre Xbox Live en su juego para UWP y publique en Xbox One y Windows 10. Integra experiencias sociales de Xbox Live, como el inicio de sesión, la presencia, las tablas de clasificación y mucho más en el título, con un tiempo de desarrollo mínimo. Las características sociales de Xbox Live están diseñadas para aumentar de forma orgánica tu audiencia, extendiendo la conciencia a más de 55 millones de jugadores activos.

Si quieres acceder a aún más funcionalidades de Xbox Live, soporte técnico de marketing y desarrollo dedicados, y la posibilidad de que aparezcas en la tienda principal de Xbox One, aplica al programa ID@Xbox. Para ver qué características están disponibles para el programa Creadores de Xbox Live y ID@Xbox, ver la tabla de características.

Para obtener más información, ve a Agregar Xbox Live a tu juego.

Alternativas para escribir juegos con DirectX y UWP

Juegos para UWP sin DirectX

Los juegos más sencillos con requisitos mínimos de rendimiento, como juegos de cartas o juegos de mesa, se pueden escribir sin DirectX y no necesariamente deben escribirse en C++. Este tipo de juegos puede usar cualquiera de los lenguajes compatibles con UWP, como C#, Visual Basic, C++y HTML/JavaScript. Si el rendimiento y los gráficos intensivos no son un requisito para el juego, consulta ejemplo de juego táctil JavaScript y HTML5 como ejemplo.

Motores de juegos

Como alternativa a escribir tu propio motor de juegos mediante las API de desarrollo de juegos de Windows, muchos motores de juegos de alta calidad que se basan en las API de desarrollo de juegos de Windows están disponibles para desarrollar juegos en plataformas Windows. Al considerar un motor de juegos o una biblioteca, tienes varias opciones:

  • Motor de juegos completo: Un motor de juegos completo encapsula la mayoría o todas las API de Windows 10 que usarías al escribir un motor de juegos desde cero, como gráficos, audio, entrada y redes. Los motores de juegos completos también pueden proporcionar funcionalidad de lógica del juego, como la inteligencia artificial y el trazado de rutas.
  • Motor de gráficos: Los motores de gráficos encapsulan las API de gráficos de Windows 10, administran recursos gráficos y admiten una variedad de formatos de modelo y mundo.
  • Motor de audio: Los motores de audio encapsulan las API de audio de Windows 10, administran los recursos de audio y proporcionan un procesamiento y efectos avanzados de audio.
  • Motor de red: Los motores de red encapsulan las API de red de Windows 10 para agregar compatibilidad multijugador punto a punto o basado en servidor al juego, y pueden incluir funcionalidades avanzadas de red para admitir un gran número de jugadores.
  • Motor de inteligencia artificial y trazado: Los motores de inteligencia artificial y de trazado proporcionan un marco para controlar el comportamiento de los agentes en el juego.
  • Motores de propósito especial: Existe una variedad de motores adicionales para controlar casi cualquier tarea relacionada con el desarrollo de juegos, como crear sistemas de inventario y árboles de diálogo.

Envío de un juego a Microsoft Store

Una vez que estés listo para publicar tu juego, deberás crear una cuenta de desarrollador y enviar tu juego a Microsoft Store.

Para obtener información sobre cómo enviar tu juego a Microsoft Store, ver Enviar y publicar tu juego.