Movimento irregular do mouse em jogos 3D sobre RDP com RemoteFX

11

Parece que o driver do mouse padrão ao se conectar ao RDP não funciona bem com certos aplicativos, como jogos em 3D.

Minha configuração:

  • Windows 2012 R2 com Hyper-V e placa gráfica forte
  • VM com Windows 8.1 Enterprise, RemoteFX e vGPU configurados
  • Conectando-se ao RDP através do link rápido.

O desempenho de vídeo 3D é excelente, graças ao RemoteFX / vGPU. Definitivamente, permite que os jogos sejam muito jogáveis ​​por RDP (se não fosse o mouse).

O problema é que o mouse reage muito loucamente quando está em jogo - mas completamente normal fora do ambiente 3D. (Por exemplo, nos menus do jogo, o mouse está ótimo).

O mais próximo que pude dizer, tanto pela experimentação quanto pela busca on-line (muitas outras pessoas tiveram o mesmo problema, mas nenhuma solução foi encontrada) - parece que o driver do mouse transmite sua localização relativa, em vez de movimento.
Essa "teoria" se correlaciona bem com algumas explicações de como o ponteiro do mouse entra e sai da janela do RDP (por exemplo, mova-o para fora da janela da esquerda, volte para a direita - e se comporta perfeitamente, por exemplo, mouse baseado em localização e não baseado em movimento) e também com o comportamento no jogo - por exemplo, se eu mover o mouse um bocado para a esquerda, a exibição saltará loucamente para a esquerda; se eu o mover um pouco para a direita, mas ainda não todo o caminho de volta ao centro (ou seja, o mouse ainda estiver à esquerda do centro, mas se mover para a direita), ele continuará pulando para a esquerda. (Ou seja, parece que ainda está relatando sua localização "esquerda do centro" em vez de "mover para a direita").

Espero encontrar QUALQUER tipo de solução para isso. Idéias alguém?

Ávido
fonte
hm. Seria uma opção experimentar uma plataforma de acesso remoto mais centrada em jogos? O streaming da nvidia e o streaming a vapor funcionam bem para mim (acima de gigabit). A posição relativa também me lembra o estilo do tablet.
Journeyman Geek
Louco que anos depois, ainda não está consertado. :(
Apache

Respostas:

8

Uau, depois de uma tonelada de pesquisas e tentativas fracassadas, eu realmente resolvi isso!
Bem, principalmente resolvido - é funcional, mas não sem desvantagens.

Graças à resposta de @ JourneymanGeek, e em particular à postagem à qual ele se vinculou, eu pude seguir o exemplo e, finalmente, descobri que entre as muitas interfaces implementadas pelo Remote Desktop Client ActiveX, uma delas suporta uma propriedade RelativeMouseMode ! Parece exatamente o que eu preciso, forçará o RDP a suportar movimentos relativos do mouse!

No entanto, observei nesta postagem dos fóruns do MSDN que "RelativeMouseMode não é suportado em cenários RDP RDSH / RDVH e não deve ser usado", mas achei que seria um problema, não é um ambiente de produção real e eu estava bem usando um recurso que não é suportado. Também estava mal documentado, mas parecia que eu tinha o que precisava - essa pergunta no StackOverflow também me deu esperança de que fosse possível.

Portanto, comecei a trabalhar na implementação de um aplicativo WinForms simples para hospedar o controle ActiveX, com o conjunto de propriedades da interface "... Inseguro".


Só que, como se vê, por "não suportado", desta vez a Microsoft quis dizer "não funciona".
Bem, se isso acontecesse, isso seria uma pergunta SO, desculpe por levá-lo adiante (mas acho que é bom tê-lo documentado em algum lugar ...)


No entanto, nem tudo foi por nada, durante toda a escavação no protocolo RDP, observei o redirecionamento USB do RemoteFX - e parecia um beco sem saída, pois os dispositivos básicos de entrada (como mouse, teclado, impressora) são explicitamente bloqueados do mecanismo de redirecionamento USB:

Por padrão, os dispositivos nas categorias mencionadas acima estão acessíveis na sessão remota usando métodos de redirecionamento de dispositivo de alto nível. Esses métodos de redirecionamento permitem desempenho ideal e compatibilidade com versões anteriores do dispositivo na maioria dos cenários de usuário. Conseqüentemente, esses dispositivos não são oferecidos pelo redirecionamento USB do RemoteFX.

Bem, a resposta final, como se vê, é que existe um mecanismo de substituição neste bloco.


Etapa 1: Habilitar o redirecionamento USB do RemoteFX
Há uma boa elaboração aqui: http://windowsitpro.com/virtualization/q-how-do-i-enenable-remotefx-usb-redirection . Basicamente, na máquina do cliente, você pode usar a Política de Local ou Política de grupo para definir RemoteFX USB Device Redirectiona Enable, e permitir que os usuários (ou apenas administradores) os direitos. Então gpupdate /forcee reinicie.

Etapa 2: ative a substituição do redirecionamento para o mouse.
Como este artigo da MS KB explica , você pode definir uma chave do Registro para habilitar um dispositivo específico (ou classe de dispositivo) para o redirecionamento USB.

Novamente no cliente, sob

HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows NT \ Serviços de Terminal \ Client \ UsbSelectDeviceByInterfaces

você pode adicionar um valor de sequência com o identificador do dispositivo.
Por exemplo, nessa chave, adicionei o seguinte valor de sequência:

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

Dependendo do mouse, você pode precisar de um identificador diferente, portanto YMMV. Mas comece com isso.

Etapa 3: defina o cliente RDP para redirecionar o mouse.
Como o artigo da etapa 1 afirmou:

Depois de ativado, acesse a guia Recursos locais, clique em Mais em Dispositivos e recursos locais e você verá uma nova configuração Outros dispositivos compatíveis com RemoteFX USB. Você pode usar essa configuração para mapear vários tipos de hardware USB que você não poderia com o redirecionamento USB RDP vanilla, como mostrado abaixo.

Abaixo disso, você deve ver uma entrada para o mouse; pode ser um pouco ambíguo, como:

Redirecionamento de outros dispositivos

Selecione o mouse (ou outra entrada apropriada).

É isso aí! Agora você tem um mouse de hardware conectado "diretamente" à sua VM, o que permite que os jogos em 3D retirem os movimentos relativos do mouse diretamente do driver do mouse (-ish ..)


No entanto, como afirmado, existem algumas desvantagens.

  1. O mouse é redirecionado para a VM RemoteFX'd - em outras palavras, a máquina cliente não possui mais um mouse , pelo menos enquanto a sessão da Área de Trabalho Remota estiver aberta.
    Uma solução possível seria conectar um segundo mouse e redirecionar apenas um deles. (Ainda tenho que tentar isso, mas deve funcionar muito bem).

  2. Por algum motivo, quando redirecionado, o mouse não mostra diretamente um cursor na sessão remota. Enquanto ainda funciona, torna um pouco confuso apontar para o que o mouse está apontando.
    Uma solução simples é ativar o Mouse Trails, com o comprimento abaixado até o fim. Trilhas para mouse
    Isso fará com que o local do mouse seja exibido, mas é um pouco lento.

  3. No geral, embora essa solução funcione bem, o mouse ainda é um pouco lento e lento.
    Você pode transformar-se a velocidade do mouse, jogo com precisão do ponteiro (às vezes transformando-OFF vai realmente ajuda com isso), e até mesmo mexer com as configurações do registro aceleração do mouse em HKEY_CURRENT_USER\Control Panel\Mouse( Mouse Speed, MouseThreshold1e, MouseThreshold2respectivamente).
    Isso ajudará a mitigar o problema, mas não fará com que ele desapareça.

Portanto, no geral, isso pode tornar os jogos em 3D muito jogáveis ​​- para jogos casuais, infelizmente não é bom para jogos de twitch. (Porém, se você precisar, basta inicializar o metal diretamente nesse VHD e ter as duas opções ....)

Ávido
fonte
Bem feito ... espero que alguém possa colocar essas informações para trabalhar em outros lugares também.
Eu digo Restabelecer Monica
Estou usando Microsoft Remote Desktopum MacBook Pro. Existe algum mecanismo de substituição para Mac?
Brian
@ Brian Eu não sou o mais nebuloso :-) O aplicativo cliente lá funciona da mesma maneira? Tente procurar por essas mesmas configurações ...
Avid
3

Aparentemente, o remotefx usa apenas modos de entrada "absolutos" no estilo tablet , que é a fonte do seu problema. Não consigo encontrar nenhuma documentação sobre como alterá-lo.

Você pode precisar considerar um modo de acesso remoto alternativo - o steam funciona bem para mim (usando uma GPU nvidia no 'host' e uma pequena caixa de trilha na baía do outro lado). A Nvidia tem uma opção para seus cartões, mas eu realmente não tentei isso.

Em resumo, não há uma maneira óbvia de corrigir isso com o remotefx, a menos que o jogo possa ser configurado para usar o modo de entrada que o remotefx está usando.

Journeyman Geek
fonte
2

A Área de Trabalho Remota transmite movimentos absolutos do mouse, como uma maneira de reduzir o número de pacotes de movimento do mouse que precisam ser enviados do cliente para o servidor. Esse arranjo funciona bem para a maioria dos aplicativos do Windows (email, navegação na web etc.). Muitos jogos 2D também estão bem com isso. No entanto, os jogos de FPS geralmente precisam de movimentos relativos do mouse para controlar a aparência do mouse, que a Área de Trabalho Remota infelizmente não transmite. A perda de dados relativos ao movimento do mouse é o que faz com que o jogo gire a janela de visualização inesperadamente. A Microsoft precisaria modificar a Área de Trabalho Remota para fazer esse cenário de jogos funcionar. No entanto, o uso do controlador XBOX para PC com redirecionamento USB pode ser uma alternativa para você.

Controlador XBOX
fonte
Obrigado, eu meio que sabia, e também na maior parte repetindo @ resposta de Journeyman ... mas o controlador é uma boa solução (embora não vai ser me ajudando ...)
Avid