Assets & UI
Streaming custom assets in FiveM without wrecking performance
How FiveM streaming works: stream folders, add-on vehicles, MLOs, texture budgets, pool sizes and how to find the asset crashing your players on join.
How FiveM streaming works
Any file placed in a resource's `stream` folder is registered with the game's asset system and can override or extend GTA V's own content. The game does not care which resource a file came from — it builds one flat namespace keyed by asset name. That single fact explains most streaming bugs.
| Extension | What it is | Typical use |
|---|---|---|
| ydr | Drawable — a single model | Props, static objects |
| ydd | Drawable dictionary | Clothing, ped components |
| yft | Fragment — a breakable/articulated model | Vehicles, destructible props |
| ytd | Texture dictionary | Textures for any of the above |
| ymap | Map placement | Where objects sit in the world |
| ytyp | Type definitions / interiors | MLO archetypes and room data |
| ycd | Clip dictionary | Animations |
| ynv / yn* | Navmesh and pathing | AI navigation inside custom interiors |
fx_version 'cerulean'
game 'gta5'
-- everything under stream/ is picked up recursively
files { 'data/vehicles.meta', 'data/carvariations.meta' }
data_file 'VEHICLE_METADATA_FILE' 'data/vehicles.meta'
data_file 'VEHICLE_VARIATION_FILE' 'data/carvariations.meta'
data_file 'HANDLING_FILE' 'data/handling.meta'Name conflicts — the bug that looks like magic
Because asset names are global, two resources shipping a prop called `prop_bench_01b` will fight. Whichever loads last wins, and the other MLO now has a bench from a different building — or no bench at all. Symptoms are geometry that flickers, textures that are wrong in one interior only, or props that vanish after a restart because load order changed.
find resources -path '*/stream/*' -type f -printf '%f\n' \
| sort | uniq -d- Any name in that output is a conflict you have right now.
- Fix it by renaming inside the resource that is least referenced elsewhere — and update its ymap/ytyp accordingly.
- Prefix your own custom assets with something unique to your server so you never collide with a purchased pack.
Add-on vehicles done properly
Add-on cars are the most common streamed content and the most common source of client memory problems. Each one carries a model, a texture dictionary and metadata, and it occupies memory whether or not anybody drives it.
- Put the yft and ytd files in stream/, and the vehicles.meta, carvariations.meta and handling.meta in a data/ folder declared with data_file.
- Make sure the spawn name is unique across every vehicle pack you run. Duplicate spawn names silently break carvariations.
- Check the texture sizes. A 4096×4096 dictionary for one car is common in free packs and completely unnecessary — 2048 is plenty, 1024 for detail maps.
- Verify handling.meta exists and is referenced. A missing handling entry produces a car that drives like a brick and reports no errors.
- Test with an empty server first. If a vehicle crashes you alone, it will crash everyone.
MLOs and interiors
An MLO replaces or adds an interior. Beyond the geometry, it brings ytyp archetypes, ymap placements, interior room definitions and often a navmesh. Installing one is more than dropping a folder in.
- If the MLO replaces a vanilla interior, it usually needs an IPL disabled or enabled from a client script. The readme will say so; people skip it and then report "the old walls are still there".
- Occlusion matters. A large interior without proper occlusion tanks frame rate because the engine draws the whole thing from outside.
- Check the collision. Free MLOs frequently ship broken collision on one floor, which players find within an hour.
- Navmesh affects NPCs and, in some frameworks, pathing for jobs. A missing ynv means peds walk through walls.
CreateThread(function()
-- remove the vanilla shell
RemoveIpl('post_hw1_10_producers')
-- and load the replacement
RequestIpl('my_custom_interior')
end)Pool sizes, crashes and sv_poolSizesIncrease
GTA V allocates fixed-size pools for objects, entities, vehicles and more. Heavy custom content exhausts them, and the client crashes with a pool-related message. FiveM lets you raise specific pools — but raising everything "to be safe" costs memory and can itself cause instability.
// in your resource's fxmanifest, or via a dedicated resource
{
"sv_poolSizesIncrease": {
"TxdStore": 50000,
"Object": 2000
}
}- Reproduce the crash and read the exact pool name from the client log or crash dialog.
- Raise that one pool by a modest amount.
- Test again. If it moves to a different pool, you are treating a symptom — you probably have too much content.
- If crashes persist, bisect your streamed resources the same way you would bisect a performance problem.
sv_enforceGameBuild and why assets suddenly break
GTA V ships in versioned builds, and DLC content is only available on the build that introduced it. `sv_enforceGameBuild` pins which one your server runs. Change it and assets built for another build stop resolving — textures go white, vehicles fail to spawn, clothing components disappear.
- Pick the build your content requires, write it down, and treat it as part of your server's identity.
- When buying an MLO or a vehicle pack, check which build it targets before you install it.
- Changing the build is a planned migration, not a config tweak. Test on a copy of the server first.
A sensible content budget
| Category | Comfortable | Getting risky |
|---|---|---|
| Total stream folder size | Under 3 GB | Above 8 GB |
| Add-on vehicles | 40 – 80 | 200+ |
| Custom MLOs | 10 – 25 | 50+ |
| Clothing packs | Compressed, deduplicated | Multiple overlapping packs |
| Largest single texture | 2048×2048 | 4096×4096 on small props |
The numbers are guidance, not law — a server with 6 GB of well-optimised content can behave better than one with 2 GB of badly compressed textures. What matters is that somebody is watching the total and the per-asset quality, rather than adding whatever looks nice this week.
Frequently asked questions
Why do players crash when joining my FiveM server?
Usually a streamed asset. A corrupted or oversized texture dictionary, a vehicle built for a different game build, or an exhausted object pool during the initial load are the three most common causes. Bisect your streamed resources to find it.
Do streamed assets slow down my FiveM server?
They do not cost server milliseconds. They cost client memory, client load time and download time on join. A server with 10 GB of assets has a slow first-join experience and unhappy players on low-memory machines, but its server tick is unaffected.
What does sv_poolSizesIncrease do?
It raises GTA V's fixed allocation pools so heavy custom content does not exhaust them. Raise only the specific pool named in the crash message, by a modest amount — raising everything wastes memory and can cause its own instability.
Why are my MLO textures missing or flickering?
Almost always a name conflict: two resources ship an asset with the same name and load order decides which wins. Scan your stream folders for duplicate filenames and rename the collisions.
Need this built, not just explained?
Ten years of FiveM work, from Lua to NUI
Custom resources, React NUI, ESX / QBCore / Qbox integration, OneSync performance audits and security reviews — plus the websites and SEO around your server brand.
Related guides
- EngineeringFiveM server optimizationRead resmon properly, kill per-frame loops, tune OneSync and entity limits, and find the database query that is freezing your server.
- Getting startedHow to make a FiveM serverFrom an empty VPS to a public GTA V roleplay server: artifacts, licence key, server.cfg, framework, database, OneSync and the launch checklist.
- Assets & UICustom FiveM minimapHow minimap tiles and the LOD map work, installing a custom map, postal codes, and fixing blurry or missing tiles.