9. Tooling
| Tool | Use |
|---|---|
| CodeWalker | The workhorse and the de facto spec. World editor, RPF explorer, ymap/ytyp/ybn/ynv editing, XML import/export, manifest gen, flag/extent auto-calc, Gen8→Gen9 conversion |
| OpenIV | RPF browse/edit, mods folder, ASI manager, OIV packages. Legacy only |
| OpenRPF | The OpenIV.asi replacement for Enhanced/Gen9. v0.3 supports builds 1013.17+ |
| OIV Package Installer | CodeWalker-core-based OIV installer; supports Legacy and Enhanced, validates version |
| Sollumz (Blender) | Import/export ydr/ydd/yft/ybn/ymap/ytyp in Blender. Current best modelling pipeline |
| GIMS Evo (3ds Max) | Legacy Max pipeline. Effectively unmaintained |
| Menyoo | In-game object spawner; exports .xml maps convertible to ymap |
| Map Builder | Prop library for Menyoo/ymap workflows |
| Meta Toolkit / meta2xml | PSO ↔ XML for .ymt/.meta |
| YTYP Generator / YTYP-Creator | Quick archetype stubs from ODR/OBN |
| Lenny's Mod Loader (LML) | Non-destructive install layer, install.xml |
| CodeWalker.Core.dll | Library for your own C# tooling. ✅ Build from master source (the dev48 gen9 binary throws "unsupported compression method" on OPEN archives). ⚠ GetFileData() returns headerless decompressed resource data. Repacking it via CreateFile makes a binary entry that crashes the game; export with ResourceBuilder.Compress + AddResourceHeader. See §15 |
Typical workflow for a new prop:
1. Model in Blender + Sollumz → export .ydr (+ .ybn if standalone collision)
2. Textures → .ytd
3. Sollumz auto-creates the .ytyp archetype, or build it in CodeWalker
4. Pack into dlc.rpf per §4
5. CodeWalker project → place in ymap → auto-calc flags/extents → generate manifest
6. Wire content.xml / setup2.xml / dlclist.xml
7. Test, then bump gameconfig pools if it crashes
8. On Enhanced: convert to Gen9 in CodeWalker and use OpenRPF, not OpenIV.asi
10. FiveM / RageMP / alt:V
This section is about content a server streams to everyone. For content you install on your own client that nobody else sees — the FiveM equivalent of RAGEMP's dlcpacks folder — see Part 9: FiveM client-side mods.
FiveM
Forget dlc.rpf. Use a resource with fxmanifest.lua:
fx_version 'cerulean'
game 'gta5'
files {
'stream/my_props.ytyp',
}
data_file 'DLC_ITYP_REQUEST' 'stream/my_props.ytyp'
-- for a map
this_is_a_map 'yes'
- Any file in a
stream/folder is auto-streamed by name hash. No content.xml. .ymapfiles instream/load automatically ifthis_is_a_map 'yes'is set.- ytyps still need an explicit
data_file 'DLC_ITYP_REQUEST'. Thefiles{}entry is redundant for something already instream/, but harmless and near-universal in the wild. - Meta overrides:
data_file 'HANDLING_FILE' 'data/handling.meta', same fileType enum as §4. - Interiors: MLO ytyp + placement ymap, both in
stream/. - Deleting base-game props: a ymap with
<flags value="0"/>and CodeWalker's "delete entity" (writes a removal ymap), orRemoveIpl/interiorProxyscripting. - FiveM patches some malformed CMapData at load and traces warnings to console. Read your server console.
- FiveM runs RPF7 (per VIRUXE/rpf-rs's version table, RPF7 is "GTA V / FiveM").
RageMP
- Client-side
client_packages+dlcpacksin the RAGEMP folder, or CEF for UI. - Custom map data:
client_packages/game_resources/dlcpacks/<name>/dlc.rpf, same structure as SP. - Registration via RAGEMP's own dlclist handling; no need to touch update.rpf.
alt:V
resource.cfgwithclient-typeand astreamfolder; similar to FiveM in spirit.- alt:V's unofficial docs mirror Dekurwinator's ytyp flag research, though the mirror is less complete than the original.
11. Common failure modes
| Symptom | Likely cause |
|---|---|
| Props invisible / pop in and out | streamingExtents too small |
| Props load but no collision | wrong physicsDictionary in ytyp, or ybn not in physicsDictionaries list, or entity flag 4 (DONT_INSTANCE_COLLISION) set |
| Object untextured / white | ytd not loaded, textureDictionary name mismatch |
| Object glows at night | FLAG_USE_AMBIENT_SCALE (536870912) not set on the archetype |
| Door does nothing | specialAttribute set but FLAG_DOOR_PHYSICS (67108864) missing |
| Two gates open together | duplicate archetype name: both entities resolve to the same archetype |
| Crash on SP load | ymap/ytyp in _metadata.rpf when it needs to be in the main rpf; or DLC_ITYP_REQUEST missing. Confirmed in RAGE: it is a real CDataFileMgr type with its own mounter, registered eDFMI_UnloadLast, and the loader only verifies the file exists — which is why a missing one takes the load down rather than degrading |
| Crash after adding Nth mod | gameconfig pool exhaustion. Confirmed: RAGE ties per-subsystem limits to common:/data/gameconfig.xml and names the file when one is hit ("Streaming module %s exceeded its hard limit of %d elements - please update gameconfig.xml", and the same for ArchiveCount, instancing pools and ScaleformMgrArray). Every one of those is an Assertf, which compiles out of the shipped build — so the retail game overruns the limit and keeps going. That is why the symptom is an unexplained crash at the Nth mod instead of a message naming the pool |
| Crash on Enhanced with working Legacy mod | Gen8 files on Gen9. Convert in CodeWalker |
ERR_FIL_PACK_3 |
Not the 4 GB ceiling — nothing range-checks the offset, so an over-size archive mounts and reads wrong rather than raising a packfile error. Expect ERR_SYS_INVALIDRESOURCE_5 or ERR_GEN_ZLIB_2 for that. The RAGE packfile codes are ERR_STR_PACK_1/2, both missing-file. What ERR_FIL_PACK_3 itself means is undocumented and the code string is not in the binary |
ERR_GEN_ZLIB_2 |
Decompression failure. Confirmed: RAGE raises it from zlibInflater::InflateBegin whenever inflate() returns a negative code. Generic to any stream the engine inflates, but on a modded install that is almost always an RPF entry. Retail builds blank the filename from the message, hence the bare code |
| Archetype not found | ytyp not in a changeset's filesToEnable, or disabled without changeset |
| Interior invisible from outside | portal to room 0 (limbo) missing, or exteriorVisibiltyDepth wrong |
| Interior geometry z-fighting through walls | portal corners not planar / wrong winding |
| MLO doesn't load | contentFlags missing bit 3 (value 8) |
| LOD chain broken after edit | parentIndex values shifted; numChildren stale; or entity flag 8 doesn't match where the parent actually lives |
| Rotation is mirrored | quaternion not conjugated on hand-edit |
Pack mounts, CTD ERR_SYS_INVALIDRESOURCE_5 on approach |
✅ a .y* stored as a binary entry: RSC7 header lost at import (e.g. CodeWalker GetFileData() output repacked as-is). CodeWalker still parses it; the game does not. Check entry types + RSC7 magic/version (ydr 165, ytyp/ymap 2) |
| Pack mounts, no CTD, props never appear | ✅ models+ytyp inside the CONTENTS_DLC_MAP_DATA rpf (split them out); or props-pack loader (GROUP_STARTUP, no $level streaming changeset) used for a map DLC |
| CTD at startup after config edits | ✅ DLC_ITYP_REQUEST device-root path with .ytyp extension; or the same rpf enabled in two changesets (STARTUP + mapChangeSetData) |
12. Quick reference: paths
# SP registration
mods/update/update.rpf/common/data/dlclist.xml
mods/update/update.rpf/common/data/extratitleupdatedata.meta
mods/update/update.rpf/common/data/gameconfig.xml
mods/update/update.rpf/common/data/levels/gta5/vehicles.meta
mods/update/update.rpf/common/data/handling.meta
mods/update/update.rpf/common/data/materials/materials.dat
mods/update/update.rpf/x64/data/cdimages/scaleform_generic.rpf
# DLC mount
mods/update/x64/dlcpacks/<name>/dlc.rpf
# Base map data
x64a.rpf … x64w.rpf → levels/gta5/_citye/… (ymaps, ytyps, models)
# Enhanced (Gen9)
<GTA V Enhanced>/OpenRPF.asi
<GTA V Enhanced>/mods/update/...