Elegir la mejor resolución
Los jugadores transmiten juegos a una gran variedad de dispositivos, incluidos teléfonos, tabletas, PC y televisores. Estos abarcan desde pantallas de baja a alta resolución, y desde monitores ultrapanorámicos 32:9 hasta tabletas cuadradas y dispositivos verticales en orientación retrato. Los jugadores prefieren que el juego llene toda la pantalla o ventana, sin bandas negras (letterbox). Cuando es posible, la imagen también es más nítida si coincide con la pantalla del cliente sin escalado. Por último, la resolución ideal para un cliente puede depender del hardware y de las condiciones de la red. La API XGameStreamingGetDisplayDetails tiene en cuenta todos esos factores y devuelve un ancho y un alto «preferidos». En condiciones ideales, la resolución «preferida» es la resolución y la relación de aspecto de la pantalla del cliente, pero si esa resolución no es posible, será la resolución y la relación de aspecto más cercanas que se ajusten a las restricciones de la transmisión y a los parámetros pasados aXGameStreamingGetDisplayDetails.
Si tu juego puede renderizar cualquier resolución, simplemente llamar a XGameStreamingSetResolution y establecer tu resolución de renderizado en la resolución preferida obtendrá los mejores resultados.
Muchos juegos están diseñados para un conjunto fijo de resoluciones. Por ejemplo, tu juego puede tener una versión para PC que admita varias resoluciones, aunque normalmente se reduzcan a una en XBOX. En ese caso, Microsoft recomienda usar la resolución preferida como guía para elegir la resolución más cercana que admita tu juego. Una buena manera de hacerlo es encontrar la coincidencia más cercana a la relación de aspecto preferida para que el juego llene la mayor parte posible de la pantalla del cliente. Ten en cuenta que la estructura XGameStreamingDisplayDetails incluye los límites de las resoluciones que puedes establecer. También incluye marcas que indican si la transmisión actual admite resoluciones no estándar y escalado de presentación.
Si elegir la resolución automáticamente no es viable, pero la versión para PC de tu juego incluye un selector de resolución, también puedes permitir que los jugadores elijan resoluciones siempre que dichas resoluciones se ajusten a las restricciones de XGameStreamingDisplayDetails.
Escuchar actualizaciones
Durante una transmisión, la mejor resolución puede cambiar por varias razones:- En los servidores en la nube, los juegos se inician antes de que se conecten los clientes de transmisión, por lo que la resolución preferida no está disponible de inmediato.
- Un jugador con un teléfono o una tableta puede girar el dispositivo entre orientación vertical y horizontal.
- Un jugador en PC puede cambiar el tamaño de la ventana del cliente de transmisión o alternar la pantalla completa.
- Las condiciones de la red pueden cambiar y requerir una resolución de transmisión diferente.
XGameStreamingClientProperty::DisplayDetails) para detectar cuándo cambia la resolución preferida del cliente. Cuando se produzcan esos eventos, cambia la resolución para que coincida con los nuevos XGameStreamingDisplayDetails.
Como mínimo, es muy importante controlar el evento de conexión inicial del cliente para que los jugadores en servidores en la nube obtengan una resolución coincidente.
Limitaciones para los cambios
El cambio de la resolución de la transmisión es visible para los jugadores como un breve parpadeo (parecido a lo que ocurre al cambiar la resolución de un juego en un PC). Para minimizar la interrupción, Microsoft recomienda cambiar la resolución solo en respuesta a los eventos anteriores. Aparte de la experiencia del jugador, no se recomienda cambiar la resolución de la transmisión más de una vez cada 200 ms, ya que es posible que el codificador de vídeo no tenga tiempo de igualar la resolución del juego, lo que provocaría un breve estiramiento visual. Los eventos anteriores no se activarán más de una vez cada 200 ms.Establecer parámetros para XGameStreamingGetDisplayDetails
La APIXGameStreamingGetDisplayDetails incluye parámetros para las restricciones de tu juego. Si se establecen correctamente, la API calculará la mejor resolución que se ajuste a esas restricciones. Los parámetros son:
maxSupportedPixels: es el recuento total de píxeles que tu juego no debe superar. Una buena regla general para mantener el rendimiento es multiplicar el ancho y el alto que tu juego renderizaría normalmente en el tipo de dispositivo del sistema actual. Por ejemplo, si tu juego renderizaría normalmente a 1440p en XBOX Series S, en ese tipo de dispositivo pasa maxSupportedPixels=2560*1440=3686400.
widestSupportedAspectRatio y tallestSupportedAspectRatio: son los límites de relación de aspecto de tu juego. Establecerlos en las relaciones de aspecto más ancha y más alta que hayas probado garantizará que tu juego se vea bien en todos los dispositivos.
Entrada táctil y resolución personalizada
Cambiar la resolución medianteXGameStreamingSetResolution cambia el espacio de coordenadas de la entrada táctil para que coincida con la nueva relación de aspecto. GameInputTouchState incluye coordenadas táctiles en un intervalo normalizado de 0 a 1. Al cambiar la resolución, ese intervalo permanece igual, pero ahora representa tu nueva resolución. Por ejemplo, sin resolución personalizada en un juego a 1920x1080, un toque en (0.5, 0.5) representa (960, 540), pero llamar a XGameStreamingSetResolution para cambiar a 1600x800 significa que un toque en (0.5, 0.5) representa (800, 400). Ten en cuenta que los valores de resolución y relación de aspecto de GameInputTouchSensorInfo no se actualizan cuando cambias la resolución; usa los valores que pasaste a XGameStreamingSetResolution, no GameInputTouchSensorInfo, para calcular las ubicaciones de los toques.
Área segura
Muchos dispositivos tienen pantallas parcialmente obstruidas, bloqueadas por muescas (notches), esquinas redondeadas y barras de deslizamiento superpuestas.XGameStreamingDisplayDetails incluye un rectángulo safeArea que describe el rectángulo sin obstrucciones en el centro de la pantalla. Para garantizar que el contenido importante sea visible, trata este rectángulo como los límites del espacio seguro del título. Las áreas fuera de él pueden ser visibles y deben seguir conteniendo contenido, pero no elementos importantes de la interfaz de usuario.
