vehicles.meta explicado, campo por campo

Por Nilo3D · Actualizado:

vehicles.meta es el archivo XML que registra un modelo de vehículo en GTA V. Cada Item nombra el modelo y su diccionario de texturas, lo enlaza a una entrada de handling y a un layout de asientos, y define su tipo, clase, distancias de LOD y flags de comportamiento. Sin una entrada aquí, el juego no trata un .yft como un vehículo.

¿Qué hace vehicles.meta?

vehicles.meta contiene un <Item> por vehículo dentro de <InitDatas>. Cuando se carga el archivo, el juego crea un modelo de vehículo por cada Item y resuelve todo lo que referencia: la entrada de handling, el layout, las cámaras y la información de explosión. En FiveM se carga con data_file 'VEHICLE_METADATA_FILE'.

Los nombres de las etiquetas de abajo salen del propio esquema de datos del juego, así que son exactos. Una entrada add-on típica empieza como una copia del vehículo original más parecido, con los campos de identidad cambiados.

<?xml version="1.0" encoding="UTF-8"?>
<CVehicleModelInfo__InitDataList>
  <residentTxd>vehshare</residentTxd>
  <residentAnims />
  <InitDatas>
    <Item>
      <modelName>mycar</modelName>
      <txdName>mycar</txdName>
      <handlingId>MYCAR</handlingId>
      <gameName>MYCAR</gameName>
      <vehicleMakeName>KARIN</vehicleMakeName>
      <audioNameHash>sultan</audioNameHash>
      <layout>LAYOUT_STANDARD</layout>
      <cameraName>DEFAULT_FOLLOW_VEHICLE_CAMERA</cameraName>
      <wheelScale value="0.293000" />
      <wheelScaleRear value="0.293000" />
      <HDTextureDist value="5.000000" />
      <lodDistances content="float_array">
        10.000000
        25.000000
        50.000000
        100.000000
        500.000000
        500.000000
      </lodDistances>
      <flags>FLAG_AVERAGE_CAR FLAG_POOR_CAR</flags>
      <type>VEHICLE_TYPE_CAR</type>
      <plateType>VPT_BACK_PLATES</plateType>
      <dashboardType>VDT_SULTAN</dashboardType>
      <vehicleClass>VC_SPORT</vehicleClass>
      <wheelType>VWT_SPORT</wheelType>
      <!-- copy the remaining tags from the stock vehicle you start from -->
    </Item>
  </InitDatas>
  <txdRelationships>
    <Item>
      <parent>vehshare</parent>
      <child>mycar</child>
    </Item>
  </txdRelationships>
</CVehicleModelInfo__InitDataList>

¿Qué campos identifican al vehículo?

Cinco campos enlazan la entrada con los archivos del modelo y con los demás metas, y cada uno tiene que coincidir exactamente con su equivalente.

CampoSignificadoDebe coincidir con
modelNameNombre del archivo del modelo y nombre de spawn.stream/<modelName>.yft
txdNameNombre del archivo del diccionario de texturas.stream/<txdName>.ytd
handlingIdNombre de la entrada de handling que se usa.handlingName en handling.meta
gameNameClave de la etiqueta de texto del nombre mostrado. Se guarda en un búfer de 12 caracteres, así que no pases de 11 caracteres.Una etiqueta añadida con AddTextEntry
vehicleMakeNameClave de la etiqueta de texto del fabricante. Mismo límite de longitud.Etiqueta opcional

handlingId puede apuntar a una entrada de handling original como SULTAN. En ese caso el vehículo no necesita un handling.meta propio.

¿Qué campos controlan los asientos, las cámaras y el sonido?

Estos campos eligen por nombre configuraciones ya hechas. Los nombres se refieren a entradas que ya existen en el juego, o a las que añades en otro archivo meta.

CampoValor por defecto del esquemaSignificado
layoutLAYOUT_STANDARDLayout de asientos de vehiclelayouts.meta: asientos, puntos de entrada y animaciones. Consulta vehiclelayouts.meta explicado.
audioNameHashvacíoNombre de la configuración de audio que se usa, normalmente el nombre de modelo de un vehículo original.
cameraNameDEFAULT_FOLLOW_VEHICLE_CAMERACámara de seguimiento en tercera persona.
aimCameraNameDEFAULT_THIRD_PERSON_VEHICLE_AIM_CAMERACámara que se usa al apuntar desde el vehículo.
bonnetCameraName, povCameraNamevacíoCámaras de capó y de primera persona.
coverBoundOffsetsSTANDARD_COVER_OFFSET_INFOPosiciones de cobertura alrededor del vehículo.
explosionInfoEXPLOSION_INFO_DEFAULTQué configuración de explosión se usa cuando el vehículo estalla.
vfxInfoNameVFXVEHICLEINFO_CAR_GENERICConjunto de efectos visuales (escape, efectos de las ruedas).
numSeatsOverride-1Fuerza el número de asientos; -1 lo deja en manos del layout.

¿Qué significan lodDistances y HDTextureDist?

lodDistances es una lista de seis distancias en metros que deciden qué versión del modelo se dibuja. El primer valor es el alcance del modelo de alto detalle; cuando es mayor que cero, el juego registra además un segundo archivo de modelo llamado <modelName>_hi.

PosiciónNombre internoVersión del modelo que se dibuja hasta esta distancia
1VLT_HDModelo de alto detalle (_hi.yft).
2VLT_LOD0LOD más alto dentro del .yft principal.
3VLT_LOD1Segundo LOD.
4VLT_LOD2Tercer LOD.
5VLT_LOD3Cuarto LOD.
6VLT_LOD_FADEEl vehículo deja de dibujarse. Si es 0, el juego usa el quinto valor.

El Sultan original usa 10, 25, 50, 100, 500, 500. HDTextureDist (5.0 por defecto) es la distancia de las texturas de alta resolución. Los LOD en sí se explican en qué son los LOD en los vehículos de FiveM.

Otros campos de renderizado: wheelScale y wheelScaleRear definen la escala de las ruedas delanteras y traseras, dirtLevelMin y dirtLevelMax (0 a 1) definen lo sucio que aparece el vehículo, diffuseTint es un tinte de color, y damageMapScale y damageOffsetScale (0 a 1) limitan la deformación visual.

Cómo se corresponden las seis distancias con los niveles de LOD del modelo, con los valores que usamos, está en cómo optimizar un vehículo FiveM.

¿Cuáles son los valores válidos de type, vehicleClass y los demás enums?

Cinco campos aceptan, cada uno, un valor de una lista fija. Lo que no esté en la lista no vale.

CampoValores
typeVEHICLE_TYPE_CAR, _PLANE, _TRAILER, _QUADBIKE, _DRAFT, _SUBMARINECAR, _AMPHIBIOUS_AUTOMOBILE, _AMPHIBIOUS_QUADBIKE, _HELI, _BLIMP, _AUTOGYRO, _BIKE, _BICYCLE, _BOAT, _TRAIN, _SUBMARINE
vehicleClassVC_COMPACT (0), VC_SEDAN, VC_SUV, VC_COUPE, VC_MUSCLE, VC_SPORT_CLASSIC, VC_SPORT, VC_SUPER, VC_MOTORCYCLE, VC_OFF_ROAD, VC_INDUSTRIAL, VC_UTILITY, VC_VAN, VC_CYCLE, VC_BOAT, VC_HELICOPTER, VC_PLANE, VC_SERVICE, VC_EMERGENCY, VC_MILITARY, VC_COMMERCIAL, VC_RAIL, VC_OPEN_WHEEL (22)
plateTypeVPT_FRONT_AND_BACK_PLATES, VPT_FRONT_PLATES, VPT_BACK_PLATES, VPT_NONE
wheelTypeVWT_SPORT, VWT_MUSCLE, VWT_LOWRIDER, VWT_SUV, VWT_OFFROAD, VWT_TUNER, VWT_BIKE, VWT_HIEND, VWT_SUPERMOD1 a VWT_SUPERMOD5
dashboardTypeVDT_BANSHEE, VDT_BOBCAT, VDT_CAVALCADE, VDT_COMET, VDT_DUKES, VDT_FACTION, VDT_FELTZER, VDT_FEROCI, VDT_FUTO, VDT_GENTAXI, VDT_MAVERICK, VDT_PEYOTE, VDT_RUINER, VDT_SPEEDO, VDT_SULTAN, VDT_SUPERGT, VDT_TAILGATER, VDT_TRUCK, VDT_TRUCKDIGI, VDT_INFERNUS, VDT_ZTYPE, VDT_LAZER, VDT_SPORTBK, VDT_RACE, VDT_LAZER_VINTAGE, VDT_PBUS2

type tiene que concordar con el handling: un VEHICLE_TYPE_BIKE necesita una entrada de handling con un bloque de sub-handling de moto, un coche necesita un bloque de coche. wheelType decide qué categoría de ruedas ofrece el menú de tuning.

¿Qué hacen los flags de vehicles.meta?

<flags> es una lista de nombres separados por espacios. Cada nombre activa un comportamiento. El esquema define unos 200. En la tabla están los que más tocan los autores de add-ons, con la descripción de los datos del juego.

FlagEfecto
FLAG_HAS_LIVERYEl vehículo tiene liveries; se cambia una textura cuando hace spawn.
FLAG_EXTRAS_ALLSe activan todos los extras adecuados.
FLAG_EXTRAS_REQUIREHay que elegir uno de los extras disponibles.
FLAG_EXTRAS_STRONGLos extras no se desprenden.
FLAG_IS_ELECTRICEl vehículo no tiene depósito de gasolina.
FLAG_NO_BOOTEl vehículo no se tiene en cuenta para el inventario del maletero.
FLAG_IS_VANFurgoneta: las puertas traseras se abren hacia los lados.
FLAG_LAW_ENFORCEMENT, FLAG_EMERGENCY_SERVICEMarca los vehículos de policía y de emergencias.
FLAG_NO_RESPRAYNo se puede repintar en los talleres.
FLAG_CANNOT_BE_MODDEDImpide que el vehículo se modifique.
FLAG_DONT_SPAWN_AS_AMBIENT, FLAG_DONT_SPAWN_IN_CARGENMantiene el vehículo fuera del tráfico ambiental y fuera de los generadores de coches aparcados.
FLAG_DRIVER_NO_DRIVE_BYEl conductor no puede hacer drive-by.
FLAG_HAS_BULLETPROOF_GLASSLos cristales no se pueden romper.
FLAG_RICH_CAR, FLAG_AVERAGE_CAR, FLAG_POOR_CARQué tipos de peds pueden usarse como conductores.
FLAG_HEADLIGHTS_USE_ACTUAL_BONE_POSLos faros usan la posición real del bone.

¿Qué campos afectan al tráfico y al spawn?

Hay un grupo de campos que solo importa cuando es el propio juego el que hace spawn del vehículo en el tráfico. En la mayoría de los servidores de roleplay los vehículos add-on se spawnean por script, así que pueden quedarse con los valores del vehículo original que copiaste.

  • frequency y maxNum: con qué frecuencia y cuántos pueden existir en el tráfico ambiental.
  • swankness: de SWANKNESS_0 a SWANKNESS_5, de destartalado a muy lujoso.
  • identicalModelSpawnDistance y maxNumOfSameColor (10 por defecto): evitan que se agrupen vehículos idénticos.
  • defaultBodyHealth: 1000 por defecto.
  • trailers, drivers, extraIncludes, requiredExtras: listas de los remolques que se pueden enganchar, de modelos de conductor forzados y de extras que aparecen juntos.

¿Qué son residentTxd y txdRelationships?

residentTxd, al principio del archivo, nombra un diccionario de texturas que permanece cargado para los vehículos del archivo. Los archivos originales usan vehshare, las texturas compartidas de vehículos. txdRelationships, al final, es una lista de pares padre e hijo: cuando una textura no se encuentra en el diccionario hijo, el juego la busca en el padre.

Por eso un vehículo cuyo .ytd no trae las texturas comunes las encuentra igual en vehshare. Del mismo modo, varios vehículos pueden compartir un diccionario personalizado: hazlo padre del txdName de cada uno.

Preguntas frecuentes

¿Dónde está vehicles.meta en GTA 5?
El archivo base está en common.rpf, en data/levels/gta5/vehicles.meta, y cada pack de DLC tiene el suyo en common/data/levels/gta5/. En FiveM un vehículo add-on trae su propio vehicles.meta dentro del resource.
¿Cuál es el nombre de spawn de un vehículo add-on?
El nombre de spawn es el campo modelName de vehicles.meta, que también es el nombre del archivo del modelo .yft. gameName es solo la etiqueta que se muestra.
¿Qué longitud puede tener gameName?
El juego guarda gameName y vehicleMakeName en búferes de 12 caracteres, así que cada uno puede tener como máximo 11 caracteres.
¿Pueden dos vehículos compartir una entrada de handling?
Sí. Varias entradas de vehicles.meta pueden usar el mismo handlingId. Se conducirán igual.
¿Cómo cargo vehicles.meta en FiveM?
Declara el archivo en files en fxmanifest.lua y añade data_file 'VEHICLE_METADATA_FILE' con la misma ruta.

Fuentes

Productos de esta guía

Todas las guías