Сегодня господин новорег 0x00 NULL предложил решение проблемы выбрасывания из игры в GeForce Now спустя 15 минут простоя. Однако, ни предоставлять исходники, ни объяснять принцип работы своего творения, он по какой-то натянутой причине не захотел, предлагая поверить в безопасность его программы на слово.
Более того, активное пропихивание его группы ВК как в посте, так и в самой программе (принудительный редирект при каждом запуске) отбивает всякое желание пользоваться его продуктом интеллектуального труда.
Всё это довольно подозрительно и неприятно, поэтому я предлагаю вам максимально прозрачный способ решения данной проблемы.
Благодаря наводке от Vladimir Holmston, выяснилось, что всё что делает программа от 0x00 NULL при взаимодействии с GFN, это отсылает в окно лаунчера клавиши F13 и, возможно, IME, которые не существуют в физическом виде в подавляющем большинстве клавиатур. Это объясняет всю «магию» того, почему программа не мешает игровому процессу — на эти клавиши никто не назначает никаких действий.
Проверка кейлоггером это подтвердила, а также показала, что ПО тупо спамит F13 каждую секунду — ровно 10 нажатий за 10 секунд. Но ЗОЧЕМ?
Это также дает основания полагать, что у GFN нет никаких умных проверок на активность — ни на движение мыши, ни на одинаковые промежутки между нажатиями клавиш и т.п, что упрощает задачу.
Наиболее близкое, но прозрачное решение можно получить таким образом:
1. Ставим AutoHotKey (для тех кто в танке: статья на Вики, исходники на Гите)
2. Копируем в блокнот:
3. Сохраняем в формате .ahk
4. Запускаем получившийся файл. По желанию добавляем в автозагрузку
Результат
Интерфейс максимально простой — его нет. Он нам на*уй не нужон, интерфейс ваш. Вам не нужно выбирать процесс игры запущенной в GFN — всё определяется автоматически. Просто либо добавляете программу в автозагрузку, либо запускаете ее вручную.
При наличии активного окна GeForce NOW каждые две минуты скрипт нажимает клавишу F13 и на всякий случай одну из IME. Коды используемых в скрипте клавиш можно посмотреть здесь.
По моим замерам, из игры выбрасывает через 15 минут бездействия. С активным скриптом игра продержалась 30 минут, дальше тестировать не стал.
Частоту нажатия фейковых клавиш можете регулировать по желанию значением в команде Sleep (см. комментарии в коде — пауза перед началом цикла). Но я не заметил никаких проблем и при двухминутной частоте — игровому процессу никак не мешает, лагов нет, управление при нажатии скриптом виртуальных клавишей не блокируется.
Итого мы имеем 6 строчек кода, все команды ясны и прозрачны — обычный кликер, и не надо изобретать велосипед.
А что там у нашего товарища?
Если данный вариант пофиксят, тупо запретив использование несуществующих клавиш, или добавят каких-то дополнительных проверок, то есть запасное, менее удобное, но как мне кажется, более надежное решение — его вряд-ли можно как-то запретить:
При нажатии на F1, рандомно каждые 10-20 секунд будут нажиматься клавиши W, S с рандомной продолжительностью и двигаться мышка на рандомное количество пикселей с рандомной скоростью. При нажатии на F2 цикл прекращается.
Поменять клавиши запуска и остановки скрипта можно при желании по этой документации.