Esta es una traducción casi literal del artículo original. Todo el mérito es para Valdacil


EN Esta guía intentaré transmitir mis conocimientos sobre lo que he aprendido de las INNR (reglas de nomenclatura de instancias) de Fallout 4. Estas son las reglas que nombran dinámicamente las armas, armaduras y otros items en función de las modificaciones que tengan. En esta guía explicaré cómo hacer que se ejecute una regla para un objeto, cómo se procesan las reglas y cómo agregar tus propias reglas y condiciones.

Contenido
1) Los Fundamentos
2) Explicación de las instancias de objetos
3) Campos/secciones de los Registros de objetos importantes
4) Modificaciones de objetos
5) Explicación de las reglas de nomenclatura de instancias
6) Flujo de ejemplo de INNR
7) Notas finales
8) Visión general de las etapas al hacer mods

Los Fundamentos
Lo primero que hay que entender sobre las reglas de nomenclatura de instancias (INNR) es que los únicos datos que utilizan para las condiciones son las palabras clave en la instancia del objeto (más sobre las instancias del objeto en la siguiente sección). Así, para cualquier parte del nombre final, debe haber una palabra clave en la instancia del objeto para determinar esa condición. Las palabras clave en FO4 se utilizan en numerosos contextos. Uno que tiene mucha visibilidad en este momento son las palabras clave que se utilizan para definir categorías y menús para fabricación. Estas palabras clave van en la matriz FormList, que tiene un número limitado de entradas. Debido a este límite, habrá problemas para cargar muchos mods que agregan palabras clave a FormLists. Existen numerosos documentos relacionados con este tema. Sin embargo, las palabras clave utilizadas para los nombres dinámicos no contribuyen a esta lista y, por lo tanto, puedes agregar tantas palabras clave como sean necesarias.

Comenzando con un registro básico, usaremos un bate de béisbol. El registro base tiene algunos campos importantes para la asignación de nombres dinámicos: nombre, INRD, palabras clave y OBTE. La importancia de cada uno se describe con más detalle en la sección 3. Sin embargo, en un nivel básico, el INRD le dice al registro qué regla de nomenclatura de instancia se debe ejecutar cada vez que se regenera el elemento. En la regla de nomenclatura de instancias, hay una serie de condiciones. La primera condición que coincide con una palabra clave en el objeto se aplica al nombre. De esta manera, el nombre completo de un objeto específico se puede construir en función de las palabras clave que tiene. Entraré en más detalles sobre cómo funciona exactamente la regla de nomenclatura de instancias en la sección 5.

Explicación de las instancias de objetos
Una cosa importante que hay que entender acerca de los objetos es la instanciación de objetos. Lo que esto significa es que cada vez que se genera un objeto modificable (arma, armadura, cosméticos; por de una lista de niveles, un elemento elaborado o un elemento colocado) se crea una nueva instancia única de ese elemento. Luego, el juego maneja esta instancia de objeto por separado de todas las demás instancias del mismo objeto. Así es como puedes tener una pistola de 10 mm con un visor de reconocimiento y otra pistola de 10 mm con una mira estándar, por ejemplo. Cada una de las pistolas de 10 mm es una instancia única del registro de 10 mm. Cuando se genera la instancia del objeto, la instancia hereda las propiedades del registro base, y a partir de este momento, la instancia única se gestiona de forma independiente. Esta es la razón por la que los cambios en el registro base (como un cambio de nombre) no se reflejan en las instancias de objeto que se generaron antes de que ocurriera el cambio de registro base. Lo que esto significa es que cada instancia de un objeto se puede cambiar (es decir, agregar palabras clave adicionales) según sea necesario para personalizar esa instancia específica del objeto.

Campos/Secciones de registros de objetos importantes
Veamos algunos datos importantes del registro base del bate de béisbol.

FULL - Name: obviamente, el campo de nombre es importante, pero dado que la regla de nomenclatura de instancias en realidad genera el nombre completo, la regla de nomenclatura de instancias puede o no hacer referencia a este campo.
INRD - Unknown: este campo le dice al juego qué regla de nomenclatura de instancia debe ejecutar para generar el nombre de cada instancia de un objeto
Unknown - OBTE: esta sección contiene conjuntos de registros sobre cómo se generan los objetos mediante listas de nivel (leveled lists) o cuando se fabica el objeto. La entrada más básica genera el objeto base sin modificaciones. Puede haber más entradas OBTE para generar el objeto con cualquier combinación de modificaciones previstas para ese objeto. El Combat Knife vanilla, por ejemplo, tiene una entrada OBTE para generar un cuchillo de combate estándar, así como entradas OBTE para generar el cuchillo de combate con modificaciones. Siempre que una lista nivelada incluye el registro base del bate de béisbol, y llama a ese registro para generar un bate de béisbol, tiene la posibilidad de generar una instancia del objeto de cualquiera de las variantes OBTE.
KWDA - Keywords: esta sección enumera todas las palabras clave que se aplican al objeto base. Todas estas palabras clave se copian en la instancia del objeto cuando se genera cada instancia.

Todavía se desconoce exactamente qué hace el número hex en la sección OBTS de la entrada OBTE. Probablemente tendremos que esperar al GECK para saberlo. Sin embargo, una entrada estándar de Parts A = 0; Parts B = 0; Unknown = 00 00 00 00 FF FF 01 y el segundo Unknown = 00 00, genera el objeto con el registro base sin modificaciones. Sin esta entrada, el juego no ejecutará el INNR definido en el campo INRD.

Modificaciones de objetos
Como mencioné antes, las palabras clave son la clave para que el INNR funcione. Cuando se genera un objeto, las propiedades del registro base se copian en la instancia del objeto. A partir de ese momento, esa instancia de objeto se puede modificar independientemente del registro base. Entonces, ¿qué sucede cuando aplicas una modificación a una instancia de un objeto? Echemos un vistazo a un registro de modificación de objeto en FO4. Volviendo al ejemplo anterior con el Combat Knife, veamos el registro mod_melee_Knife_Serrated. En este registro vemos 3 partes principales: una sección de encabezado, una sección de Datos y el MNAM.

MNAM está asociado con una palabra clave ma_* que se aplica a las armas. En este caso, MNAM = ma_Knife. Así, si un arma tiene la palabra clave ma_Knife, entonces esa modificación es aplicable a esa arma. Si volvemos al registro del Combat Knife, verás que tiene la palabra clave ma_Knife en la sección KWDA.

Ahora veamos la sección de Datos de mod_melee_Knife_Serrated. Verás que tiene 4 propiedades. Cada una modifica la instancia del objeto de alguna forma. El primero, por ejemplo, dice:

Value Type = Float
Function Type = Multiple
Weapon Property = AttackDamage
Value 1 - Float = 0.750000
Value 2 - Float = 0.000000
Factor = 0.000000

Esto dice, coge (en la instancia del objeto) el AttackDamage, multiplícalo por 0,75 y agrega ese valor al daño del arma. La siguiente propiedad aumenta el valor de venta del arma si se añade esa modificación. La siguiente propiedad es la importante (para esta guía):

Value Type = FormID,int
Function Type = Add
Weapon Property = Keywords
Value 1 - FormID = dn_HasMeleeMod_Serrated
Value 2 - Int = 1
Factor = 0.000000

Esto agrega 1 instancia de la palabra clave dn_HasMeleeMod_Serrated a la instancia del objeto de este Combat Knife. Ahora que esta instancia específica de Combat Knife tiene esta nueva palabra clave, podemos usarla en la regla de nomenclatura de instancias. Se pueden agregar más palabras clave de esta forma para definir información identificable sobre el objeto para usarla en la INNR.

Explicación de las reglas de nomenclatura de instancias (INNR)
Las INNR funcionan como códigos [if ... then] gigantes. Cada INNR se divide en una serie de grupos, cada uno de los cuales contiene una o más condiciones basadas en palabras clave. Cada grupo corresponde a una posición en el nombre de instancia final. El orden del nombre del artículo está determinado por el orden de estos grupos. ¿Quieres que aparezca el título legendario después del nombre del artículo? Mueve el grupo que contiene todas las condiciones legendarias hasta el final.

Dentro de cada grupo hay una o más condiciones de palabras clave. Estas condiciones actúan como una declaración OR entre sí, con la regla de ejecución en orden de arriba hacia abajo, y aceptando la primera condición que coincida. Una vez que la regla encuentra una condición coincidente, aplica el WNAM para esa condición al nombre de la instancia, luego ignora el resto de las condiciones para ese grupo y pasa al siguiente grupo. Si no se encuentran condiciones coincidentes, ese elemento del nombre de la instancia se ignora y el procesamiento pasa al siguiente grupo.

Cada condición puede tener asignadas cero, una o varias palabras clave. Si la condición no tiene ninguna palabra clave asignada, siempre será verdadera, aplica su WNAM e ignora las condiciones restantes. Si la condición tiene varias palabras clave, éstas siempre actúan como una declaración AND. Todas las palabras clave deben encontrarse en la instancia del objeto para que se aplique esa condición.

WNAM puede ser una cadena de texto que se aplica al nombre de la instancia, en blanco o un carácter especial de asterisco (*). Si se deja en blanco, el INNR omitirá ese elemento del nombre de la instancia para esa condición coincidente. Si WNAM es el asterisco, esto le dice al INNR que aplique el nombre del registro base (FULL) al nombre de la instancia.

Ejemplo del flujo de una INNR
Repasemos el ejemplo del Combat Knife y juntémoslo todo. Comencemos con el registro de Combat Knife. Piezas clave de información:

FULL - Name = Combat Knife
INRD = dn_CommonMelee
KWDA - Keywords: Anims1hmWeapon
  WeaponTypeMelee1H
  AnimsStabWeapon
  Anims1hmShortWeapon
  ObjectTypeWeapon
  QuickkeyMelee
  ma_Knife
 
Para este ejemplo, agregaremos la hoja dentada al cuchillo de combate. Esto usa el registro mod_melee_Knife_Serated, que tiene la siguiente información clave (para este ejemplo):

MNAM = ma_Knife

Hay una propiedad de datos que agrega la palabra clave dn_HasMeleeMod_Serrated a la instancia del objeto como se describe en la sección 4 anterior.

Dado que el mod tiene ma_Knife y el Combat Knife tiene ma_Knife, esta modificación es aplicable. Sabiendo esto, podemos hacer la nueva lista completa de palabras clave en la instancia del objeto:

Anims1hmWeapon
WeaponTypeMelee1H
AnimsStabWeapon
Anims1hmShortWeapon
ObjectTypeWeapon
QuickkeyMelee
ma_Knife
dn_HasMeleeMod_Serrated

Ahora, veamos el INNR dn_CommonMelee, ya que es el definido en el INRD del registro de Combat Knife. En la sección Reglas de Nombrado, puedes ver que el primer grupo tiene todos los efectos legendarios. Si examinas cada uno, verás que ninguno de ellos coincide con la lista de palabras clave anterior. Después de las palabras clave legendarias, en el mismo grupo, hay 3 condiciones que incluyen ma_Baton. No aplicable. Sigamos. La siguiente pareja son ma_DeathclawGauntlet y ma_Ripper. No aplicable. Sigamos. Continúa un poco más y verás uno que tiene dn_HasMeleeMod_Serrated, pero también tiene dn_HasMeleeMod_Shock. Dado que nuestra instancia de Combat Knife no tiene dn_HasMeleeMod_Shock, esta condición tampoco se aplica. Sigamos. Finalmente deberías encontrar una condición única para dn_HasMeleeMod_Serrated por sí misma. Dado que ninguna de las otras condiciones anteriores a esta condición fue verdadera, esta condición se aplica. Entonces aplicamos el WNAM al nombre de nuestro artículo. Hasta ahora, el nombre de nuestro artículo es simplemente: "Dentado"

Dado que cumplimos con las condiciones para una regla en el primer grupo, pasamos al segundo y verificamos las condiciones. Verás que el segundo grupo está compuesto por todas las condiciones dn_HasMaterial_*. Ninguna de éstas se aplica a nuestra instancia de Combat Knife, por lo que el segundo grupo no aporta nada al nombre de nuestra instancia. Hasta ahora, el nombre del elemento sigue siendo: "Dentado"

El tercer grupo tiene 2 condiciones. La primera condición es dn_HasLogo_Swatter. Esta palabra clave no está en nuestra instancia de Combat Knife, por lo que no se aplica. La siguiente condición no tiene palabras clave, lo que significa que se aplica a todos los elementos que no cumplen la primera condición, que es lo que ocurre con nuestra instancia de Combat Knife. El WNAM para esta condición es un asterisco (*), lo que significa aplicar el elemento base FULL a nuestro nombre de instancia. Entonces agregamos un espacio primero, luego agregamos el nombre del elemento base a lo que tenemos hasta ahora. Ahora nos sale un nombre de instancia de "Cuchillo de Combate Dentado" (Serrated COmbat Knife). Como no hay más condiciones, este es el nombre que verás en el juego.

Notas finales
INNR no se ejecuta a menos que algo cambie en la instancia específica del objeto o se regenere la instancia del objeto. Por lo tanto, cualquier cambio realizado en el INNR no se reflejará en los elementos del inventario del jugador, los contenedores o el botín que ya se habían generado antes de que ocurriera el cambio. Por eso, si modificas el INNR, aún puedes encontrar NPCs que usen elementos con nombres que no reflejan los cambios, porque esa instancia del objeto que tienen se generó antes del cambio.

Puede forzar la ejecución del INNR modificando el objeto en el banco de trabajo. Además, si sueltas el artículo cuando estás en un asentamiento, luego entras en el modo de construcción y almacenas el objeto en el taller, cuando lo recuperes tendrá un nombre regenerado.

Puedes reorganizar el orden de las condiciones dentro de los grupos haciendo clic-derecho en una condición y seleccionando Subir o Bajar para reordenarlas según sea necesario. También puedes reordenar los grupos de la misma forma, haciendo clic-derecho en el encabezado del grupo y seleccionando Subir o Bajar. Así es como reorganicé los grupos para que VIS coloque primero el nombre del objeto y luego todas las etiquetas de modificación del objeto.

Descripción general de las Etapas
Conociendo la importancia de las palabras clave como se describió anteriormente, este es el proceso básico que yo haría si estuviera haciendo un arma/armadura/mod cosmético y quisiera que la denominación dinámica funcione correctamente.

1) Crear el objeto base. Asegúrate de definir el registro base OBTE que se discutió anteriormente y con más detalle en la página principal de AWKCR.
2) Incluye palabras clave en el objeto base para identificar ese objeto como diferente de otros. Si no existe una palabra clave para hacerlo, crea una nueva dentro del mod.
3) En cada modificación para tu objeto, utiliza la propiedad Add Keyword para agregar las palabras clave necesarias para indicar que la modificación del objeto está presente. Si las palabras clave necesarias no existen, créalas dentro del mod.
4) Si todas las palabras clave utilizadas son palabras clave vanilla, entonces puede usar el INNR vanilla. De lo contrario, deberías crear un nuevo INNR. Si creas un nuevo INNR, colócalo en el campo INRD de tu registro base.
5) Modifica el INNR (ya sea nuevo o vanilla) para incluir las palabras clave de los pasos 2 y 3 con cualquier palabra que desees concatenar en el nombre dinámico.

Article information

Added on

Written by

kittyowilder

0 comments