Se requiere FOSE. Mejora la tartamudez y/o el rendimiento.
Eliminador de tartamudez por radiación
Versión 4.0.7
El SkyRanger-1
Tema del foro: http://www.bethsoft.com/bgsforums/index.php? showtopic=1069833
Página de TESnexus: http://www.fallout3nexus.com/downloads/file.php? id=8886
Este es un plugin de FOSE y solo funciona con FOSE 1.2 beta 1 o posterior.
Esto solo funciona con la versión 1.7 de Fallout 3.
0. Contenido:
====================================
0. Contenido
1. Descripción general
2. Instalación
3. Desinstalar
4. Cambios de configuración comunes
5. Todos los ajustes
6. Historial de versiones
7. Cómo funciona esto
8. Créditos
I. Descripción general:
Este complemento hace que Fallout 3 sea menos "tartamudeante" y generalmente se sienta más fluido o se comporta mejor. Puede prevenir o mitigar muchos problemas relacionados con el tartamudeo y la velocidad de fotogramas, y puede reducir la frecuencia de los bloqueos relacionados con el tartamudeo. Para más detalles, ver sección 7: Cómo funciona esto.
Sin embargo, tenga en cuenta que esto normalmente no solucionará ningún problema con sus controladores, hardware o códecs; si usted tiene una causa subyacente del bajo rendimiento, esto puede no ayudar mucho.
Este es un puerto para el eliminador de tartamudeos olvidados (OSR), que se utiliza para la radiación. Hasta ahora, no es tan eficaz como el eliminador original de tartamudez olvidado, pero debería ayudar.
Esto debería ser compatible con todo. La única cosa a tener en cuenta es que los mods que monitorean el FPS no medirán con precisión el FPS fuera del rango objetivo establecido por este plugin (por defecto 10 a 30). De hecho, incluso un FPSE que se acerca solo a un objetivo de FSR puede ser difícil de medir.
2. Instalación:
====================================
El proceso de instalación es:
1.A. Si la versión de FSR que está instalando es un archivo. zip, simplemente arrastre la carpeta "Datos" del archivo zip a su carpeta olvidada.
1.B. Si la versión de FSR que está instalando no es un archivo. zip, entonces debe colocar el archivo sr_Fallout_Stutter_Remover.dll en la carpeta Fallout\Data\fose\plugins. Si no tienes una carpeta como esta, crearla. Si está instalada una versión anterior de FSR, elimine su archivo ini (Data\fose\plugins\sr_Fallout_Stutter_Remover.ini). Si no existe un archivo ini de FSR existente, entonces FSR generará un nuevo archivo ini la próxima vez que ejecute Fallout, con la configuración adecuada para su versión.
3. Desinstalar:
Simplemente elimine el archivo sr_Fallout_Stutter_Remover.dll de la carpeta Data\fose\plugins.
También es suficiente mover este archivo a otro directorio.
4. Cambios de configuración comunes
====================================
En general, FSR intenta tener ajustes predeterminados decentes para que los usuarios no tengan que jugar con ellos. Sin embargo, en algunas configuraciones, los valores predeterminados pueden no funcionar para usted, ya sea porque los valores predeterminados no son de su gusto o porque FSR hace suposiciones incorrectas sobre su computadora.
FSR guarda su configuración en el archivo Data\fose\plugins\sr_Fallout_Stutter_Remover.ini
Si el archivo no existe, simplemente inicie Fallout con FSR instalado y FSR generará un nuevo archivo con los ajustes predeterminados para su versión de FSR. Si te equivocas con tu configuración o quieres volver a la configuración predeterminada, simplemente elimine este archivo ini e inicie Fallout.
Puede encontrar información general sobre las configuraciones en la sección 5, así como información más completa sobre cada configuración individual.
Los ajustes que más probablemente desee cambiar son:
FPS_Management\MaximumFPS: (por defecto 30, considere cambiar a 0 u otro valor)
Algunas personas simplemente no quieren que su frecuencia de fotogramas sea limitada. Puede desactivar el límite de FPS estableciéndolo en 0. Además, si la frecuencia de actualización de la pantalla mientras juega con Fallout no es de 60 Hz, puede intentar cambiarla a la frecuencia de actualización de la pantalla, o la mitad de la frecuencia de actualización de la pantalla, o un tercio de la frecuencia de actualización de la pantalla. Si Master\bManageFPS cambia a 0, esta configuración no será válida.
Hashtables\bAllowDynamicResizing: (0 por defecto, considere cambiarlo a 1)
Activar esto puede mejorar significativamente el rendimiento general/FPS de un juego muy modificado. Desafortunadamente, puede causar condiciones de carrera y confusión general, especialmente cuando un script que utiliza ciertos comandos fose se ejecuta cada fotograma. Traté de reducir las posibilidades de que algo salga mal a cero, pero... Esto puede requerir más trabajo. Mientras tanto, esta función está desactivada por defecto. Esta configuración no será válida si Master\bHookHashtables se cambia a 0.
Inhibición de la sección crítica: (especial)
Por defecto, el FSR suprime una parte crítica específica, sin la cual la radiación parece funcionar mejor. Hay otra parte crítica relacionada, algunos usuarios parecen ser capaces de suprimir sin causar problemas, pero otros usuarios experimentan CTD u otros problemas en la transición interna-> externa al suprimir. Eso solo producirá una pequeña mejora en el tartamudeo, así que normalmente no recomiendo suprimirlo, pero si quieres, puedes. Para suprimirlo, encuentre la línea que dice "CallerAddress = 0x70172A" en el archivo ini y agregue una nueva línea que dice "Mode = 5" después de ella. Tenga en cuenta que los casos son importantes allí... Debería ser "patrón", no "patrón". Esta configuración no es válida si Master\bHookCriticalSections o CriticalSections\bUseOverrides se establece en 0.
Nota: la parte tachada justo encima del archivo README es para olvidar, no para irradiar; Existe un equivalente para la radiación, pero no he encontrado su valor exacto. Ignora esto por ahora.
5. Todos los ajustes
====================================
FSR guarda su configuración en el archivo Data\fose\plugins\sr_Fallout_Stutter_Remover.ini
Si el archivo no existe, simplemente inicie Fallout con FSR instalado y FSR generará un nuevo archivo con los ajustes predeterminados para su versión de FSR. Si te equivocas con tu configuración o quieres volver a la configuración predeterminada, simplemente elimine este archivo ini e inicie Fallout.
Tenga en cuenta que el formato de los archivos ini de FSR cambia entre las principales versiones de FSR; no debe utilizar los archivos ini de la versión 1 de FSR con la versión 2 de FSR, etc. En FSR 2, los archivos ini están organizados en secciones como "Nombre de sección {Nombre de configuración=Valor}". Una configuración específica puede denominarse SectionName\SettingName para distinguirla de otras configuraciones con el mismo nombre en una sección diferente. En general, los ajustes cuyos nombres comienzan con "i" son valores enteros (es decir, números sin puntos decimales), los ajustes cuyos nombres comienzan con "b" son valores booleanos (es decir, 0 o 1), y los ajustes que comienzan con "f" son números que pueden tener puntos decimales (es decir, 3,14). Algunos ajustes no comienzan con una de estas letras, en cuyo caso puede no estar claro cuál es el tipo de valor correcto.
Aquí están los ajustes y sus valores predeterminados actuales (que pueden no estar 100% actualizados):
SECCIÓN: PRINCIPAL{}
Esta sección contiene una opción para deshabilitar cada uno de los subsistemas principales del FSR, así como algunas configuraciones que no pertenecen a ningún subsistema específico del FSR.
Master\bManageFPS (valor predeterminado: 1)
Establecer esto en 0 deshabilitará todo el contenido de gestión de FPS, haciendo que cada configuración en la sección FPS_Management no tenga sentido.
Master\bHookCriticalSections (valor predeterminado: 1)
Establecerlo en 0 deshabilitará todas las secciones críticas, haciendo que cada configuración en la sección CriticalSections no tenga sentido.
Master\bHookLightCriticalSections (valor predeterminado: 1)
Ajustarlo a 0 deshabilitará el contenido de todas las secciones LightCriticalSections, haciendo que cada configuración en la sección LightCriticalSections no tenga sentido.
Master\bHookHashtables (predeterminado: 1)
Establecer esto en 0 deshabilitará todo el contenido de la tabla hash, haciendo que cada configuración en la sección CriticalSections no tenga sentido.
Master\bReplaceHeap (valor predeterminado: 0)
Configurarlo en 1 habilitará la sustitución del montón, haciendo que la configuración en la sección del montón tenga sentido.
Master\bLogToConsole (valor predeterminado: 0)
El FSR registra una variedad de información en sus archivos de registro. Cambiar esta configuración a 1 hará que FSR también imprima esta información en la consola.
El archivo de registro es sr_Fallout_Stutter_Remover.log en el directorio Fallout. Se crea o sobrescribe cada vez que se ejecuta un FSR en el que está instalado.
Master\bfix64 Hz (valor predeterminado: 1)
Establezca esto en 1 para solucionar un problema en la radiación que causa un "microtartamudeo". Este problema a veces se conoce como el "problema de 64 Hz". Específicamente, el problema es que la temporización lógica del juego Fallout suele ocurrir con una resolución de 1/64 de segundo, y cuando la vsync está limitada, la frecuencia de actualización de la pantalla normalmente permite que Fallout dibuje 60 fotogramas por segundo. Cuando la velocidad de fotogramas alcanza su máximo, esta combinación produce una frecuencia de latidos en la que el tiempo de juego de 4 fotogramas por segundo es el doble de 56 fotogramas. La reparación aplicada por FSR obliga a la radiación a utilizar el tiempo con una resolución de 1/1000 de segundo en lugar de 1/64 de segundo.
Master\bFlushLog (valor predeterminado: 1)
Esto le dice al FSR que escriba inmediatamente cualquier mensaje de registro en su archivo, en lugar de almacenarlos en memoria intermedia. Puede degradar ligeramente el rendimiento debido al mayor número de accesos al disco, pero hace más probable que cualquier mensaje relacionado con un problema que ocurrió poco antes del bloqueo se escriba con éxito en el archivo de registro.
Master\iSchedulingResolution (valor predeterminado: 1)
El FSR solicitará al programador de Windows que se ejecute con tantos milisegundos de resolución. El FSR y la radiación generalmente funcionan mejor con este ajuste a 1. Sin embargo, esto puede reducir ligeramente la vida útil de la batería de la computadora portátil.
Capítulo: FPS_Gestión {}
Esta sección contiene configuraciones para ajustar cómo FSR gestiona la velocidad de fotogramas y el flujo de tiempo de juego.
FPS_Management\bAllowSlowMotion (valor predeterminado: 1)
Ajustar esto a 0 evitará que el FSR intente sobrescribir el flujo normal de tiempo de juego. En el pasado, el FSR haciendo esto causaba algunos errores (el más notorio es el error de conversión de células muertas de los NPC cercanos), pero estos ahora se cree que han sido arreglados. En el caso de que sospeche que puede haber un problema, puede usar esta configuración para forzar la deshabilitación de todos los ajustes de tiempo de juego de FSR. A pesar del nombre, establecerlo en 0 también impide que FSR avance rápidamente en el tiempo de juego, aunque FSR solo intenta hacerlo con combinaciones muy raras de configuraciones y entornos.
FPS_Management\MaximumFPS (valor predeterminado: 30)
Este es el FPS máximo que el FSR no permite que la radiación exceda. Normalmente lo establezco en una velocidad de fotogramas lo suficientemente alta para que no me importe demasiado ninguna cantidad de fotogramas adicionales por segundo. Tenga en cuenta que el FSR realmente no se ocupa de "fotogramas por segundo" aquí, sino que convierte el valor en milisegundos por fotograma y considera cada fotograma individualmente. Si un cuadro se completa demasiado rápido, entonces el FSR hará que el hilo principal irradiante vaya a dormir hasta que haya transcurrido el número correcto de milisegundos. Poner el hilo principal de Fallouts en estado de suspensión libera recursos para su uso por el hilo en segundo plano de Fallouts u otros programas que pueden ejecutarse en segundo plano. Si nada quiere usar recursos adicionales, entonces su CPU y/o GPU se ejecutará más frío y utilizará menos energía.
FPS_Management\MinimumFPS (valor predeterminado: 10)
Esta es la FPS más baja por debajo de la cual el FSR no permite que la radiación caiga. Sin embargo, esto no se trata de segundos reales, sino de segundos de tiempo de juego. Por lo tanto, si su PC es realmente lento, todavía puede tener un FPS de 1, pero esto ralentizará el tiempo de juego al 10% del tiempo normal, de modo que el tiempo de juego siempre tendrá al menos 10 fotogramas por segundo. Todos los números son solo un ejemplo, basados en un FPS real de 1 y un ajuste mínimo de FPS de 10 (valor predeterminado). Tenga en cuenta también que, al igual que MaximumFPS, esto realmente funciona en una base de fotograma único, tratando milisegundos por fotograma en lugar de fotogramas por segundo.
Normalmente lo establezco en un FPS más bajo que siento que puedo jugar de forma remota. El mayor propósito de esta configuración es evitar que la lógica del juego de Fallout se vuelva loca cuando el FPS es demasiado bajo. Los problemas que esto previene incluyen combates imposibles porque los enemigos pueden correr alrededor de usted entre fotogramas, arruinar los controles porque Fallout piensa que las teclas de ataque están apagadas o no apagadas durante todo el fotograma, lo que puede causar un ataque de fuerza en el momento de una intención de ataque, y muchos otros problemas similares.
FPS_Management\iSmoothFrames (predeterminado: 0)
Si se establece esto en 0, la lógica de "suavizado" no hace nada. Para activar la lógica de suavización, intente establecerla en 2. Sin embargo, el informe muestra que la lógica suavizada no tiene mucho valor. La lógica de suavización está diseñada para evitar diversos problemas causados por tartamudeos y otros cambios rápidos en la velocidad de fotogramas. Si bAllowSlowMotion es 0, la lógica de suavizado no funcionará.
FPS_Management\iSmoothMode (valor predeterminado: 0)
Esto debería ser 0, 1, 2 o 3. Si es 0 o 1, entonces habilitará alguna lógica adicional para tratar de filtrar los eventos de tartamudez del flujo de tiempo. Esta lógica puede causar que la cantidad total de tiempo de juego no sea exactamente igual a la cantidad total de tiempo real si el FPS cae repentinamente. Si es 2 ó 3, entonces se desactivan los bits lógicos adicionales. La diferencia entre 0/2 y 1/3 es una cuestión muy delicada de qué tramas redistribuyen el tiempo entre ellos y cómo.
FPS_Management\iSleepExtra (predeterminado: 2)
El FSR obligaría a la radiación a dormir por tantos milisegundos por segundo. Esto ayuda a liberar recursos para subprocesos en segundo plano u otros procesos, o reduce ligeramente la temperatura y el consumo de energía de los componentes de la computadora. El principal beneficio es que si un hilo en segundo plano está tratando de obtener un recurso específico ocupado por el hilo principal, esto puede darle la oportunidad de obtener ocasionalmente ese recurso.
Si esto se establece a -1, entonces el código de gestión de FPS de FSR nunca dejará dormir la radiación-si el FPS excede el FPS máximo, entonces el FSR perderá tiempo en el ciclo de inactividad. Este modo no se recomienda porque es solo para propósitos de prueba.
FPS_Management\bFPSConsoleSPAM (valor predeterminado: 0)
Esto dará como resultado que el FSR grabe el tiempo requerido para completar cada trama. Se ejecutará una vez por fotograma, dando lugar a una gran cantidad de tiempo de grabación.
FPS_Management\iSchedulingParanoia (predeterminado: 1)
Esta configuración se muestra en milisegundos. Determina el grado de paranoia del código MaximumFPS hacia el programador. Si el valor es alto, entonces el código MaximumFPS nunca dormirá, sino que perderá tiempo en un ciclo inactivo. Si el valor es 0, el código MaximumFPS confía en el planificador para reanudar la ejecución del hilo principal en el momento completamente solicitado. En general, me comprometería en el punto 1, ya que soy un poco paranoico con el programador, pero aún así permitiendo que una gran cantidad de tiempo libre se utilice constructivamente.
FPS_Management\iHardMaxFrametime (valor predeterminado: 200)
Esto se mide en milisegundos. Se ha descubierto que cuando mi código de ajuste de flujo de tiempo pone demasiado tiempo en el momento equivocado, suceden cosas extrañas. Malas cosas. Como, los NPC cercanos murieron al azar. Este ajuste evita esto estableciendo el número de milisegundos que el FSR permite pasar en un procedimiento normal al máximo absoluto. Normalmente, usted alcanzará el mínimo FPS antes de alcanzar este límite, pero en algunos casos el mínimo FPS se exime para evitar efectos secundarios como el movimiento de los labios fuera de sincronización con el sonido, así que este es el segundo nivel del mínimo FPS, y realmente soy el mínimo FPS. Establecer demasiado bajo puede causar que los movimientos de los labios no estén sincronizados en el diálogo, y establecer demasiado alto puede causar errores como la muerte aleatoria de los PNJ. Tomé 200 como un compromiso-no debería causar que los labios se dessincronizen, a menos que la velocidad de fotogramas caiga por debajo de 5 en la conversación. Si estás jugando a Fallout a una velocidad de fotogramas inferior a 5, entonces necesitas ayuda real.
Sección: Sección clave {}
Esta sección describe todos los cambios realizados por FSR en Fallouts CRITICAL_SECTIONs. ¿Quieres conocer el objeto CRITICAL_SECTION? Fallout los utiliza para evitar que sus diversos hilos se maten entre sí accidentalmente. Microsoft les proporcionó el código. Fallout utiliza una versión ligeramente diferente, dependiendo de la versión de Windows que se ejecuta. Puedes leer más sobre ellos en MSDN.
CriticalSections\bEnableProfiling (valor predeterminado: 0)
Si se establece en 1, el FSR registrará información sobre el tiempo/rendimiento de la operación de la parte crítica de la radiación. Hacerlo tendrá un impacto pequeño pero significativo en el rendimiento. FSR registrará la información en sus archivos de registro. Esto puede producir información útil sobre por qué su radiación tartamudea o se ejecuta lentamente. Esta información puede ser utilizada para ajustar la sección de superposición u otro contenido del archivo FSR ini.
CriticalSections\bEnableMessages (valor predeterminado: 0)
Si se establece en 1, el FSR registrará información sobre algunos eventos de temporización/rendimiento de la sección crítica. El costo de rendimiento de esto es bajo, pero puede confundir el archivo de registro, lo que dificulta encontrar partes no críticas de la información.
CriticalSections\bUseOverrides (valor predeterminado: 1)
Si esto se establece en 1, entonces el FSR utilizará los ajustes en la sección de superposición de ini para determinar qué debe hacerse con una sección crítica específica.
CriticalSections\iDefaultMode (valor predeterminado: 2)
Esto determina cómo el FSR maneja las partes críticas que no tienen entradas de esquema en la lista de cobertura.
1: Coloca a la parte crítica en un comportamiento aproximadamente normal.
2: Ajusta la sección crítica a expensas del rendimiento para mejorar la equidad. Esto evita que un hilo ocupe demasiado la sección crítica, pero la tasa neta se puede usar para completar la operación con la sección crítica.
3: Intenta hacer un compromiso entre la equidad y el rendimiento, donde normalmente se optimiza para el rendimiento, pero ocasionalmente cambia el comportamiento para optimizar la equidad.
5: Se suprime la sección crítica. La supresión de las partes críticas generalmente conduce al colapso de la radiación, pero también generalmente mejora el rendimiento. Sin embargo, algunas partes clave pueden verse afectadas de manera diferente.
6: El hilo principal obtiene la prioridad de esta sección crítica.
7: El hilo de fondo obtiene prioridad en esta sección crítica.
CriticalSections\iDefaultSpin (valor predeterminado: 500)
Esto afecta la cantidad de tiempo que un hilo intenta entrar en una sección crítica antes de solicitar al programador que la ponga en estado de suspensión hasta que la sección crítica se vuelva disponible. En teoría, un valor demasiado pequeño conduce a una sobrecarga excesiva del planificador, mientras que un valor demasiado grande conduce al desperdicio de ciclos de CPU. Creo que 500 es en realidad un valor muy pequeño. El valor ideal puede aumentar a medida que aumenta el número de hilos de núcleo/hardware.
CriticalSections\iStutterLevel (valor predeterminado: 4)
Este parámetro afecta a la frecuencia del comportamiento de conmutación del modo 2 de sección crítica. Para obtener más información sobre el modo de sección crítica 2, consulte iDefaultMode. Los números más pequeños indican conmutaciones frecuentes y los números más grandes indican conmutaciones poco frecuentes. El valor ideal debería estar entre 3 y 6.
Sección: LightCriticalSections {}
Esta sección describe todos los cambios realizados por FSR en una clase de objetos radiantes que tienen un propósito similar a CRITICAL_SECTIONs, pero son más ligeros.
LightCriticalSections\bFullHooks (predeterminado: 0)
Si se establece en 1, esto abrirá una versión más completa del gancho de sección crítica ligera. Desafortunadamente, la versión más completa todavía tiene defectos, por lo que actualmente está desactivada por defecto.
LightCriticalSections\bEnableProfiling (valor predeterminado: 0)
Si se establece en 1, el FSR registrará información sobre la temporización/rendimiento de la operación de la zona crítica ligera en la radiación. Hacerlo tendrá un impacto pequeño pero significativo en el rendimiento. FSR registrará la información en sus archivos de registro. Esto puede producir información útil sobre por qué su radiación tartamudea o se ejecuta lentamente. Esta información puede ser utilizada para ajustar la sección de superposición u otro contenido del archivo FSR ini.
LightCriticalSections\bEnableMessages (valor predeterminado: 1)
Si se establece en 1, el FSR registrará información sobre algunos eventos de temporización/rendimiento para la sección crítica ligera. El costo de rendimiento de esto es bajo, pero puede confundir el archivo de registro, lo que dificulta encontrar partes no críticas de la información.
LightCriticalSections\bUseOverrides (valor predeterminado: 1)
Si esto se establece en 1, entonces el FSR utilizará los ajustes en la sección de superposición de ini para determinar qué debe hacerse con una sección crítica específica. La sobrescrición no será válida a menos que el gancho LCS completo esté habilitado (bFullHooks arriba).
LightCriticalSections\iDefaultMode (valor predeterminado: 2)
Esto determina cómo el FSR ilumina las partes críticas que no tienen entradas de modo en la lista de superposición. Intenta usar un esquema de numeración de patrones similar al de las secciones críticas-ver CriticalSections\iDefaultMode arriba para más información. Dependiendo de si bFullHooks está habilitado o no, algunos modos pueden comportarse de manera diferente.
LightCriticalSections\iDefaultSpin (valor predeterminado: 500)
Esto determina cómo el FSR ilumina las partes críticas de la lista de superposición que no tienen entradas rotadas. Intenta tener un significado similar al de la sección crítica-ver CriticalSections\iDefaultSpin arriba para más información. El significado de la rotación puede variar dependiendo de si bFullHooks está habilitado o no.
LightCriticalSections\iStutterLevel (predeterminado: 4)
Este parámetro afecta a la frecuencia del comportamiento de conmutación del modo 2 de la sección crítica ligera. Para obtener más información sobre el modo de sección crítica 2, consulte iDefaultMode. Los números más pequeños indican conmutaciones frecuentes y los números más grandes indican conmutaciones poco frecuentes. El valor ideal debería estar entre 3 y 6.
Sección: montón {}
Esta cosa aún no funciona contra la radiación. No utilice.
Sección: Tabla de hash {}
Fallout incluye un montón de tablas hash para encontrar todo tipo de contenido. Usan una implementación de tabla hash que suele ser mala, pero el verdadero problema es que nunca cambian el tamaño de la tabla hash. Cuando la tabla de hash está sobrellena, el rendimiento se degrada. Si la tabla de hash es insuficiente, entonces puede desperdiciar un poco de memoria y la coherencia de la memoria caché puede disminuir. Desafortunadamente, muchos de los códigos de tablas hash están en línea en todas partes, y FOSE también hace varias suposiciones sobre las tablas hash, y no tengo ninguna idea clara de cuál debería ser el modelo de subprocesamiento relevante, por lo que cambiarlos de forma segura es bastante difícil. A pesar de esto, tengo algunos ganchos de tabla de hash y gradualmente están mejorando.
Hashtables\bAllowDynamicResizing (valor predeterminado: 0)
Si se establece en 1, entonces FSR aumentará su tamaño una vez que las tablas de hash estén sobrecargadas. Sin embargo, el comportamiento de cambiar su tamaño está lleno de problemas: puede causar caídas o fallas, y el método que uso para evitar que lo haga puede causar pequeñas interrupciones de rendimiento u otros caídas o fallas. No obstante, en este punto, creo que puede funcionar un poco decentemente.
Hashtables\bUseOverrides (predeterminado: 0)
Actualmente no hay reescrituras de tablas hash, y la sintaxis para especificarlas es torpe. Si ingresa un valor incorrecto, es posible que falle silenciosamente y realice otras operaciones. Sin embargo, esto eventualmente se resolverá, permitiendo que los ganchos especificados por el archivo ini ingresen a la inicialización de las tablas hash más importantes, de modo que comiencen con un tamaño adecuado en lugar de necesitar cambiar de tamaño más tarde.
Hashtables\bEnableProfiling (valor predeterminado: 0)
Esto supervisará las tablas de hash y registrará información sobre cuán llenas están y cuánto se han accedido.
Hashtables\bEnableMessages (predeterminado: 0)
Si esto es 1, entonces el código de la tabla hash puede registrar ocasionalmente mensajes sobre lo que está haciendo.
Hashtables\iHashtableResizeScale1 (valor predeterminado: 2)
Hashtables\iHashtableResizeScale2 (valor predeterminado: 4)
Si bAllowDynamicResizing es 1, iHashtableResizeScale1 determinará el nivel mínimo de ocupación para el cambio de tamaño de la tabla hash y iHashtableResizeScale2 determinará cuánto mayor será su nuevo tamaño. Ambos números son en realidad exponentes aplicados a 2, por lo que establecer 3 significa un factor de 8 y establecer 5 significa un factor de 32. En teoría, reducir iHashtableResizeScale1 a 1 podría mejorar aún más el rendimiento, ya que aumentaría el tamaño de más tablas de Doch. ihasTableResizeScale2 probablemente debería establecer 1 o 2 más que ihasTableResizeScale1.
Hashtables\ihashtableSizeDelay (valor predeterminado: 20)
Este es el número de milisegundos que FSR se pausará cuando se cambie el tamaño de la tabla hash. La idea es que aunque no puedo evitar que otro hilo acceda a la tabla hash cuando estoy ocupado con ella, puedo, esperamos, evitar que * empiecen * a acceder a la tabla hash. Así que retraso lo suficiente para que tal vez, tal vez, cualquiera que ya tenga acceso a la tabla hash terminará, y entonces hago mis cosas. Desafortunadamente, esto no funciona en FOSE, porque FOSE no hace lo que Fallout hace, e incluso si lo hace, no usa vtables para hacer esas cosas. Pero atm creo que FOSE probablemente solo acceda a ellos desde el hilo principal, así que si mi resizer se ejecuta en el hilo principal, entonces no tiene que preocuparse por FOSE. Tal vez.
SECCIÓN: COBERRE {}
Esta sección contiene información que le dice a FSR cómo encontrar instancias específicas de varios tipos de objetos que FSR conoce y cómo diferenciar estas instancias específicas de la configuración predeterminada de ese tipo de objeto. En este momento, sólo hay algunas secciones clave específicas que se enumeran aquí, y se comportan de manera diferente a la mayoría.
6. Historial de versiones:
====================================
FPS Capper Versión 1:
Esto se conoce como una máquina de tapado FPS. Todo lo que hace es gestión de FPS. Esta versión está integrada en un conjunto de archivos DLL OBSE modificados.
FPS Capper Versión 2:
Esta es la primera versión en tener una dll independiente de OBSE. Esto se conoce como una máquina de tapado FPS. Todo lo que hace es gestión de FPS.
Oblivion Stutter Remover versión 3 beta 1:
La primera versión se llamó Oblivion Stutter Removal. A veces se congela en el menú principal durante unos minutos. La voz y los movimientos faciales de los PNJ se arruinarán en el diálogo.
Versión 3 beta 2: La voz y los movimientos faciales de los NPC se arruinarán en los diálogos.
Oblivion Stutter Remover versión 3 beta 6:
Hubo un largo retraso entre la beta 5 y la beta 6, llenado por muchas versiones alfa. Esta es la primera versión de FSR que realmente reduce el tartamudeo para el usuario promedio. Esto se debe a las nuevas características: ajuste de equidad de sección crítica, supresión de sección crítica y reemplazo de montón. Desafortunadamente, el reemplazo de montón sigue siendo un problema importante para muchos usuarios. bFix64Hertz está configurado en 0 por defecto en ini, debería ser 1.
Nota: Nunca ha habido una versión final de la versión 3. Si hay suficiente demanda, puedo hacer algunas correcciones basadas en el código fuente de la versión 3 beta 6.
Radiation Stutter Remover versión 1 beta 1:
OSR al puerto inicial de la radiación.
Eliminación de tartamudeos de olvido/radiación Versión 4.1.0:
Principales cambios:
1.Soporte para Fallout y Forget en la misma base de código:No ofrece muchos beneficios en Fallout 3, pero ayuda.
2.Archivo. ini: Formato de archivo ini completamente diferente
3.Redimensionamiento de la tabla hash: NUEVAS FUNCIONES PARA MEJORAR EL RENDIMIENTO
4.Sección crítica y sección crítica ligera:Se resumen muchos casos especiales de las secciones clave, y ahora se pueden realizar más ajustes desde el archivo ini. Todavía hay problemas con el "gancho completo" para el código de sección crítica ligera.
5.Reemplazo de montón: Se corrigieron algunos errores, pero creo que todavía tiene problemas. Todavía no funciona contra la radiación.
6.Nombre de la versión:Las versiones lanzadas a tesnexus ahora se conocen como versiones de lanzamiento, en lugar de versiones beta. La versión publicada en mi servidor ftp ahora se llama versión beta, no versión alfa. El primer dígito del número de versión solo se incrementa cuando se produce un cambio significativo en la configuración o el formato de distribución. El segundo dígito del número de versión se incrementa en cada versión. El tercer dígito del número de versión se incrementa una vez para cada versión beta. Cada vez que se incrementa un número, todos los números de la derecha se restablecen a 0.
7. Cómo funciona esto:
Este es un plugin FOSE dll. Básicamente es radiación de hackers.
7.1: Gestión de FPS:
El código de gestión de FPS supervisa la velocidad de fotogramas y ajusta el flujo de tiempo de juego. Alivia la tartamudez haciendo que la lógica del juego de Fallout no salte hacia adelante cuando tartamudea. En la práctica, los fotogramas que tardan mucho tiempo terminarán en cámara lenta. Esto se consigue haciendo que la radiación se comporte como si el iFPSClamp estuviera ajustado a MinimumFPS, pero solo para fotogramas más lentas que MinimumFPS. Esto también puede mejorar la estabilidad. También puede imponer una velocidad de fotogramas máxima-cuando se evita que la velocidad de fotogramas exceda la mitad de la frecuencia de actualización, algunos creen que la radiación será más suave y, además, ayuda a liberar recursos para el hilo auxiliar de radiación.
El código de administración de FPS también permite que el hilo principal de Fallout duerma por un corto período de tiempo, lo que se cree que mejora la tartamudez de algunas personas (aunque esta característica puede ser redundante por otras cosas que hace este plugin).
7.2: Componentes clave:
La sección crítica es una primitiva de sincronización de subprocesos proporcionada por Microsoft, que Fallout utiliza internamente para asegurar que los subprocesos no se rompan accidentalmente entre sí. Por defecto, FSR hace que la mayoría de las secciones críticas intenten igualar el juego, incluso a expensas del rendimiento, asegurando que ningún hilo ocupe los recursos necesarios por otros hilos. Sin embargo, una sección crítica particular se sobrescribe para utilizar un enfoque ligeramente menos justo, mientras que otra sección crítica particular se suprime para hacerla completamente ineficaz. Todo esto se puede configurar desde el archivo ini. El recuento de rotación también se sobrescribe.
7.3: Sustitución del montón:
Esta característica aún no funciona correctamente en Fallout 3.
7.4: Tabla de hash:
Fallout incluye un montón de tablas hash para encontrar todo tipo de contenido. Usan una implementación de tabla hash que suele ser mala, pero el verdadero problema es que nunca cambian el tamaño de la tabla hash. Cuando la tabla de hash está sobrellena, el rendimiento se degrada. Si la tabla hash es insuficiente, entonces puede desperdiciar un poco de memoria. Desafortunadamente, muchos de los códigos de tablas hash están en línea en todas partes, y FOSE también hace varias suposiciones sobre las tablas hash, y no tengo ninguna idea clara de cuál debería ser el modelo de subprocesamiento relevante, por lo que cambiarlos de forma segura es bastante difícil.
A pesar de esto, tengo algunos ganchos de tabla de hash y gradualmente están mejorando. Una vez que las tablas de hash están sobrellenas, FSR aumenta su tamaño. Sin embargo, el comportamiento de cambiar su tamaño está lleno de problemas: puede causar caídas o fallas, y el método que uso para evitar que lo haga puede causar pequeñas interrupciones de rendimiento u otros caídas o fallas. No obstante, en este punto, creo que puede funcionar un poco decentemente. En el futuro, podría reemplazar o complementar esto sobrescribiendo el tamaño inicial de algunas tablas hash.
====================================
8. Créditos:
====================================
Este plugin fue hecho por mí (Christopher Dotty-Humphrey).
Esto no hubiera sido posible sin el enorme esfuerzo del equipo de FOSE. Además, Ian Patterson (miembro del equipo de FOSE) me ayudó a través de muchos lugares donde tuve problemas.
El hilo que inicialmente me pidió que iniciara este complemento fue iniciado por DeviusCreed.
Muchos probadores han proporcionado comentarios útiles. En particular, la información de mashani sobre qué configuraciones produjeron qué resultados para él me ayudó a entender por qué las primeras versiones produjeron beneficios inesperados y llevaron a muchas características y configuraciones en versiones posteriores.
También me gustaría agradecer a badhair por señalarme que una tabla de hash sobrecargada es una causa de problemas de rendimiento.
En la fabricación de este plugin se utilizaron las siguientes herramientas:
Olvido/Fallout, por Bethesda
Código fuente OBSE/FOSE y OBSE/FOSE
Microsoft Visual C++ 2008 Express Edition
IDA Free (depurador interactivo, versión gratuita, versión 4.9)
Cheat Engine (versión 5.4)
Añade cosas tan obvias como Windows XP, Bloc de notas y Firefox.
Todo esto es gratuito, excepto Oblivion/Fallout y Windows XP.
También tengo Hex Workshop y ollydbg recomendados para mí, pero todavía no he encontrado el tiempo de probarlo.