Как избавиться от зависаний при вызове меню в модах S.T.A.L.K.E.R.



    Игры серии S.T.A.L.K.E.R являются, наверно одними из самых популярных компьютерных игр среди игроков всей планеты. Первая игра S.T.A.L.K.E.R., имеющая подзаголовок "Тень Чернобыля", появилась в продаже еще в 2007 году. Самостоятельное дополнение к ней, S.T.A.L.K.E.R."Чистое небо", вышло в 2008 году. Второе дополнение, S.T.A.L.K.E.R. "Зов Припяти", увидело свет в 2009-м. До сих пор ожидается и полноценная номерная часть серии, S.T.A.L.K.E.R. 2.

На основе оригинальных игр многими энтузиастами созданы и продолжают создаваться модифицированные версии STALKER, они же моды, которые в значительной степени изменяют сюжет, графику, наборы оружия, персонажей и т.п. Благодаря модам игра S.T.A.L.K.E.R продолжает пользоваться популярностью среди огромного количества ее фанатов.

Одной из проблем модов S.T.A.L.K.E.R является наличие множества ошибок разработчиков, что приводит к вылетам, зависаниям или вообще невозможностью запуска игры на современном оборудовании и в среде современных операционных систем.

При запуске некоторых модов наблюдается следующая картина. Появляется начальная заставка, звук и через некоторое время происходит искажение картинки, исчезновение или искажение курсора. Такая же ситуация возникает при вызове главного меню клавишей Esc. Игра не зависает в прямом смысле, но меню либо искажено, либо отображается не полностью, либо недоступно по причине отсутствия указателя мыши. Причем, такая ситуация возникает не всегда, хотя и довольно часто. Проявление ее связано с самим модом, ОС, оборудованием, и основной причиной является неправильная отработка временных интервалов на многоядерных процессорах. Проблема довольно известная как ошибка "Negative delta time" возникающая при запуске компьютерных игр, разработанных в эпоху одноядерных процессоров, на многоядерных системах, когда при переключении между ядрами, программа может получить отрицательное значение временного интервала. Обычно это приводило к невозможности запуска игры, искажению звука и изображения, возникновению "тормозов" и т.п. А в модах S.T.A.L.K.E.R это приводит к невозможности использования главного меню игры. Проблема решается довольно просто – нужно запустить игру на одном из ядер процессора. Сделать это можно с помощью стандартного диспетчера задач Windows.

  • После запуска игры переключиться на Рабочий стол, нажав комбинацию клавиш Alt+Tab

  • Запустить диспетчер задач. Нажать комбинацию Ctrl+Alt+Del и выбрать пункт Запустить диспетчер задач. Или через диалог "Выполнить" запустить исполняемый файл taskmgr.exe

  • В списке задач найти образ игры (В зависимости от мода это может быть xr_3da.exe, Stalker-COP.exe, XRengine.exe) и вызвать контекстное меню правой кнопкой мышки. Выбрать пункт Задать соответствие В некоторых версиях Windows вместо выражения "соответствие" используется выражение "схожесть".

  • В открывшемся окне задать соответствие одного из ядер выбранной задаче.

    Выбор одного из ядер для выбранной задачи


    После этого можно переключиться на игру комбинацией Alt+Tab и проблема должна исчезнуть.

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

    Еще проще реализовать запуск игры на одном ядре CPU, слегка изменив ее ярлык и добавив запуск исполняемого файла командой START. Эта команда является внутренней командой интерпретатора команд CMD и позволяет запускать приложения в многопроцессорных системах с неравномерным доступом к памяти (NUMA). В случае обычного однопроцессорного многоядерного компьютера для запуска игры на одном процессорном ядре нужно задать два параметра:

    /NODE 0 - использовать первый (единственный) CPU

    /AFFINITY 0xNN - использовать ядра, задаваемые битовой маской 0xNN.

    0x1 – первое ядро.

    0x2 – второе ядро.

    0x4 – третье ядро.

    0x8 – четвертое ядро.

    Иногда ядра CPU рассматривают как логические процессоры, нумерация которых начинается с нуля, т.е. 0x1 – нулевое ядро, 0x2 – первое ядро и т.д.

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

    cmd.exe /c start "Priboi"/node 0 /affinity 0x8 < путь и имя исполняемого файла игры >

    В командной строке для START указан параметр "Priboi", являющийся заголовком окна в котором будет запущена игра. Его желательно задавать, поскольку могут возникнуть проблемы с именами папок и файлов, содержащих пробелы, поскольку они должны также заключаться в двойные кавычки и могут быть обработаны как заголовок окна. Обычно заголовок делают пустым, например:

    cmd.exe /c start ""/node 0 /affinity 0x8 "D:\Games\S.T.A.L.K.E.R - Priboi Story - Eternal\bin_x64\xrEngine.exe"

    Для запуска на четвертом и втором ядрах двоичная маска будет равна 1010, или числу A в шестнадцатеричной системе счисления:

    cmd.exe /c start "" /node 0 /affinity 0xA < путь и имя исполняемого файла игры >

    Для модификации ярлыка игры, откройте его свойства и измените строку запуска, добавив start с соответствующими параметрами:

    Изменение ярлыка игры STALKER для запуска на одном ядре процессора.


    Для большинства версий Windows, параметр /NODE в однопроцессорных системах по умолчанию равен нулю и его можно не задавать.

    Кроме диспетчера задач Windows и команды START, для задания соответствия ядер выбранным процессам можно использовать стороннее программное обеспечение, как, например CPU-Control. Программа бесплатная, очень простая и имеет поддержку русского языка. Скачать ее можно по ссылке с официального сайта www.coma-code.de

    CPU-Control от coma-code.de


    CPU-Control поддерживает пять различных режимов:

    1. Автоматический: CPU-Control использует все два / четыре процессора для назначения задач.

    2. Ручной: вы выбираете процессор, который должен обрабатывать процесс. Вы можете сохранить настройки в профиль (до 9 профилей).

    3. CPU1: все задачи выполняются на 1 процессоре.

    4. CPU2: все задачи на процессоре 2

    Off: CPU-Control деактивирован

    В качестве утилиты командной строки для задания соответствия ядер процессора отдельным задачам можно использовать PSEexec.exe из пакета служебных программ от Microsoft Windows Sysinternals, скачать которую можно на странице загрузки официального сайта.

    Утилиту PSexec можно использовать даже в устаревших операционных системах, она не нуждается в установке и может быть загружена либо отдельно, либо в составе пакетов PSTolls и Sysinternals Suite. Инструкция по использованию на русском языке – Утилиты пакета PSTools

    Для уменьшения вероятности зависания при запуске модов S.T.A.L.K.E.R можно добавить в свойствах ярлыка запуск исполняемого файла с ключом -noprefetch:

    ”D:\Games\S.T.A.L.K.E.R\Lost Stalker\bin\xrEngine.exe” –noprefetch - отключить предварительную загрузку ресурсов.

    Еще могу пригодиться ключи:

    -r1 - Запускает STALKER в режиме DX9 Статического освещения.

    -r2 - Запускает STALKER в режиме DX9 Полного динамического освещения.

    -r2a (-r2.5)- Запускает STALKER в режиме DX9 Улучшенного полного динамического освещения.

    -r3 - Запускает STALKER в режиме DX10 Улучшенного полного динамического освещения.

    -r4 - Запускает STALKER в режиме DX11 Улучшенного полного динамического освещения.

    r4xx - Включить эмуляцию видеокарт ATI на графических процессорах серии R4xx; работает только для видеокарт с устаревшими GPU

    -gl - Запускает STALKER в режиме OpenGL Улучшенного полного динамического освещения.

    -gpu_nopure - Переключает графический процессор (GPU) в состояние из Pure Hardware (полное аппаратное ускорение) в simply Hardware (упрощенное ускорение). Может прибавить FPS на старых видеокартах.

    -gpu_ref - Переключает графический процессор (GPU) в состояние Reference mode. Без кэширования кадров.

    -gpu_sw - Переключает GPU режим в Software Renderer (Программное Ускорение).





    В начало страницы     |     В раздел коротких инструкций (HowTo)



  • Рейтинг@Mail.ru