Movimiento errático del mouse en juegos 3D sobre RDP con RemoteFX

11

Parece que el controlador de mouse predeterminado cuando se conecta con RDP no funciona bien con ciertas aplicaciones, como los juegos 3D.

Mi configuración:

  • Windows 2012 R2 con Hyper-V y tarjeta gráfica sólida
  • VM con Windows 8.1 Enterprise, RemoteFX y vGPU configurados
  • Conexión con RDP a través de un enlace rápido.

El rendimiento de video en 3D es excelente, gracias a RemoteFX / vGPU. Definitivamente permite que los juegos sean muy jugables sobre RDP (si no fuera por el mouse).

El problema es que el mouse reacciona bastante loco cuando está en el juego, pero completamente normal fuera del entorno 3D. (Por ejemplo, en los menús del juego, el mouse está bien).

Lo más cerca que pude ver, tanto de la experimentación como de muchas búsquedas en línea (muchas otras personas tenían el mismo problema, pero no se encontró ninguna solución), parece que el controlador del mouse transmite su ubicación relativa, en lugar de movimiento.
Esta "teoría" se correlaciona bien con algunas explicaciones de cómo el puntero del mouse salta dentro y fuera de la ventana RDP (por ejemplo, muévalo fuera de la ventana de la izquierda, de nuevo a la derecha, y se comporta perfectamente, es decir, el mouse basado en la ubicación y no basado en movimiento), y también con el comportamiento en el juego, por ejemplo, si muevo el mouse un montón hacia la izquierda, la vista salta locamente hacia la izquierda; si luego lo muevo un poco hacia la derecha, pero todavía no todo el camino de regreso al centro (es decir, el mouse todavía está a la izquierda del centro, pero se mueve hacia la derecha), continúa saltando hacia la izquierda. (Es decir, parece que todavía informa su ubicación "a la izquierda del centro" en lugar de "moverse a la derecha").

Espero encontrar CUALQUIER tipo de solución para esto. Ideas alguien?

Ávido
fuente
hm. ¿Experimentar con una plataforma de acceso remoto más centrada en el juego sería una opción? La transmisión de nvidia y la transmisión de vapor funcionan bien para mí (más de gigabit). Además, la posición relativa me recuerda al ratón de estilo tableta.
Journeyman Geek
Loco que años después, todavía no está arreglado. :(
Apache

Respuestas:

8

¡Guau, después de un montón de investigaciones e intentos fallidos, en realidad resolví esto!
Bueno, en su mayoría lo resolvió: es funcional, pero no sin inconvenientes.

Gracias a la respuesta de @ JourneymanGeek, y en particular a la publicación a la que se vinculó, pude seguir el ejemplo, y finalmente descubrí que entre las muchas interfaces implementadas por ActiveX Client de escritorio remoto, ¡una de ellas admite una propiedad RelativeMouseMode ! ¡Eso suena exactamente como lo que necesito, obligará al RDP a admitir movimientos relativos del mouse!

Sin embargo, noté en esta publicación de los foros de MSDN que "RelativeMouseMode no es compatible con los escenarios RDP RDSH / RDVH y no debería usarse", pero pensé en hacerlo, no es un entorno de producción real, y estaba bien usando un característica que no es compatible. También estaba mal documentado, pero parecía que tenía lo que necesitaba: esta pregunta en StackOverflow también me dio la esperanza de que fuera factible.

Entonces, me puse a trabajar implementando una aplicación simple de WinForms para alojar el control ActiveX, con las propiedades de interfaz "... inseguras" establecidas.


Excepto que, como resultado, por "no compatible", esta vez Microsoft quiso decir "no funciona".
Bueno, si lo hiciera, esta sería una pregunta SO, lamento guiarte (pero creo que es bueno tenerlo documentado en alguna parte ...)


Sin embargo, no todo fue en vano, durante toda esa excavación en el protocolo RDP, miré la redirección USB RemoteFX, y eso parecía un callejón sin salida, ya que los dispositivos de entrada básicos (como mouse, teclado, impresora) están explícitamente bloqueados desde el mecanismo de redireccionamiento USB:

Por defecto, los dispositivos en las categorías mencionadas son accesibles en la sesión remota mediante el uso de métodos de redireccionamiento de dispositivos de alto nivel. Estos métodos de redireccionamiento permiten un rendimiento óptimo y compatibilidad con versiones anteriores del dispositivo en la mayoría de los escenarios de usuario. En consecuencia, estos dispositivos no se ofrecen a través de la redirección USB RemoteFX.

Bueno, la respuesta final, como resultado, es que hay un mecanismo de anulación para este bloque.


Paso 1: Habilite la redirección USB RemoteFX
Aquí hay una buena elaboración: http://windowsitpro.com/virtualization/q-how-do-i-enable-remotefx-usb-redirection . Básicamente, en la máquina cliente, se utiliza ya sea política local o Directiva de grupo para establecer RemoteFX USB Device Redirectiona Enable, y permitir que los usuarios (o sólo los administradores) los derechos. Luego gpupdate /forcey reiniciar.

Paso 2: habilite la anulación de redirección para el mouse.
Como explica este artículo de MS KB , puede establecer una clave de registro para habilitar un dispositivo específico (o clase de dispositivo) para la redirección de USB.

De nuevo en el cliente, bajo

HKEY_LOCAL_MACHINE \ SOFTWARE \ Políticas \ Microsoft \ Windows NT \ Terminal Services \ Client \ UsbSelectDeviceByInterfaces

puede agregar un valor de cadena con el identificador del dispositivo.
Por ejemplo, bajo esta clave agregué el siguiente valor de cadena:

"GUID_DEVINTERFACE_MOUSE" = "{378DE44C-56EF-11D1-BC8C-00A0C91405DD}"

Dependiendo de su mouse, es posible que necesite un identificador diferente, por lo que YMMV. Pero comienza con eso.

Paso 3: Configure el cliente RDP para redirigir el mouse.
Como decía el artículo del paso 1:

Una vez que esté habilitado, acceda a la pestaña Recursos locales, haga clic en Más en Dispositivos y recursos locales, y verá una nueva configuración de Otros dispositivos remotos USB RemoteFX. Puede usar esta configuración para mapear a través de muchos tipos de hardware USB que no podría con la redirección USB RDP de vainilla, como se muestra a continuación.

Debajo de eso, debería ver una entrada para su mouse; puede ser un poco ambiguo como:

Redireccionamiento de otros dispositivos

Seleccione su mouse (u otra entrada apropiada).

¡Eso es! Ahora tiene un mouse de hardware conectado "directamente" a su VM, lo que permite que los juegos 3D extraigan los movimientos relativos del mouse directamente desde el controlador del mouse (-ish ..)


Sin embargo, como se dijo, hay algunos inconvenientes.

  1. El mouse se redirige a la VM RemoteFX'd; en otras palabras, la máquina cliente ya no tiene un mouse , al menos mientras la sesión de Escritorio remoto está abierta.
    Una posible solución sería conectar un segundo mouse y redirigir solo uno de ellos. (Todavía tengo que probar esto, pero debería funcionar bien).

  2. Por alguna razón, cuando se redirige, el mouse no muestra directamente un cursor en la sesión remota. Si bien todavía funciona, resulta un poco confuso apuntar a lo que apunta el mouse.
    Una solución simple es activar Mouse Trails, con la longitud bajada por completo. Rastros del ratón
    Esto hará que aparezca la ubicación del mouse, pero es un poco lenta.

  3. En general, aunque esta solución funciona bien, el mouse sigue siendo un poco lento y lento.
    Puede aumentar la velocidad del ratón, el juego con la precisión del puntero (a veces APAGÁNDOLO en realidad ayuda con esto), e incluso juguetear con la configuración del registro de aceleración ratón bajo HKEY_CURRENT_USER\Control Panel\Mouse( Mouse Speed, MouseThreshold1, y MouseThreshold2respectivamente).
    Esto ayudará a mitigar el problema, pero en realidad no hará que desaparezca.

En general, esto puede hacer que incluso los juegos en 3D sean muy jugables, para juegos casuales, desafortunadamente no son geniales para juegos de contracción. (Aunque si lo necesita, puede iniciar el metal directamente en ese VHD y tener ambas opciones ...)

Ávido
fuente
Bien hecho ... espero que alguien pueda poner esta información a trabajar en otro lugar también.
Digo reinstalar a Mónica el
Estoy usando Microsoft Remote Desktopuna MacBook Pro. ¿Hay algún mecanismo de anulación para Mac?
Brian
@Brian No tengo el más vago :-) ¿Funciona la aplicación cliente allí de la misma manera? Intente buscar la misma configuración ...
AviD
3

Aparentemente, remotefx solo hace modos de entrada 'absolutos' estilo tableta , que es la fuente de su problema. No puedo encontrar ninguna documentación sobre cómo cambiarlo.

Es posible que deba considerar un modo de acceso remoto alternativo: Steam funciona bien para mí (usando una GPU nvidia en el 'host' y un pequeño cuadro de sendero de bahía en el otro extremo). Nvidia tiene una opción para sus tarjetas, pero realmente no lo he intentado.

En resumen, no hay una manera obvia de arreglar esto con remotefx, a menos que el juego se pueda configurar para usar el modo de entrada que usa remotefx.

Journeyman Geek
fuente
2

Remote Desktop transmite movimientos absolutos del mouse, como una forma de reducir la cantidad de paquetes de movimiento del mouse que deben enviarse del cliente al servidor. Este arreglo funciona bien para la mayoría de las aplicaciones de Windows (correo electrónico, navegación web, etc.). Muchos juegos en 2D también están bien con esto. Sin embargo, los juegos de FPS generalmente necesitan movimientos relativos del mouse para controlar mouselook, que Remote Desktop desafortunadamente no transmite. La pérdida de datos relativos del movimiento del mouse es lo que hace que el juego gire la ventana de forma inesperada. Microsoft necesitaría modificar el Escritorio remoto para que este escenario de juego funcione. Sin embargo, usar el controlador XBOX para PC con redirección USB puede ser una alternativa para usted.

Controlador XBOX
fuente
Gracias, lo sabía, y también repito principalmente la respuesta de @ Journeyman ... pero el controlador es una buena solución (aunque no me ayudará ...)
AviD