- ¿Quién realizó una acción en el juego?
- ¿Quién obtiene el logro?
- ¿Quién está realizando la compra?
Diferencias en el modelo de usuario entre la ERA de XBOX One y el Microsoft Game Development Kit (GDK)
Ya sea al desarrollar un nuevo título con el Microsoft Game Development Kit (GDK) o al portar un título anterior de la ERA de XBOX One, implementar la administración de usuarios y dispositivos de entrada puede resultar confuso cuando se está acostumbrado al modelo de usuario de la ERA de XBOX One.- Los títulos que necesitan usuarios, por ejemplo cuando se necesitan guardados de juego o logros, deben establecer un usuario principal. Este usuario principal es una construcción exclusiva del título y no la proporciona el sistema.
- El título solo conoce los usuarios agregados mediante una llamada a XUserAddAsync. El título no recibe información sobre las acciones que realiza el sistema para los usuarios que no ha agregado.
- Cuando un dispositivo que anteriormente estaba asociado a un usuario del título se asocia a un usuario que el título desconoce, el título solo recibe información de un evento de asociación de dispositivo sin un nuevo usuario.
- Si un dispositivo que no estaba asociado a un usuario del título se asocia a otro usuario que tampoco se agregó con XUserAddAsync, el título no recibe información del evento de asociación.
- El selector de cuentas actúa de forma diferente según cómo se haya abierto (guía del sistema frente a XUserAddAsync).
El ejemplo UserManagement cubre el comportamiento de administración de usuarios y emparejamiento de dispositivos
de entrada en una amplia variedad de situaciones de juego. También gestiona los requisitos XR relacionados con los usuarios
y los dispositivos de entrada. Para obtener más información sobre los ejemplos, consulte
Ejemplos del Microsoft Game Development Kit.
Cómo identificar a un usuario especificado
Los juegos usan el identificador local para interactuar con los dispositivos de entrada. El identificador local es un identificador que permanece con el usuario durante toda su vida dentro de la sesión de juego. El identificador local se puede usar en todos los procesos que genere un juego o si el juego llama a XLaunchNewGame. No use el identificador local para identificar a un usuario entre sesiones de juego. Para obtener el identificador local de un usuario, use la función XUserGetLocalId.Cómo identificar un dispositivo de entrada en particular
Todos los dispositivos de juego, como mandos, sticks arcade y volantes, tienen un identificador de dispositivo único que se representa mediante una estructura APP_LOCAL_DEVICE_ID. Este identificador de dispositivo persiste entre varios inicios del juego o reinicios del sistema. El identificador de dispositivo es diferente entre dos juegos diferentes que se ejecutan en el mismo sistema. Si usaXInput en la consola, puede obtener el identificador de dispositivo mediante
XInputGetDeviceId.
Si usa GameInput, puede obtener el identificador de dispositivo del
miembro deviceId del objeto GameInputDeviceInfo que devuelve
una llamada a IGameInputDevice::GetDeviceInfo.
Modelo de usuario
Cuando un título necesita tener usuarios, por ejemplo cuando se necesitan guardados de juego o logros, el título es totalmente responsable de establecer un usuario principal. Este usuario principal debe mantenerse incluso cuando se permite que varios usuarios inicien sesión. El título también debe permitir que el usuario principal se cambie según sea necesario. Un método para hacerlo sería tener un aviso de cambio de usuario que abra un selector de cuentas con XUserAddAsync. El selector de cuentas enumera todos los usuarios que han iniciado sesión anteriormente en la consola, tiene un botón Add new para iniciar sesión con cuentas nuevas y permite iniciar sesión a usuarios invitados temporales. Se puede seleccionar cualquiera de estas cuentas de usuario, independientemente de la identidad real del usuario. El sistema admite usuarios que eligen jugar como otras personas de esta manera. Los títulos del Microsoft Game Development Kit (GDK) no tienen conocimiento completo de los usuarios del sistema. En su lugar, los usuarios solo se pueden agregar a un título mediante una llamada a XUserAddAsync. Los usuarios agregados de esta manera son los únicos usuarios con los que el título puede interactuar. El sistema no informará al título sobre las acciones realizadas para usuarios que el título no ha agregado. Como resultado, el título debe mantener su propia lista de usuarios. El selector de cuentas se puede abrir de dos maneras diferentes: desde la guía del sistema y mediante XUserAddAsync. Este selector se comporta de forma diferente en estas dos circunstancias:El conjunto de usuarios con sesión iniciada en un título es siempre un subconjunto de los usuarios
con sesión iniciada en el sistema. Un título no puede tener usuarios con sesión iniciada que el sistema no tenga con sesión iniciada.
Sin embargo, el sistema puede tener usuarios que el título desconoce.
Asociaciones de dispositivos de entrada
El Microsoft Game Development Kit (GDK) permite que los usuarios tengan cualquier número de dispositivos de entrada asociados. Esto puede ser un desafío al portar títulos más antiguos que quizás asuman una asignación 1:1 entre usuarios y dispositivos. Las asociaciones de dispositivos suelen realizarse mediante el selector de cuentas. El dispositivo de entrada que selecciona al usuario desde la interfaz de usuario queda asociado a ese usuario. Las asociaciones también pueden cambiar en otros casos, como cuando un usuario cierra sesión o cuando se usa XUserAddAsync sin interfaz de usuario mediante las opciones AddDefaultUserSilently y AddDefaultUserAllowingUI. El selector de cuentas también se comporta de forma diferente para las asociaciones según cómo se haya abierto el selector:
Si el usuario inició sesión automáticamente en el título sin un selector de cuentas mediante una llamada a
XUserAddAsync con una de las opciones AddDefaultUserSilently o
AddDefaultUserAllowingUI, los emparejamientos de dispositivos de entrada que tenía el sistema
se comunican al título.
Para recibir notificaciones de los cambios de asociación de dispositivos de usuario, puede registrar una devolución de llamada
XUserDeviceAssociationChangedCallback con el método
XUserRegisterForDeviceAssociationChanged. También puede
llamar a XUserFindForDevice para buscar una asociación de un dispositivo específico.
Dado que el título solo puede conocer los usuarios que se han agregado con
XUserAddAsync, las devoluciones de llamada y los métodos de asociación de dispositivos de usuario solo pueden devolver usuarios
que el título haya agregado previamente.
Coincidencia del usuario con un punto de conexión de audio predeterminado
Con frecuencia se usan auriculares o micrófonos con los juegos. A continuación se indican algunas preguntas importantes que debe hacerse.- ¿Tiene el usuario unos auriculares? Si es así, ¿qué auriculares es probable que esté usando? ¿Cuál es el punto de conexión de audio predeterminado para la representación de comunicaciones?
- ¿Tiene el usuario un micrófono asociado? ¿Cuál es el punto de conexión predeterminado para la captura de comunicaciones?
