вторник, 18 июля 2017 г.

Перестали запускаться игры на Unity

После обновления Windows 10 до сборки 16232, перестали запускаться игры на движке Unity (Night in the woods, Rimworld, Blackwake и.т.д.).


Симптомы:
1. При запуске либо нет вообще ничего, кроме процесса в диспетчере задач и значка на панели задач;
2. Ченый экран и мызыка в меню;
3. Ошибка "Couldn't switch to requested monitor resolution".
switching to resolution 1920x0 failed, trying lower one

















При этом стандартные способы решения проблем (обновление драйвера видеокарты, проверка файлов игры в стиме, отключение антивирусов, тимвьювера, прочего ПО для захвата изображения) не помогают.


Что помогло, так это отключение второго монитора:















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



Можем ли мы автоматизировать этот костыль?
Ну конечно да!


Нам понадобятся ID игр из стима.
Посмотреть их можно либо в самом стиме, перейдя на страницу игры в магазине или в сообществе. В адресной строке будет указан ID игры:





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

Для нестимоских игр нам нужен просто путь к .EXE файлу для запуска.


Итак, создадим BAT файл примерно следующего содержания

:: отключаем вывод команд и очищаем окно
echo off
cls
:: выводим меню с играми, которые будем запускать:
echo 1. Blackwake
echo 2. Rimworld
echo 3. Night in the woods
:: и запрашиваем ввод номера:
set choise=0
set /p choise=
:: если мы нажимаем энтер, не введя вариант ответа, то просто выходим
if %choise% == 0 exit
:: далее, переключаем мониторы в режим дублирования и делаем паузу в 3 секунды, что бы команда успела отработать
displayswitch /clone
timeout 3 > nul
:: далее, проходимся по меню и запускаем игру в зависимости от набраной цифры
if %choise% == 1 start steam://rungameid/420290
if %choise% == 2 start steam://rungameid/294100
if %choise% == 3 start "D:\Games\Night in the Woods\Night in the Woods.exe"
:: делаем паузу в 30 секунд, что бы игра успела запуститься и возвращаем мониторы в изначальное положение
timeout 30 > nul
displayswitch /extend
exit

Комментариев нет:

Отправить комментарий