Я не понимаю как все спокойно годами играют в игру, где реализовано на столько издевательское решение управления камерой мышью, эмитирующей аналоговый стик.
Может у меня у одного всё на столько плохо? Но по мне так очень неудобно каждый раз возвращать не только мышку к центру, но и стараться отцентрировать условный стик.
Есть у меня и геймпад, но играть в No Man's Sky на геймпаде, тоже сомнительное удовольствие.
По такому поводу я решил сделать собственный костыль в меру своих способностей.
Суть её работы проста и заключается лишь в одной функции: постоянно возвращать курсор мыши к центру экрана.
Значение первого поля (на скриншоте имеет значение «2») — интервал в миллисекундах, через который происходит возврат курсора.
Значение второго и третьего полей (при запуске автоматически берут разрешение экрана) — разрешение, в рамках которых определяется центр. Изменение этих значений позволяет смещать центр в случае необходимости.
Play (меняется на Pause) — запуск/остановка постоянного центрирования.
Exit — выход.
Горячие клавиши
Пробел — Play/Pause.
F5 — Exit.
Вверх/вниз, влево/вправо — менять значение разрешения.
Галочки на «Shift», «Ctrl» и «Alt» определяют какие клавиши необходимо зажать для срабатывания горячих клавиш. То есть, если галочки стоят так же, как на скриншоте, то, например, сочетание Ctrl+Alt+Пробел будет запускать и останавливать центрирование.
И да, я пробовал рекомендацию по изменению значений в файле конфигураций на -50. В моём случае это приводит к инвертированию осей мыши. И если верх/низ я могу инвертировать обратно, то лево/право уже нет.
Не совсем понял. В каких местах нужно центрирование? Много, конечно, не играл в игру, часов 40 может, но не видел проблем с мышью.
В моём случае оно необходимо во всех местах от начала запуска и до выхода на рабочий стол. Не знаю как у других, но у меня эта игра воспринимает мышку исключительно как имитацию пальца на аналоговом стике. Соответственно, движения мыши относительно центра экрана у меня отклоняют условный аналоговый стик игры.
Кстати, с этой утилитой мне удавалось нормально играть на домашнем компьютере через АниДеск.
Так центрирование в игре вроде есть же
Вроде есть, но работает оно плохо. А если играть через удалённый доступ, то его недостаточно.
Спасибо, как то было подобное нужно, но уже не помню для чего. Скачаю, пусть полежит до случая.
Не знаю на сколько это связано, но у меня игра иногда просто бросает курсор вверх-вправо
Это не зависит ни от компа на котором я играю, ни от мышки которой я играю - то есть меняя полностью железо - я вернулся в игру и столкнулся с той же самой проблемой
В процессе это раздражает, когда я иду прямо и тут резко начинаю идти и смотреть непонятно куда
В полёте это тоже происходит, курсор отбрасывает периодически верх-право
Решил таки потестить у себя эту софтину, попытаться пролечить баг в игре
Начну с конца - не помогло, камеру / курсор всё равно бросает
Так что проблема явно в другом
Дальше тех. часть, через что я заставил себя пройти, чтобы это выяснить
Кому не интересно - можно не читать
Даже не запуская игру - нашёл баг в этой софтине
Точнее, это не баг, а недоработка
У меня три монитора, первый стоит справа, и пиксельное пространство центрального, на котором я играю - находится в минусе, это видно на моём скриншоте
В программе указать отрицательное число - нельзя, а мне надо в моём случае, 1920-1920*2= -1920
Так что надо менять порядок мониторов
Либо - поправить тулзу, так что реквестирую сорцы, или исправление
Забегая наперёд скажу, что и сорцы, и исправление я уже замутил себе сам
Я попытался через CheatEngine ввести отрицательное число, получил значение где-то на грани 2^32-1, то есть разраб тулзы зачем-то использует тип данных unsinged int вместо обычного инта ... Самонадеянно, однако
Попытался изменить тип данных для значения - тоже не даёт ничего, видать функция в программе тоже принимает unsigned int ... Дважды самонадеянно
Судя по размеру исполняемого файла - сделан он на шарпе, так что я расчехлил некогда скачанный декомпилятор (ILSpy, качал в 2017 году)
И да, у нас тут uint'ы во всей их красе )
Точнее не так, там - decimal, которые автор зачем-то обрезает от нуля, но сам метод дальше принимает обычный int, что выглядит довольно странно
Скорее всего просто в свойствах элемента указан диапазон от нуля до 9999
Ещё более смешно это выглядит, учитывая шаг стрелок - по 10 пунктов )
Я вот честно не помню, какие там значения по умолчанию, может зря гоню на автора
ILSpy не позволяет перекомпилировать, поэтому я скачал dnSpy, метод cursorToCenter(), ввёл суда свои цифры вместо тех, что считываются с полей ввода
У меня это -960, 540
По хорошему - это надо делать файлом, в котором описывается рабочее пространство, в данном конкретном случае достаточно двух цифр - расчётные координаты центра нужного монитора, которые (координаты) будут независимы от конфигурации мониторов
Можно конечно усложнить рабочими отрицательными разрешениями - но большого смысла в этом нет, к тому же не понятно на что делать, мониторы могут стоять не только горизонтально, но ещё и вертикально
Мне как водится, лень, потому что и так работает как надо - центрирует на втором мониторе
Потому что реально по хорошему - нужно разрешить ввод отрицательных чисел и желательно через файл, разбираться с этим я желанием не горю
В идеале программа должна сама считывать конфигурацию мониторов, и при вариантах больше одного - спрашивать у пользователя, на каком мониторе нужно центровать
Но принципиально - не должно быть таких багов, требующих применение таких костылей
Да ещё и не помогает это центрирование, лично мне, проблема всё равно остаётся актуальной, на форумах либо не то, либо на вопросы нет никаких ответов, и так уже несколько лет, куда писать с этим багом - решительно непонятно