Textur-Editor
Öffne einen CodeWalker .ytd XML-Export mit seinen DDS-Dateien, sieh dir jede Textur und jeden Kanal an, ersetz sie durch PNG oder JPG, skalier auf Zweierpotenzen, wähl die Kompression (DXT1, DXT5, BC7 wo möglich) und exportier die neuen DDS-Dateien plus das .ytd XML, fertig zum Import.
Dieses Tool und seine Hinweise sind vorerst auf Englisch.
Open a .ytd
- Drop the
.ytdfrom your resource'sstreamfolder on the editor, or use Choose files. You can drop several dictionaries (or a whole folder) at once and switch between them. - Replace, rename, add or delete textures.
- Export .ytd saves a new dictionary with the same name. Put it back in
stream/and restart the resource.
Texture settings the editor does not touch (usage flags, extra flags) are kept as they were. Game files inside an .rpf have to be extracted first (CodeWalker or OpenIV); a .ytd that is still encrypted is rejected with a message.
Or use the CodeWalker XML export
- In CodeWalker's RPF Explorer, right click the
.ytdand pick Export XML. You getname.ytd.xmlplus a foldername/with one DDS per texture. - Drop the XML and the folder on the editor together (or pick the parent folder with Choose folder).
- XML + DDS zip gives the same layout back for CodeWalker's Import XML.
Everything stays in your browser. Nothing is uploaded. Vehicles usually have two dictionaries:name.ytd and name+hi.ytd (the close up versions). Clothing has one .ytd per drawable variation, likejbib_diff_000_a_uni.ytd.
Replacing a texture
- Drop a PNG, JPG, WebP or DDS on a tile or on the big preview, or use Replace image.
- Size "Same" keeps the size of the texture you replace, so UVs and the rest of the dictionary stay as they were. The result is always a power of two, capped by Max size. Fit decides what happens when the aspect ratio differs: stretch, pad with transparency, or crop.
- Format "Keep" reuses the format of the old texture. A DDS you drop is used as is, without re-encoding.
- The preview shows the compressed result, so what you see is what the game gets. Check alpha with the RGBA and A buttons.
- Revert brings back the file you opened. Deleting a texture can be undone until the next delete.
Which format to pick
| Format | Memory | Use it for |
|---|---|---|
DXT1 | 0.5 byte / px | Most diffuse, spec and normal maps without alpha. Cutout alpha (fences, leaves) works too, it is on or off. |
DXT5 | 1 byte / px | Soft alpha: glass, decals, hair, fades. Cleaner normal maps at twice the cost. |
ATI2 (BC5) | 1 byte / px | Two channel data. Stores only X and Y of a normal, test in game before you ship it. |
ATI1 (BC4) | 0.5 byte / px | One channel masks. |
A8R8G8B8 | 4 bytes / px | Only when compression artifacts are not acceptable, like small UI or script render targets. |
BC7 textures are shown and written back untouched. This tool does not encode BC7; re-encoding one turns it into one of the formats above.
Build missing mips adds a mip chain to a texture that has none and leaves the full size level as it was.
Put it back into the game
- Export .ytd and copy the file into your resource's
streamfolder with the exact same name as the one you replace. - Restart the resource (or the server). Clients download the new file on join.
- Going through CodeWalker instead: extract the XML + DDS zip, then Import XML in the RPF Explorer and pick the
.ytd.xml.
my_car/
fxmanifest.lua
stream/
mycar.yft
mycar.ytd <- the rebuilt dictionary
mycar+hi.ytdFiveM streams everything in stream/ automatically, no files or data_file entry is needed for a.ytd. For clothing, keep the file names your addon pack uses.
Texture memory and server warnings
The memory column is the GPU size of the texture with its mips, the same number the game streams. A .ytd file on disk is smaller because resources are compressed, but in memory it is the full size. FXServer prints a memory warning for every streamed file above 16 MiB of physical memory and calls it oversized above 48 MiB, and players on weaker PCs get textures that pop in late or stay blurry. The usual fixes, biggest win first:
- Drop 4096 textures to 2048 and 2048 ones to 1024 where nobody looks closely. Each step cuts the memory by 4.
- Use DXT1 instead of DXT5 when the alpha is fully opaque (the editor tells you when that is the case). Half the memory.
- Never ship A8R8G8B8 for normal textures, it is 8x DXT1.
- Keep full mip chains. Without mips the game always keeps the biggest level loaded and the texture shimmers at distance.
- Split a huge dictionary: shared textures in one
.ytd, or move close up detail into the+hidictionary for vehicles.
Weitere Tools: config & code
server.cfg-Generator
Bau eine komplette, funktionierende server.cfg mit Hostname, Slots, OneSync, Endpoints, Tags, Resources und ACE-Permissions.
fxmanifest.lua-Generator
Erstell ein gültiges Resource-Manifest: fx_version, Scripts, NUI-Seite, Files, lua54 und Dependencies.
Fahrzeug-Handling-Editor
Stell Masse, Antriebskraft, Grip und Federung über eine UI ein und exportier dann handling.meta oder Runtime-Lua.
