Неустойчивое движение мыши в 3D-играх через RDP с RemoteFX

11

Похоже, что драйвер мыши по умолчанию при соединении с RDP плохо работает с некоторыми приложениями, такими как 3D-игры.

Моя настройка:

  • Windows 2012 R2 с Hyper-V и мощной видеокартой
  • ВМ с настроенной Windows 8.1 Enterprise, RemoteFX и vGPU
  • Соединение с RDP по быстрой ссылке.

Производительность 3D видео отличная, благодаря RemoteFX / vGPU. Это определенно позволяет играм быть очень играбельными по RDP (если бы не мышь).

Проблема в том, что в игре мышь реагирует довольно безумно - но совершенно нормально вне 3D-среды. (Например, в игровых меню мышь просто отлично).

Насколько можно судить по экспериментам и многим поискам в Интернете (у многих других людей была такая же проблема, но решения не найдено) - кажется, что драйвер мыши передает свое относительное местоположение вместо движения.
Эта «теория» хорошо коррелирует с некоторыми объяснениями того, как указатель мыши прыгает в окно RDP и выходит из него (например, перемещает его из окна слева, обратно справа - и он ведет себя отлично, то есть мышь на основе местоположения и не на основе движений), а также с поведением в игре - например, если я перемещаю мышь влево, изображение безумно переходит влево; если я затем переместлю его немного вправо, но все еще не полностью назад к центру (то есть мышь все еще находится слева от центра, но перемещается вправо), он продолжает прыгать влево. (Т.е. кажется, что он все еще сообщает о своем местоположении "слева от центра" вместо "перемещения вправо").

Я надеюсь найти ЛЮБОЕ решение для этого. Идеи кого-нибудь?

алчный
источник
гектометр Будет ли эксперимент с более ориентированной на игры платформой удаленного доступа возможным вариантом? nvidia streaming и Steam Streaming хорошо работают для меня (более гигабит). Также относительная позиция напоминает мне планшет в стиле мышки.
подмастерье Компьютерщик
Сумасшедший, что годы спустя, это все еще не установлено. :(
Apache

Ответы:

8

Ничего себе, после тонны исследований и неудачных попыток, я действительно решил это!
Ну, в основном это решено - это функционально, но не без недостатков.

Благодаря ответу @ JourneymanGeek и, в частности, публикации, на которую он ссылался, я смог последовать примеру и в конечном итоге обнаружил, что среди множества интерфейсов, реализованных в ActiveX Client Remote Desktop Client, один из них поддерживает свойство RelativeMouseMode ! Это звучит как то, что мне нужно, это заставит RDP поддерживать относительные движения мыши!

Однако в этом сообщении на форуме MSDN я отметил, что «RelativeMouseMode не поддерживается в сценариях RDP RDSH / RDVH и не должен использоваться», но я решил, что это не настоящая производственная среда, и я был в порядке, используя функция, которая не поддерживается. Это также было плохо документировано, но казалось, что у меня было то, что мне было нужно - этот вопрос на StackOverflow также дал мне надежду, что это выполнимо.

Итак, я приступил к реализации простого приложения WinForms для размещения элемента управления ActiveX с установленными свойствами интерфейса «... Unsafe».


За исключением того, что, как оказалось, под «неподдерживаемым» на этот раз Microsoft подразумевала «это не работает».
Ну, если бы это было так, это был бы ТАК вопрос, извините, что привел вас (но я думаю, что хорошо, чтобы это было где-то задокументировано ...)


Однако не все было напрасно, во время всего этого углубления в протокол RDP я смотрел на перенаправление USB RemoteFX - и это выглядело как тупик, поскольку основные устройства ввода (такие как мышь, клавиатура, принтер) явно заблокированы из механизма перенаправления USB:

По умолчанию устройства в вышеупомянутых категориях доступны в удаленном сеансе с помощью методов перенаправления устройств высокого уровня. Эти методы перенаправления обеспечивают оптимальную производительность и обратную совместимость устройства в большинстве пользовательских сценариев. Следовательно, эти устройства не предлагаются через перенаправление USB RemoteFX.

Итак, окончательный ответ, как выясняется, состоит в том, что есть механизм переопределения для этого блока.


Шаг 1. Включите перенаправление USB RemoteFX.
Здесь есть приятная разработка: http://windowsitpro.com/virtualization/q-how-do-i-enable-remotefx-usb-redirection . В основном, на клиентской машине, можно использовать либо локальную политику или групповую политику для набора RemoteFX USB Device Redirectionк Enable, и позволяют пользователям (или просто админ) правы. Затем gpupdate /forceи перезагрузите компьютер.

Шаг 2. Включите переопределение перенаправления для мыши.
Как объясняется в этой статье MS KB , вы можете установить раздел реестра, чтобы включить определенное устройство (или класс устройств) для перенаправления USB.

Опять на клиенте, под

HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Политики \ Microsoft \ Windows NT \ Службы терминалов \ Клиент \ UsbSelectDeviceByInterfaces

Вы можете добавить строковое значение с идентификатором устройства.
Например, под этим ключом я добавил следующее строковое значение:

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

В зависимости от вашей мыши, вам может потребоваться другой идентификатор, поэтому YMMV. Но начни с этого.

Шаг 3: Установите RDP-клиент для перенаправления мыши.
В статье из шага 1 указано:

После включения откройте вкладку «Локальные ресурсы», нажмите «Дополнительно» в разделе «Локальные устройства и ресурсы», и вы увидите новую настройку «Другие устройства с поддержкой RemoteFX USB». Вы можете использовать этот параметр, чтобы отобразить многие типы USB-устройств, которые вы не смогли использовать с перенаправлением vanilla RDP USB, как показано ниже.

Под этим вы должны увидеть запись для вашей мыши; это может быть немного двусмысленно, например:

Перенаправление других устройств

Выберите вашу мышь (или другую подходящую запись).

Это оно! Теперь у вас есть подключенная к вашей виртуальной машине аппаратная мышь, которая позволяет 3D-играм извлекать относительные движения мыши непосредственно из драйвера мыши (-ish ..)


Однако, как указано, есть некоторые недостатки.

  1. Мышь перенаправляется на виртуальную машину RemoteFX - другими словами, на клиентском компьютере больше нет мыши , по крайней мере, когда сеанс удаленного рабочего стола открыт.
    Возможное решение - подключить 2-ю мышь и перенаправить только одну из них. (Я еще не попробовал это, но это должно работать просто отлично).

  2. По какой-то причине при перенаправлении мышь не отображает курсор напрямую в удаленном сеансе. Хотя он все еще работает, он немного сбивает с толку прицеливания, на который указывает ваша мышь.
    Простое решение состоит в том, чтобы включить мышиные следы, при этом длина должна быть уменьшена до конца. Мыши тропы
    Это будет иметь местоположение мыши, но это немного вяло.

  3. В целом, хотя это решение работает хорошо, мышь все еще немного медленная и вялая.
    Вы можете повернуть вверх скорость мыши, играть с точностью указателя (иногда выключив будет на самом деле помочь с этим), и даже поиграться с настройками реестра ускорение мыши при HKEY_CURRENT_USER\Control Panel\Mouse( Mouse Speed, MouseThreshold1и MouseThreshold2соответственно).
    Это поможет смягчить проблему, но не заставит ее исчезнуть.

Таким образом, в целом, это может сделать даже 3D-игры очень играбельными - для казуальных игр, к сожалению, не очень хорошими для игр с подергиванием. (Хотя, если вам это нужно, вы можете просто загрузить металл прямо в этот VHD и иметь оба варианта ....)

алчный
источник
Хорошо сделано ... надеюсь, кто-то может использовать эту информацию для работы в других местах.
Я говорю, восстановите Монику
Я использую Microsoft Remote Desktopна MacBook Pro. Есть ли механизм переопределения для Mac?
Брайан
@ Брайан У меня нет тумана :-) Работает ли там клиентское приложение таким же образом? Попробуйте поискать те же самые настройки ...
AviD
3

Очевидно, что remotefx работает только в «абсолютных» режимах ввода планшета , что является источником вашей проблемы. Я не могу найти документацию по его изменению.

Возможно, вам придется подумать об альтернативном режиме удаленного доступа - у меня хорошо работает steam (использование графического процессора nvidia на «хосте» и странного небольшого отсека на другой стороне). У Nvidia есть опция для их карт, но я на самом деле не пробовал.

Короче говоря, нет очевидного способа исправить это с помощью remotefx, если игра не может быть настроена на использование режима ввода, который использует remotefx.

Подмастерье Компьютерщик
источник
2

Удаленный рабочий стол передает абсолютные движения мыши, чтобы уменьшить количество пакетов перемещения мыши, которые необходимо отправить от клиента к серверу. Это расположение хорошо работает для большинства приложений Windows (электронная почта, просмотр веб-страниц и т. Д.). Многие 2D игры тоже подойдут. Тем не менее, игры FPS, как правило, нуждаются в относительных движениях мыши для управления внешним видом мыши, который, к сожалению, не передает Remote Desktop. Потеря относительных данных о движении мыши - это то, что заставляет игру неожиданно поворачивать окно просмотра. Microsoft необходимо изменить Remote Desktop, чтобы этот игровой сценарий работал. Тем не менее, использование контроллера XBOX для ПК с перенаправлением USB может быть альтернативой для вас.

Контроллер XBOX
источник
Спасибо, я вроде знал это, а также в основном повторял ответ @ Journeyman ... но контроллер - хорошее решение (хотя и не поможет мне ...)
AviD