Здравствуйте.
Думаю беседка пожалуй единственное место где я могу задать свойговновопрос дабы не, извините, гадить на форуме. И ещё я засунул косвенно относящиеся к вопросу материалы под спойлер, возможно это как-то пригодится.
Суть проблемы
При подключении к удалённому пк (хост) с помощью Parsec эмулируется клавиатура и мышь. К сожалению некоторые игровые античиты (например vanguard) блокируют эмуляцию переферии и принимают только raw ввод. На данный момент они не блокируют проброс usb портов, поэтому я поднял vlan через softether и с помощью тулзы usb over network пробросил свою клавиатуру и мышь на хост, что дало мне возможность обойти ограничения античитов. При подключении таким образом возникает проблема с курсором мыши - он пропадает/становится невидимым на хосте, что, согласитесь, проблематично. Обновление драйверов или установка фирменного по мыши не меняют ситуации.
Зачем нужен удалённый пк, parsec...?
Что было предпринято
Поскольку античиты блокируют эмуляцию, они легко могут заблокировать любые варианты отрисовки курсора мыши программно, особенно если речь идёт о полноэкранном приложении directx. Поэтому самый простой и безопасный вариант обнаружить курсор нашёл только один - использовать встроенную функцию windows mouse sonar. Разумеется сама реализация выглядит куцо, а использовать предлагаемую кнопку CTRL для активации этой функции попутно находясь в игре крайне неудобно. Пытаясь найти варианты замены отображения эффекта или смены кнопки активации нашёл только расположение в реестре данной функции. Дальнейшие поиски по ключевым названиям ничего не дали.
Из готовых программ нашёл SpotOnTheMouse которая отрисовывает облась под курсором и имеет настройки биндов, но после тестов выяснил, что с несколькими играми программа не работает. Как на неё реагируют античиты информация пока не полная, нужно больше тестов.
Также я пробовал отрисовать курсор самостоятельно. Хоть попытки куцые и недопиленные, они более-менее работают в окне без рамок, например простейшая реализация на python и c++:
По итогу хотелось бы знать существует ли вариант поставить свою кнопку/комбинацию активации функции сонара? Или вообще видоизменить эффект функции? Всё же реализация средствами windows самая безопасная как мне кажется, но я даже не знаю с чего начать. Или может быть есть какой-то другой простой и безопасный способ избавиться от проблемы с исчезающим курсором?
Думаю беседка пожалуй единственное место где я могу задать свой
Суть проблемы
При подключении к удалённому пк (хост) с помощью Parsec эмулируется клавиатура и мышь. К сожалению некоторые игровые античиты (например vanguard) блокируют эмуляцию переферии и принимают только raw ввод. На данный момент они не блокируют проброс usb портов, поэтому я поднял vlan через softether и с помощью тулзы usb over network пробросил свою клавиатуру и мышь на хост, что дало мне возможность обойти ограничения античитов. При подключении таким образом возникает проблема с курсором мыши - он пропадает/становится невидимым на хосте, что, согласитесь, проблематично. Обновление драйверов или установка фирменного по мыши не меняют ситуации.
Зачем нужен удалённый пк, parsec...?
Разумеется обычному человеку не придёт в голову заниматься подобной ерундой, если не сказать иначе. Дело в том, что у меня в квартире/доме есть проблема с инпут лагом из-за чего играть в шутеры не представляется возможным и единственный известный на данный момент вариант полностью избавиться от проблемы - переезд в другую квартиру/дом. Речь не об input lag, что переводится также как и пишется, проблема гораздо сложнее и комплекснее, при этом почему-то в комьюнити её прозвали именно так, но я не хотел бы углубляться в этот вопрос. Просто поверьте на слово, что играть в шутеры с данной проблемой невозможно. А при определённых условиях - вообще пользоваться пк.
В случае c удалённым пк и Parsec я экспериментирую с поиском решения проблемы. Ранее вариантом играть удалённо был только облачный гейминг, который предоставляет 60Hz или в лучшем случае 120Hz потоковый стриминг. Всё это подходит для игроков, которые не играют в шутеры, потому что им не важна частота обновления экрана (хотя мне противно даже на рабочем столе видеть менее 144Hz). Для игры в шутеры это не годится.
Про Parsec я знал ещё в 20 году, но на тот момент они ещё не идеально допилили свой софт, поэтому я просто иногда читал их анонсы. И вот спустя время стриминг с высоким битрейтом около 70мбит/с в 1080p@240Hz работает шедеврально, по моим замерам задержки существенно сократились и теперь их можно снизить до ~10мс! Конечно при наличии видеокарты 20/30 серии и пинга до хоста ~5мс, что в моём случае вполне реально и осуществимо, благо рядом есть отличные дц. На данный момент я проверил несколько игр и всё работает отлично. Для этого я арендовывал выделенный сервер с видеокартой в стойке. Тестировать конечно было жутко неудобно, но об этом ниже
В случае c удалённым пк и Parsec я экспериментирую с поиском решения проблемы. Ранее вариантом играть удалённо был только облачный гейминг, который предоставляет 60Hz или в лучшем случае 120Hz потоковый стриминг. Всё это подходит для игроков, которые не играют в шутеры, потому что им не важна частота обновления экрана (хотя мне противно даже на рабочем столе видеть менее 144Hz). Для игры в шутеры это не годится.
Про Parsec я знал ещё в 20 году, но на тот момент они ещё не идеально допилили свой софт, поэтому я просто иногда читал их анонсы. И вот спустя время стриминг с высоким битрейтом около 70мбит/с в 1080p@240Hz работает шедеврально, по моим замерам задержки существенно сократились и теперь их можно снизить до ~10мс! Конечно при наличии видеокарты 20/30 серии и пинга до хоста ~5мс, что в моём случае вполне реально и осуществимо, благо рядом есть отличные дц. На данный момент я проверил несколько игр и всё работает отлично. Для этого я арендовывал выделенный сервер с видеокартой в стойке. Тестировать конечно было жутко неудобно, но об этом ниже
Что было предпринято
Поскольку античиты блокируют эмуляцию, они легко могут заблокировать любые варианты отрисовки курсора мыши программно, особенно если речь идёт о полноэкранном приложении directx. Поэтому самый простой и безопасный вариант обнаружить курсор нашёл только один - использовать встроенную функцию windows mouse sonar. Разумеется сама реализация выглядит куцо, а использовать предлагаемую кнопку CTRL для активации этой функции попутно находясь в игре крайне неудобно. Пытаясь найти варианты замены отображения эффекта или смены кнопки активации нашёл только расположение в реестре данной функции. Дальнейшие поиски по ключевым названиям ничего не дали.
Из готовых программ нашёл SpotOnTheMouse которая отрисовывает облась под курсором и имеет настройки биндов, но после тестов выяснил, что с несколькими играми программа не работает. Как на неё реагируют античиты информация пока не полная, нужно больше тестов.
Также я пробовал отрисовать курсор самостоятельно. Хоть попытки куцые и недопиленные, они более-менее работают в окне без рамок, например простейшая реализация на python и c++:
Python:
import win32gui, win32ui
from win32api import GetSystemMetrics
dc = win32gui.GetDC(0)
dcObj = win32ui.CreateDCFromHandle(dc)
hwnd = win32gui.WindowFromPoint((0,0))
monitor = (0, 0, GetSystemMetrics(0), GetSystemMetrics(1))
while True:
m = win32gui.GetCursorPos()
dcObj.Rectangle((m[0], m[1], m[0]+10, m[1]+10))
win32gui.InvalidateRect(hwnd, monitor, True)
C++:
int main()
{
POINT p;
while (true)
{
if (GetCursorPos(&p))
{
HDC dc = GetDC(GetDesktopWindow());
TextOutA(dc, p.x, p.y, ".", 1);
ReleaseDC(GetDesktopWindow(), dc);
}
}
}
По итогу хотелось бы знать существует ли вариант поставить свою кнопку/комбинацию активации функции сонара? Или вообще видоизменить эффект функции? Всё же реализация средствами windows самая безопасная как мне кажется, но я даже не знаю с чего начать. Или может быть есть какой-то другой простой и безопасный способ избавиться от проблемы с исчезающим курсором?