средство для удаления заикания

Автор:skyranger-1Последнее обновление:25/05/2014 00:02:071.1M258KB

Fallout 3 - Game of the Year Edition средство для удаления заикания-1-lagofast mod master

Введение в мод

Требуется фосс. улучшает заикание и/или производительность.
средство для удаления заикания
версия 4.0.7
от skyranger-1

тема форума: http://www.bethsoft.com/bgsforums/index.php? шоутепа = 1069833
Страница tesnexus: http://www.fallout3nexus.com/downloads/file.php? id = 8886

это плагин fose, и он будет работать только с fose 1.2 бета-1 или более поздней версией.

это будет работать только с версией 1.7 Fallout 3.




0. Содержимое:
====================================

0. Содержимое
1. Обзор
2. Монтаж
3. удаление
4. Общие изменения настроек
5. Все настройки
6. История версий
7. как это работает
8. Кредиты



1. Обзор:


этот плагин делает Fallout 3 не так «заикается» и, как правило, чувствует себя более плавно или работает лучше. он предотвращает или уменьшает ряд проблем, связанных с заиканием и частотой кадров, и может снизить частоту сбоев, связанных с заиканием. Более подробную информацию см. в разделе 7: как это работает.

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

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

это должно быть совместимо со всем. Единственное предупреждение заключается в том, что моды, которые отслеживают fps, не смогут точно измерять fps за пределами целевого диапазона, установленного этим плагином (от 10 до 30 по умолчанию). на самом деле, даже fpses, которые просто приближаются к целям fsr, могут быть трудно измерить.



2. Монтаж:
====================================

Процесс установки:

1. А. если версия fsr, которую вы устанавливаете, пришла в виде файла. zip, просто перетащите папку «данные» из zip в папку забвения.

1. b. Если версия fsr, которую вы устанавливаете, не пришла в виде файла. zip, вам нужно поместить файл sr_fallout_stutter_remover.dll в папку fallout\Data\fose\plugins. если у вас нет такой папки, создайте ее. если у вас установлена старая версия fsr, удалите его файл ini (Data\fose\plugins\sr_Fallout_Stutter_Remover.ini). если нет существующего файла fsr ini, fsr сгенерирует новый файл ini с настройками, соответствующими вашей версии в следующий раз, когда вы запустите fallout.



3. удаление:


просто удалите файл sr_fallout_stutter_remover.dll из папки data\fose\plugins.
перемещения этого файла в другой каталог также было бы достаточно.



4. Общие изменения настроек
====================================

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

Fsr сохраняет свои настройки в файле data\fose\plugins\sr_Fallout_Stutter_Remover.ini
если этот файл отсутствует, просто запустите fallout с установленным fsr, и fsr сгенерирует новый с настройками по умолчанию для вашей версии fsr. если вы что-то испортили в настройках или иным образом хотите вернуться к настройкам по умолчанию, просто удалите этот файл ini и запустите последствия.

Общую информацию о настройках вы можете найти в разделе 5, а также более полную информацию о каждом отдельном настройке.

настройки, которые вы, скорее всего, захотите изменить:

FPS_Management\MaximumFPS: (по умолчанию 30, рассмотрите возможность изменения на 0 или другие значения)
некоторые люди вообще не хотят, чтобы их кадры были ограничены. вы можете отключить ограничение кадров в секунду, установив это на 0. Кроме того, если частота обновления экрана при воспроизведении не составляет 60 Гц, вы можете попробовать изменить ее на частоту обновления экрана или половину частоты обновления экрана или треть частоты обновления экрана. эта настройка не окажет никакого влияния, если master\bmanagefps изменен на 0.

Hashtables\bAllowDynamicResizing: (по умолчанию 0, рассмотрите возможность изменения на 1)
включение этого может значительно улучшить общую производительность/кадр в секунду в сильно модифицированных играх. к сожалению, это может вызвать условия гонки и общий хаос, особенно когда сценарии, использующие определенные команды fose, запускают каждый кадр. я пытался сократить вероятность возникновения проблем почти до нуля, но... это может потребовать еще большей работы. тем временем эта функция по умолчанию отключена. эта настройка не окажет никакого влияния, если master\bhookhashtables изменят на 0.

подавление критического сечения: (специальный)
по умолчанию fsr подавляет один конкретный критический раздел, без которого эффект, похоже, работает лучше. есть еще один связанный критический раздел, который некоторые пользователи, похоже, могут подавлять, не вызывая проблем, но другие пользователи испытывают ctd на внутренних-> внешних переходах или другие проблемы при подавлении. что только приводит к небольшому улучшению заикания, поэтому обычно я не рекомендую его подавлять, но вы можете, если хотите. чтобы подавить его, найдите строку с надписью «CallerAddress=0x70172A» в вашем файле ini и добавьте сразу после нее новую строку с надписью «Mode=5». обратите внимание, что дело там важно... это должен быть «режим», а не «режим». эта настройка не будет иметь никакого эффекта, если master\bhookcriticalsections или criticalsections\buseoverrides установлены на 0.
Примечание: вычеркнутая часть чтения сразу над этим была предназначена для забытия, а не для последствий; есть эквивалент для падения, но я еще не смог найти его точные значения. на данный момент игнорируйте это.



5. Все настройки
====================================

Fsr сохраняет свои настройки в файле data\fose\plugins\sr_Fallout_Stutter_Remover.ini
если этот файл отсутствует, просто запустите fallout с установленным fsr, и fsr сгенерирует новый с настройками по умолчанию для вашей версии fsr. если вы что-то испортили в настройках или иным образом хотите вернуться к настройкам по умолчанию, просто удалите этот файл ini и запустите последствия.

Обратите внимание, что формат файлов fsr ini меняется между основными версиями fsr — вы не должны использовать файл ini версии fsr 1 с fsr версией 2 и т. д. в fsr2, файл ini организован в разделах, таких как "SectionName {SettingName=Value}". определенный параметр может быть упомянут как sectionname\settingname, чтобы отличить его от других параметров с одним именем в разных разделах. в обычных настройках с именами, начинающимися с «i», являются целыми значениями (т.е. числом без десятичной точки), настройки с именами, начинающимися с «b», — логическими значениями (т.е. 0 или 1), а настройки, начинающимися с «f» — это числа, в которых могут быть десятичные точки (т.е. 3.14). некоторые настройки не начинаются с одной из этих букв, в этом случае может быть неясно, какой соответствующий тип значений.

это настройки и их текущие значения по умолчанию (могут не быть актуальными на 100%):

раздел: мастер {}
этот раздел содержит опцию отключения каждой основной подсистемы fsr, а также несколько настроек для вещей, которые не принадлежат какой-либо конкретной подсистеме fsr.

Master\bManageFPS (по умолчанию: 1)
Установка этого значения 0 отключит все вещи управления fps, сделав каждую настройку в разделе fps_management бессмысленной.

Master\bHookCriticalSections (по умолчанию: 1)
Установка этого значения 0 отключит все ключевые разделы, сделав каждую настройку в разделе критических разделов бессмысленной.

Master\bHookLightCriticalSections (по умолчанию: 1)
Установка этого значения 0 отключит все критические разделы света, сделав каждую настройку в разделе lightcriticalsections бессмысленной.

Master\bhoohashtables (по умолчанию: 1)
Установка этого значения 0 отключит все вещи хештаблицы, сделав каждую настройку в разделе критических разделов бессмысленной.

Master\bReplaceHeap (по умолчанию: 0)
Установка этого значения на 1 позволит заменить кучу, что сделает настройки в разделе кучи значимыми.

Master\bLogToConsole (по умолчанию: 0)
Fsr записывает различные биты информации в свой файл журнала. Изменение этого параметра на 1 приведет к тому, что fsr также распечатает эту информацию на консоль.
файл журнала — sr_fallout_stutter_remover.log в каталоге fallout. он создается или перезаписывается каждый раз, когда fallout запускается с установленным fsr.

Master\bfix64Hz (по умолчанию: 1)
Установка этого значения на 1 исправляет проблему с выпадами, которая вызывает «микрозаика». эту проблему иногда называют «проблемой 64 Гц». В частности, проблема заключается в том, что логическое синхронизация игры Fallout обычно происходит с разрешением 1/64-й секунды, а частота обновления экрана обычно позволяет Fallout нарисовать 60 кадров в секунду, когда vsync ограничен. эта комбинация создает своего рода частоту битов, когда частот кадров максимизируется, при котором 4 кадра в каждую секунду имеют в два раза больше игрового времени, чем 56 кадров. исправление, согласно которому fsr применяет влияние силы на использование времени с разрешением 1/1000 секунды вместо 1/64 секунды.

Master\bFlushLog (по умолчанию: 1)
это говорит fsr немедленно записывать любые сообщения журнала в свой файл вместо буферирования их в памяти. это может немного снизить производительность из-за большего количества доступа к диску, но это увеличивает вероятность того, что любые сообщения, связанные с проблемами, возникающими незадолго до сбоя, успешно будут записаны в файл журнала.

Master\iSchedulingResolution (по умолчанию: 1)
Fsr запросит, чтобы планировщик windows работал с таким разрешением миллисекунд. при этом наборе на уровне 1 fsr и fallout, как правило, работают лучше. Однако это может немного сократить срок службы батареи ноутбуков.

раздел: FPS_Management {}
этот раздел содержит настройки, которые регулируют то, как fsr управляет скоростью кадров и потоком игрового времени.

FPS_Management\bAllowSlowMotion (по умолчанию: 1)
Установка этого значения 0 помешит fsr попытаться переопределить нормальный поток игрового времени. В прошлом ошибки делали это Arison от fsr (самое печальное — ошибка neary-npcs-drop-dead-on-cell-transitions), но считается, что сейчас они исправлены. Однако на случай, если вы подозреваете, что может возникнуть проблема, вы можете принудительно отключить все корректировки времени игры FSR с помощью этой настройки. Несмотря на название, установка этого значения 0 также помешит fsr быстро пересылать игровое время, хотя fsr пытается сделать это только при очень редких комбинациях настроек и обстоятельств.

FPS_Management\MaximumFPS (по умолчанию: 30)
это максимальный кадр в секунду, который fsr не допустит превышения последствий. обычно я устанавливаю это на достаточно высокую скорость кадров, чтобы меня не особо волновали какие-либо дополнительные кадры в секунду. обратите внимание, что fsr здесь на самом деле не занимается «кадрами в секунду», вместо этого он преобразует это значение в число миллисекунд на кадр и учитывает каждый кадр индивидуально. если кадр будет завершен слишком быстро, fsr приведет к тому, что основной поток падений засыпается до тех пор, пока не пройдет правильное количество миллисекунд. поставка основного потока fallouts в спящий режим может освободить ресурсы для использования фоновыми потоками fallouts или для других программ, которые могут работать в фоновом режиме. если никто не хочет использовать дополнительные ресурсы, ваш процессор и/или графический процессор будет работать холоднее и потребует меньше электроэнергии.

FPS_Management\MinimumFPS (по умолчанию: 10)
это минимальный кадр в секунду, который fsr не допустит попадания последствий. однако вместо реальных секунд это касается секунд игрового времени. поэтому вы все равно можете иметь кадр в секунду 1, если ваш компьютер действительно медленный, но это замедлит время игры до 10% от обычного, так что всегда будет как минимум 10 кадров в секунду времени игры. все цифры были только, например, на основе реальных кадров в секунду 1 и настройки минимальных кадров в секунду 10 (значение по умолчанию). также обратите внимание, что, как и maximumfps, это на самом деле работает на основе одного кадра, обрабатывая миллисекунду на кадр вместо кадров в секунду.
обычно я устанавливаю это на более низкие кадры в секунду, которые, по моему мнению, можно играть удаленно. Главная цель этой настройки — предотвратить, чтобы логика игры с последствиями сходила с ума, когда кадр в секунду становится слишком низким. проблемы, которые это предотвращает, включают бои, которые невозможны, потому что враги могут кружить вокруг вас между кадрами, испорченные элементы управления, потому что fallout считает, что клавиша атаки опущена на весь кадр или не опущена на весь кадр, что может привести к силовой атаке. возникновение, когда была предназначена атака, и множество других аналогичных проблем.

FPS_Management\iSmoothFrames (по умолчанию: 0)
если это установлено на 0, логика «сглаживания» ничего не делает. чтобы включить логику сглаживания, попробуйте установить это на 2. однако сообщения предполагают, что логика сглаживания на самом деле ничего не стоит. логика сглаживания предназначена для предотвращения различных проблем, возникающих из-за заикания и других быстрых изменений частоты кадров. Если балломедление равно 0, логика сглаживания не будет иметь никакого эффекта.

FPS_Management\iSmoothMode (по умолчанию: 0)
это должно быть 0, 1, 2 или 3. если это 0 или 1, то это обеспечит некоторую дополнительную логику, которая пытается отфильтровать события заикания из потока времени. эта логика может закончиться тем, что общее количество проходящего игрового времени не совсем равно количеству проходящего реального времени, если произошло очень внезапное падение кадров в секунду. если это 2 или 3, то этот дополнительный кусок логики отключен. разница между 0/2 и 1/3 — очень тонкий вопрос о том, какие кадры перераспределяют время между ними.

FPS_Management\iSleepExtra (по умолчанию: 2)
Fsr заставит падение спать на столько миллисекунд каждую секунду. это может помочь высвободить ресурсы для фоновых потоков или других процессов или снизить температуру Главное преимущество заключается в том, что если какой-то фоновый поток изо всех сил пытается получить конкретный ресурс, в котором находится основной поток, это может дать ему шанс время от времени получить этот ресурс.
если это установлено на -1, код управления fsr fps никогда не приведет к спению последствий — если иначе fps превысят максимум fps, fsr тратит время в простаиваемом цикле. этот режим не рекомендуется, поскольку он предоставлен только для целей тестирования.

FPS_Management\bFPSConsoleSPAM (по умолчанию: 0)
это приведет к тому, что fsr регистрирует количество времени, необходимого для завершения каждого кадра. он будет делать это один раз за кадр, создавая огромное количество записанных времени.

FPS_Management\iSchedulingParanoia (по умолчанию: 1)
эта настройка в единицах миллисекунд. это определяет, насколько параноидальным является код maximumfps в отношении планировщика. если значение высокое, то код maximumfps никогда не спит, вместо этого тратя время на простаивающие циклы. если значение равно 0, код maximumfps будет доверять планировщику возобновить выполнение основных потоков именно в запрошенное время. обычно я компромиссирую в 1 ради модикрума паранойи по поводу планировщика, но все же позволяю конструктивно использовать большую часть свободного времени.

FPS_Management\iHardMaxFrametime (по умолчанию: 200)
это в единицах миллисекунд. Было обнаружено, что когда мой код регулировки потока времени помещает слишком большое время в неподходящее время, происходят странные вещи. плохие вещи. типа, близлежащие NPC случайно упадают мертвыми. это настройка предотвращает, что, установив абсолютный максимум количества миллисекунд, которое fsr позволяет пройти сразу в обычном ходе вещей. Обычно вы будете набирать минимум в секунду, прежде чем достигнуть этого предела, но при некоторых обстоятельствах от минимума в секунду отказываются, чтобы предотвратить побочные эффекты, такие как десинхронизация движений губ с голосами, поэтому это действует своего рода минимум в секунду второго уровня, минимум в секунду, который действительно значит. минимум в секунду. слишком низкая установка может вызвать такие вещи, как десинхронизация движений губ в разговорах, а слишком высокая установка может вызвать ошибки, такие как npcs-dropping-dead-random. я установил 200 в качестве компромисса — это не должно приводить к десинхронизации губ, если ваша скорость кадров не упадет до менее 5 в разговоре. и если вы играете в Fallout с скоростью кадров менее 5, вам нужна серьезная помощь.

раздел: критические разделы {}
в этом разделе рассматриваются все изменения, которые fsr вносит в fallouts critical_sections. хотите узнать о объектах critical_section? Fallout использует их, чтобы предотвратить случайное убийство друг друга различными нитями. Microsoft предоставляет им код. Fallout использует их несколько разные версии в зависимости от того, на какой версии windows он работает. вы можете прочитать больше о них на msdn.

критические секции\bEnableProfiling (по умолчанию: 0)
если установить значение 1, fsr будет записывать информацию о времени/производительности операций критического сечения при падении. это приводит к небольшому, но значительному штрафу на производительность. Fsr будет записывать информацию в свой файл журнала. это потенциально может дать полезную информацию о том, почему ваши последствия заикаются или медленно работают. эту информацию можно использовать для настройки раздела переопределения файла fsr ini или что-то в этом роде.

критические секции\bEnableMessages (по умолчанию: 0)
если установить значение 1, fsr будет записывать информацию о некоторых событиях по времени/производительности критических разделов. для этого очень мало затрат на производительность, но это может запутать файл журнала, затрудняя поиск там информации, не связанной с критическим разделом.

CriticalSections\bUseOverrides (по умолчанию: 1)
если это установлено на 1, fsr будет использовать настройки в разделе переопределения ini, чтобы определить, что следует делать с конкретными критическими разделами.

критические секции\идеальный режим (по умолчанию: 2)
это определяет, что fsr делает с критическими разделами, для которых нет записи режима в списке переопределений.
1: он оставляет этот критический участок в приблизительно нормальном поведении.
2: он корректирует этот критический раздел, чтобы повысить справедливость за счет пропускной способности. это может предотвратить, чтобы один поток слишком сильно захватывал критическую часть, но может быть чистой скоростью, с которой операции могут быть выполнены с этой критической частью.
3: попытка компромисса между справедливостью и пропускной способностью, при которой он обычно оптимизирует пропускную способность, но время от времени переключает поведение на оптимизацию для справедливости.
5: этот критический раздел подавлен. подавление критических секций обычно приводит к сбою осадков, но также обычно улучшает производительность. однако некоторые критические разделы могут пострадать по-разному.
6: что основной поток получает приоритет для этого критического раздела.
7: фоновые потоки получают приоритет для этого критического раздела.

CriticalSections\iDefaultSpin (по умолчанию: 500)
это влияет на то, как долго поток будет продолжать пытаться войти в критический раздел, прежде чем попросить планировщика перевести его в спин до тех пор, пока этот критический раздел не станет доступным. теоретически слишком малое значение приведет к слишком большим накладным расходам планировщика, а слишком большое значение приведет к потере циклов процессора. На самом деле, я думаю, 500 — это небольшая стоимость. идеальное значение может увеличиваться с количеством имеющихся у вас ядров/аппаратных потоков.

критические секции\iStutterLevel (по умолчанию: 4)
этот параметр влияет на то, как часто режим критического сектора 2 переключает поведение. Подробнее о режиме критического раздела 2 см. в идеальном режиме. меньшее число означает частые переключения, большее число означает редкие переключения. идеальное значение, вероятно, должно быть где-то в диапазоне от 3 до 6.

раздел: критические световые секции {}
в этом разделе рассматриваются все изменения, которые fsr вносит в категорию объектов падения, которые служат аналогичной цели критическим секциям, но более легкими.

LightCriticalSections\bFullHooks (по умолчанию: 0)
Если установить значение 1, это включает более полную версию крючков критического сечения света. к сожалению, более полная версия по-прежнему ошибочна, поэтому на данный момент она отключена по умолчанию.

LightCriticalSections\bEnableProfiling (по умолчанию: 0)
если установить значение 1, fsr будет записывать информацию о времени/производительности операций критического участка света при падении. это приводит к небольшому, но значительному штрафу на производительность. Fsr записывает информацию в свой файл журнала. это потенциально может дать полезную информацию о том, почему ваши последствия заикаются или медленно работают. эту информацию можно использовать для настройки раздела переопределения файла fsr ini или что-то в этом роде.

LightCriticalSections\bEnableMessages (по умолчанию: 1)
если установить значение 1, fsr будет записывать информацию о некоторых событиях времени/производительности критических световых секций. Это обходится очень небольшими затратами на производительность, но это может запутаться в файле журнала, затрудняя поиск там информации, не связанной с критическими разделами.

LightCriticalSections\bUseOverrides (по умолчанию: 1)
если это установлено на 1, fsr будет использовать настройки в разделе переопределения ini, чтобы определить, что следует делать с конкретными критическими разделами. переопределения не будут иметь никакого эффекта, если не будут включены полные крючки LCS (bfullhooks выше).

LightCriticalSections\iDefaultMode (по умолчанию: 2)
это определяет, что fsr делает с зажиганием критических разделов, для которых нет записи режима в списке переопределений. он пытается использовать схему нумерации режимов, аналогичную схеме критических разделов — для получения дополнительной информации см. выше criticalsections\idefaultmode. некоторые режимы могут вести себя довольно по-разному в зависимости от включения bfullhooks или нет.

LightCriticalSections\iDefaultSpin (по умолчанию: 500)
это определяет, что fsr делает с зажиганием критических разделов, для которых нет записи вращения в списке переопределений. он пытается иметь схожее значение с критическими разделами — для получения дополнительной информации см. в критических разделах\idefaultspin выше. Значение вращения может несколько отличаться в зависимости от включения bfullhooks или нет.

LightCriticalSections\iStutterLevel (по умолчанию: 4)
Этот параметр влияет на то, как часто режим критического сечения света 2 переключает поведение. Подробнее о режиме критического раздела 2 см. в идеальном режиме. меньшее число означает частые переключения, большее число означает редкие переключения. идеальное значение, вероятно, должно быть где-то в диапазоне от 3 до 6.


раздел: куча {}
эта штука еще не работает с последствиями. не используйте.

раздел: хэштаблицы {}
Follout включает в себя кучу хэш-таблиц для поиска всевозможных вещей. они используют вообще ужасную реализацию хэштаблиц, но реальная проблема в том, что они никогда не меняют размер своих хэштаблиц. когда хэштаблица становится переполненной, производительность снижается. если хэштаблица недостаточна, то может быть потрачена небольшая часть памяти и когерентность кэша может снизиться. к сожалению, большая часть кода хэштаблицы встроена повсюду, и Fose делает различные предположения и о хэштаблицах, и мне совсем не понятно, какой должна быть соответствующая модель потоков, поэтому безопасное их изменение довольно сложно.. тем не менее, у меня есть несколько крючков для хэштабов, и они постепенно становятся лучше.

Hashtables\bAllowDynamicResizing (по умолчанию: 0)
если это установлено на 1, fsr увеличит размер хэштаблиц, как только они станут переполненными. Однако изменение их размера чревато проблемами — это может вызвать сбои или сбои, и методы, которые я использую, чтобы предотвратить это, могут вызвать небольшие заики производительности или другие сбои или сбои. тем не менее, на данный момент я думаю, что это может работать довольно прилично.

Hashtables\bUseOverrides (по умолчанию: 0)
В настоящее время нет переопределений хэштаблиц, а синтаксис их указания неловкий и может молча сбоиться и вместо этого сделать что-то другое, если вы введете неправильное значение. Однако в конечном итоге это будет исправлено, чтобы разрешить подключения, указанные в файле ini, к инициализации наиболее важных хэштаблиц, чтобы они начинались с приличного размера, а не с необходимостью изменения размера позже.

Hashtables\bEnableProfiling (по умолчанию: 0)
это будет отслеживать хэш-таблицы и регистрировать информацию о том, насколько они заполнены и сколько к ним получают доступ.

Hashtables\bEnableMessages (по умолчанию: 0)
если это 1, то код хэштаблиц может иногда записывать сообщения о том, что он делает.

Hashtables\ihashtableresescale1 (по умолчанию: 2)
Hashtables\ihashtableresescale2 (по умолчанию: 4)
если ballowdynamicresizing равен 1, ihashtableresizescale1 определит минимальный уровень занятости, при котором будет изменен размер хэштаблицы, а ihashtableresizescale2 определит, насколько больше будет ее новый размер. оба числа на самом деле являются индексами, применяемыми к 2, поэтому установка 3 означает коэффициент 8, а установка 5 означает коэффициент 32. теоретически уменьшение ihashtableresescale1 до 1 может еще больше улучшить производительность, поскольку это увеличит размер большего количества хэш-таблиц. Ihashtableresizescale2, вероятно, следует установить на 1 или 2 больше ihashtableresizescale1.

Hashtables\iHashtableResizeDelay (по умолчанию: 20)
это несколько миллисекунд, на которые fsr зависает при изменении размера хэштаблицы. Идея такова, что, хотя я не могу помешать другому потоку получить доступ к хэштаблице, пока я занят им, я, надеюсь, могу помешать им *начать* получать доступ к хэштаблице. поэтому я задерживаю достаточно долго, чтобы, возможно, любой, кто уже получил доступ к хэштаблу, закончит, а затем я делаю свои дела. к сожалению, это не работает на fose, потому что fose не делает то же самое, что и fallout, плюс даже если это делает, он не использует vtables для их выполнения. но в банкомате я думаю, что fose может получить доступ к ним только из основного потока, поэтому, если мой размеритель работает в основном потоке, ему не придется беспокоиться о fose. Возможно.

раздел: переопределяет {}
этот раздел содержит информацию, рассказывающую fsr, как найти конкретные экземпляры различных типов объектов, о которых знает fsr, и способы относиться к этим конкретным экземплярам по-разному от настроек по умолчанию для этого типа объектов. В настоящее время только вещи, которые на самом деле перечислены здесь, — это несколько конкретных критических разделов, отличающихся поведением, чем большинство.



6. История версий:
====================================

FPS Capper версия 1:
это называлось капером fps. все, что это сделало, это управление кадрами в секунду. эта версия была интегрирована в модифицированный набор obse dll.

FPS Capper версия 2:
это была первая версия, у которой была собственная dll, отделенная от obse. это называлось капером fps. все, что это сделало, это управление кадрами в секунду.

Забытие от заикания, версия 3, бета-1:
первая версия, получившая название Oblivion Sturter Entertainment. иногда замерзает на несколько минут в главном меню. Движения голоса и лица npc могут испортить диалог.
версия 3 бета-версия 2: движения голоса и лица NPC могут испортить диалог.

Забытие от заикания, версия 3, бета-6:
между бета-5 и бета-6 наблюдалась долгая задержка, заполненная множеством альфа-версий. это была первая версия fsr, которая действительно справилась с достойной работой по снижению заикания для обычного пользователя. это связано с новыми функциями: настройками справедливости критического сечения, подавлением критического сечения и заменой кучи. к сожалению, замена кучи по-прежнему имеет серьезные проблемы для многих пользователей. Bfix64hertz был установлен на 0 по умолчанию в ini, вместо этого он должен быть 1.

примечание: никогда не было финала версии 3. если спроса достаточно, я мог бы придумать его на основе исходного кода версии 3 бета-6 с несколькими исправлениями.

Устранение заикания от падений, версия 1, бета-версия 1:
первоначальный порт оср к падениям.

Устранение заикания забывания/падения версия 4.1.0:
основные изменения:
1.Поддерживает оба последствия и забывание в одной кодовой базе:не дает такого большого преимущества от Follow-3, но это помогает.
2.Файл. ini: совершенно другой формат файла ini
3.Изменение размера хештаблицы: новая функция для улучшения производительности
4.Критические сечения и легкие критические сечения:обобщил множество особых случаев для критических разделов, теперь гораздо более настраиваемых из файла ini. «Полные крючки» кода критического сечения легкого сечения все еще ошибочны.
5.Замена кучи: исправил несколько ошибок, но я думаю, что у него все еще есть проблемы. до сих пор вообще не работает с последствиями.
6.Название версии:версии, выпущенные для tesnexus, теперь называются версиями выпуска вместо бета-версий. Версии, выпущенные на мой ftp-сервер, теперь называются бета-версиями, а не альфа-версиями. первая цифра номера версии увеличивается только тогда, когда вносятся существенные изменения в конфигурацию или формат распространения. 2-я цифра номера версии увеличивается в каждой версии выпуска. 3-я цифра номера версии увеличивается один раз за каждую бета-версию. всякий раз, когда цифра увеличивается, все цифры дальше справа сбрасываются до 0.




7. как это работает:


это dll плагина fose. по сути, это взломает последствия.

7.1: Управление fps:
код управления fps отслеживает скорость кадров и регулирует поток игрового времени. он уменьшает заикание, заставляя логику игры не пропускать вперед, когда она заикается. эффективно, кадры, которые занимают много времени, в конечном итоге находятся в замедленном съемке. это делается, заставляя эффект эффекта действовать так, как будто ifpsclamp установлен на минимальный уровень в секунду, но только для кадров, которые медленнее минимального уровня в секунду. это также может улучшить стабильность. он также может установить максимальную скорость кадров — некоторые люди воспринимают эффект более плавным, когда его скорость кадров не превышает половину частоты обновления, плюс это помогает высвободить ресурсы для вторичных потоков эффекта.

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

7.2: критические разделы:
критические разделы — это примитивы синхронизации потоков, предоставленные Microsoft, которые fallout использует внутри, чтобы убедиться, что потоки случайно не повреждают друг друга. Fsr по умолчанию заставляет большинство критических разделов пытаться играть справедливо даже за счет пропускной способности, убедясь, что ни один поток не помещает ресурсу, необходимым другим потокам. однако один конкретный критический раздел переопределяется для использования немного менее справедливого метода, а другой конкретный критический раздел подавляется так, что он вообще не имеет эффекта. и это все очень настраиваемо из файла ini. также спинконты переменяются.

7.3: Замена кучи:
эта функция пока не работает должным образом на Fallout 3.

7.4: хэштаблицы:
Follout включает в себя кучу хэш-таблиц для поиска всевозможных вещей. они используют вообще ужасную реализацию хэштаблиц, но реальная проблема в том, что они никогда не меняют размер своих хэштаблиц. когда хэштаблица становится переполненной, производительность снижается. если хэштаблица находится под контролем, небольшая память может быть потрачена впустую. к сожалению, большая часть кода хэштаблицы встроена повсюду, и Fose делает различные предположения и о хэштаблицах, и мне совсем не понятно, какой должна быть соответствующая модель потоков, поэтому безопасное их изменение довольно сложно..

тем не менее, у меня есть несколько крючков для хэштабов, и они постепенно становятся лучше. Fsr может увеличить размер хэштаблиц, как только они станут переполненными. Однако изменение их размера чревато проблемами — это может вызвать сбои или сбои, и методы, которые я использую, чтобы предотвратить это, могут вызвать небольшие заики производительности или другие сбои или сбои. тем не менее, на данный момент я думаю, что это может работать довольно прилично. в будущем я могу заменить или дополнить это переопределением начальных размеров определенных хэштаблиц.


====================================
8. Кредиты:
====================================

этот плагин был сделан мной (Кристофер Доти-Хамфри).

это было бы невозможно без огромных усилий, предпринятых командой. Кроме того, Иан Паттерсон (парень из команды Fose) помог мне преодолеть многие места, где у меня были проблемы.

оригинальный поток, который побудил меня запустить этот плагин, был запущен с помощью deviuscreed.

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

Я также хотел бы поблагодарить Badhair за то, что указал мне на переполненные хештаблицы как на причину проблем с производительностью.

При создании этого плагина использовались следующие инструменты:
забвение/падение, Bethesda
OBSE/fose и исходный код OBSE/fose
Microsoft Visual C 2008 экспресс версия
IDA Free (интерактивный отладчик, бесплатная версия, версия 4.9)
чит-движок (версия 5.4)
плюс очевидные вещи, такие как Windows XP, блокнот и Firefox.

За исключением oblivion/fallout и windows xp, все они доступны бесплатно.

Я также порекомендовал мне шестисторонний семинар и ollydbg, но еще не пришел их попробовать.
Этот инструмент предоставлен сторонним разработчиком [bufftool]Внимание (Нормальное)

Загрузите моды сейчас

Установите LagoFast, запустите Fallout 3 - Game of the Year Edition и играйте с модами, которые вам нравятся.