Archivos de modelo del vehículo (yft, _hi.yft, ytd) y el aviso de assets sobredimensionados
Un vehículo de FiveM va en stream como un modelo .yft, un modelo de alto detalle _hi.yft y un diccionario de texturas .ytd. FXServer mide cuánta memoria necesita cada archivo una vez cargado y muestra un aviso por encima de 16 MiB. Por encima de 48 MiB añade que los assets sobredimensionados "can and WILL lead to streaming issues", es decir, que van a causar problemas de streaming. La solución habitual son texturas más pequeñas y comprimidas.
¿Qué son los archivos .yft, _hi.yft y .ytd?
Los tres archivos tienen funciones fijas, y sus nombres deben seguir el nombre de modelo de vehicles.meta.
stream/
mycar.yft model: lower LODs, skeleton, collision
mycar_hi.yft model: high detail version shown up close
mycar.ytd textures (name matches <txdName>)
mycar+hi.ytd optional: high resolution versions of the same textures
| Archivo | Contenido | Cuándo lo usa el juego |
|---|---|---|
<model>.yft | El vehículo como fragment: las mallas de menor detalle, los bones (puertas, ruedas, asientos) y la colisión. | Siempre, mientras el vehículo exista. |
<model>_hi.yft | La malla de alto detalle. | Solo cerca de la cámara, dentro del primer valor de lodDistances de vehicles.meta. |
<txdName>.ytd | Todas las texturas del vehículo. | Siempre. |
<txdName>+hi.ytd | Copias opcionales de las texturas a mayor resolución. | Cerca de la cámara. |
El juego construye él mismo el nombre del modelo de alto detalle añadiendo _hi al nombre del modelo siempre que la primera distancia de LOD es mayor que cero, así que el archivo debe llamarse exactamente así. Las piezas de tuning son archivos de modelo pequeños y separados en la misma carpeta, con los nombres que figuran en carcols.meta.
¿Qué significa el aviso de oversized assets?
Cuando un resource se inicia, FXServer lee la cabecera de cada archivo de stream y calcula cuánta memoria ocupará una vez cargado. Si es demasiada, muestra una línea como esta en la consola del servidor:
Asset mycar/mycar.ytd uses 62.5 MiB of physical memory. Oversized assets can and WILL lead to streaming issues (such as models not loading/rendering).
El número no es el tamaño del archivo en disco. Los archivos de stream están comprimidos, y la cabecera registra el tamaño de los datos descomprimidos en dos partes: memoria virtual (datos de estructura) y memoria física (sobre todo píxeles de texturas y geometría de mallas). Cada parte se comprueba por separado.
| Memoria de un archivo | Línea de la consola |
|---|---|
| 16 MiB o menos | No se muestra nada. |
| Más de 16 MiB | Se muestra en azul. |
| Más de 32 MiB | Se muestra en amarillo. |
| Más de 48 MiB | Se añade la frase "Oversized assets can and WILL lead to streaming issues (such as models not loading/rendering)". |
| Más de 64 MiB | Se muestra en rojo. |
Estos escalones son los del código fuente de FXServer (ResourceStreamComponent.cpp). El aviso tiene que ver con los ordenadores de los jugadores, no con el servidor: cada jugador que esté cerca del vehículo tiene que mantener ese archivo en memoria. Mantén cada archivo en 16 MiB o menos y la consola se queda en silencio.
Para ver ese número de un archivo antes de arrancar el servidor, suéltalo en la calculadora de memoria de texturas YTD. También lista cada textura con la memoria que ocupa.
¿Cuánta memoria usa una textura?
La memoria de una textura depende de la resolución y del formato, no del aspecto de la imagen. Reducir a la mitad el ancho y el alto deja la memoria en una cuarta parte. Los formatos comprimidos guardan 4 u 8 bits por píxel en lugar de 32. Los mipmaps añaden más o menos un tercio.
| Resolución | DXT1 / BC1 (sin alfa) | DXT5 / BC3 (alfa) | 32 bits sin comprimir |
|---|---|---|---|
| 512 x 512 | 0.17 MiB | 0.33 MiB | 1.33 MiB |
| 1024 x 1024 | 0.67 MiB | 1.33 MiB | 5.33 MiB |
| 2048 x 2048 | 2.67 MiB | 5.33 MiB | 21.3 MiB |
| 4096 x 4096 | 10.7 MiB | 21.3 MiB | 85.3 MiB |
Los valores incluyen los mipmaps. Una sola textura de 4096 sin comprimir ya supera todos los escalones del aviso, y una única textura de 4096 en DXT5 pasa de 16 MiB por sí sola. Un .ytd con unas cuantas texturas 4K es el origen más común del aviso.
¿Cómo reduzco un vehículo sobredimensionado?
- Localiza el archivo. La línea de la consola nombra el resource y el archivo. Arregla primero el más grande.
- Reduce las texturas grandes. Las texturas de carrocería e interior a 2048 o 1024 bastan para un vehículo visto a la distancia normal de juego. Las piezas pequeñas, los emblemas y las luces rara vez necesitan más de 512.
- Comprímelas. Usa DXT1 (BC1) para las texturas sin transparencia y DXT5 (BC3) para las que la tienen. Evita los formatos sin comprimir.
- Borra las texturas que no se usan. Los modelos convertidos suelen arrastrar texturas que ningún material utiliza.
- No dupliques las texturas compartidas. Las texturas que usan varios vehículos pueden estar en un único diccionario definido como padre en
txdRelationshipsde vehicles.meta. - Reduce la malla. Si el archivo del aviso es un
.yft, el modelo tiene demasiados polígonos, o el.yftprincipal contiene la malla de detalle completo en lugar de los LOD más bajos. - Reinicia el resource y vuelve a leer la consola. Si no hay ninguna línea, todos los archivos están en 16 MiB o menos.
Los ajustes de LOD, lodDistances y los tamaños de textura según su función están en cómo optimizar un vehículo FiveM.
¿Qué papel tienen los LOD?
El .yft principal está pensado para contener las versiones más ligeras del modelo, y el _hi.yft la detallada. Gracias a esa división, el juego mantiene en memoria solo un modelo ligero para los vehículos que están lejos. Una conversión que pone la misma malla pesada en los dos archivos duplica la memoria y hace que cada vehículo lejano cueste lo mismo que uno cercano.
Los niveles y sus distancias se explican en qué son los LOD en los vehículos de FiveM. En nuestro propio catálogo, el Coil S-Cooter y los tres hoverboards traen cuatro LOD, de High a Very Low.
Preguntas frecuentes
- ¿Qué es el límite de 16 MB de FiveM?
- Es el primer escalón de la comprobación de tamaño de assets de FXServer. Un archivo de stream que necesita más de 16 MiB de memoria física o virtual una vez cargado recibe un aviso en la consola. Es un aviso, no un bloqueo, pero los assets grandes pueden no cargar para los jugadores.
- ¿Por qué mi archivo de 5 MB aparece como 40 MiB?
- El aviso muestra el uso de memoria después de cargar, no el tamaño en disco. Los archivos de stream están comprimidos, así que el tamaño cargado puede ser varias veces el tamaño del archivo.
- ¿Cuál es la diferencia entre .yft y _hi.yft?
- El .yft contiene las mallas de menor detalle, el esqueleto y la colisión, y siempre está cargado. El _hi.yft contiene la malla de alto detalle y solo se carga cuando el vehículo está cerca de la cámara.
- ¿Qué tamaño de textura debería usar un vehículo de FiveM?
- Texturas comprimidas de 2048 o 1024 para las superficies principales y de 512 o menos para los detalles mantienen la mayoría de los vehículos por debajo de 16 MiB. Una sola textura de 4096 en DXT5 ya usa unos 21 MiB con mipmaps.
- ¿El aviso significa que mi servidor tiene lag?
- No. La comprobación tiene que ver con la memoria en el lado de los jugadores. El riesgo son modelos o texturas que cargan tarde o no cargan, sobre todo cuando hay muchos vehículos pesados en un mismo sitio.
Fuentes
- FXServer source: asset size check (ResourceStreamComponent.cpp)
- Sollumz, Blender add-on for GTA V assets
Productos de esta guía
- Coil S-Cooter: Patinete Eléctrico FiveM
- Airglider: Hoverboard FiveM
- Girlboard: Hoverboard FiveM
- Neonboard: Hoverboard FiveM
Todas las guías
- Cómo instalar un resource FiveM de Cfx.re Escrow (Granted Assets)
- Cómo añadir un vehículo custom a un servidor ESX, QBCore o QBox
- ¿Qué son los LODs en los vehículos de FiveM?
- Cómo añadir un vehículo add-on a un servidor FiveM
- vehicles.meta explicado, campo por campo
- handling.meta explicado: campos, unidades y flags
- carvariations.meta y carcols.meta explicados
- vehiclelayouts.meta explicado: asientos, puntos de entrada y animaciones
- Referencia de data_file de fxmanifest para vehículos
- Solución de problemas de vehículos add-on en FiveM: causas y soluciones
- Cómo arreglar "You lack the required entitlement" en un servidor FiveM
- Cómo convertir un mod de coche de un jugador de GTA 5 en un add-on de FiveM
- Cómo funciona un hoverboard de FiveM sin script
- Cómo hacer un vehículo de FiveM en Blender con Sollumz 2.9
- Cómo optimizar un vehículo de FiveM: polígonos, LOD y presupuesto de texturas
- Cómo configurar la colisión de un vehículo en Sollumz
- Comprar vehículos FiveM: qué revisar antes de pagar
- Packs de coches FiveM vs vehículos sueltos
- Coches de marcas reales en FiveM: ¿se permiten?
- CodeWalker vs Sollumz: ¿qué herramienta usar para vehículos de FiveM?
